让木马代码执行包装的二进制文件
Have trojan code execute wrapped binary
让我先声明它已从 security.stackexchange 迁移到 Whosebug 上的此处。此外,我理解堆栈成员可能有的任何顾虑;寻找安全敏感知识对任何相关人员来说都是一把潜在的双刃剑。我个人认为,公开谈论漏洞和漏洞利用非常重要,因为它为社区提供了解决问题的机会。
我的目标:
- 让自定义编码的恶意 C# 应用程序在执行其任务后执行其包装的合法应用程序。
- 我们的目标系统具有支持代码的所有必要框架。
问题:
- 包装器离散地执行两个包装的二进制文件,彼此独立。
- 我需要恶意文件在请求提升权限后触发合法文件。
- 这将模拟合法文件通常在安装时执行的单一权限提升请求。
问题:
- 有没有一种方法可以对 C# 应用程序进行编码,使其可以执行 "wrapped" 所用的二进制文件?
- 我不完全理解打包的二进制文件发生了什么,可能问这个问题不正确。
背景:
我的团队将在接下来的几个月内进行渗透测试,我们已经发现了一个客户漏洞。客户使用的特定软件套件在每次更新时都需要完全重新安装。此重新安装需要权限升级,我们已经证明带有自定义编码特洛伊木马的受污染媒体可能会导致其设备/网络受到损害。
客户可以采用多种解决方案来确保他们的应用程序安装程序未被篡改。
编辑: 似乎 executing wrapped binary 解决了如何在汇编中执行此操作,而不是高级语言。仍然可能是一个有用的教训...
好应用...(先编译这个应用)
using System;
namespace App
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
BadApp...(将上述应用程序作为嵌入式资源包括在内)
using System;
using System.IO;
using System.Reflection;
namespace BadApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("do bad");
Assembly good = null;
var ea = Assembly.GetExecutingAssembly();
using (var rs = ea.GetManifestResourceStream(ea.GetManifestResourceNames()[0]))
using (var ms = new MemoryStream())
{
rs.CopyTo(ms);
good = Assembly.Load(ms.ToArray());
}
var ep = good.EntryPoint;
ep.Invoke(null, new [] {args});
Console.WriteLine("ha ha too late");
}
}
}
... 运行 BadApp
的输出
do bad
Hello World!
ha ha too late
让我先声明它已从 security.stackexchange 迁移到 Whosebug 上的此处。此外,我理解堆栈成员可能有的任何顾虑;寻找安全敏感知识对任何相关人员来说都是一把潜在的双刃剑。我个人认为,公开谈论漏洞和漏洞利用非常重要,因为它为社区提供了解决问题的机会。
我的目标:
- 让自定义编码的恶意 C# 应用程序在执行其任务后执行其包装的合法应用程序。
- 我们的目标系统具有支持代码的所有必要框架。
问题:
- 包装器离散地执行两个包装的二进制文件,彼此独立。
- 我需要恶意文件在请求提升权限后触发合法文件。
- 这将模拟合法文件通常在安装时执行的单一权限提升请求。
问题:
- 有没有一种方法可以对 C# 应用程序进行编码,使其可以执行 "wrapped" 所用的二进制文件?
- 我不完全理解打包的二进制文件发生了什么,可能问这个问题不正确。
背景:
我的团队将在接下来的几个月内进行渗透测试,我们已经发现了一个客户漏洞。客户使用的特定软件套件在每次更新时都需要完全重新安装。此重新安装需要权限升级,我们已经证明带有自定义编码特洛伊木马的受污染媒体可能会导致其设备/网络受到损害。
客户可以采用多种解决方案来确保他们的应用程序安装程序未被篡改。
编辑: 似乎 executing wrapped binary 解决了如何在汇编中执行此操作,而不是高级语言。仍然可能是一个有用的教训...
好应用...(先编译这个应用)
using System;
namespace App
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
BadApp...(将上述应用程序作为嵌入式资源包括在内)
using System;
using System.IO;
using System.Reflection;
namespace BadApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("do bad");
Assembly good = null;
var ea = Assembly.GetExecutingAssembly();
using (var rs = ea.GetManifestResourceStream(ea.GetManifestResourceNames()[0]))
using (var ms = new MemoryStream())
{
rs.CopyTo(ms);
good = Assembly.Load(ms.ToArray());
}
var ep = good.EntryPoint;
ep.Invoke(null, new [] {args});
Console.WriteLine("ha ha too late");
}
}
}
... 运行 BadApp
的输出do bad
Hello World!
ha ha too late