让我先说明它已经从security.stackexchange迁移到stackoverflow。另外,我理解堆栈成员可能有的任何问题;寻求安全敏感知识对任何参与者来说都是一把双刃剑。我个人认为,公开谈论漏洞和漏洞非常重要,因为它为社区提供了解决问题的机会。
我的目标:
问题:
问题:
背景
我的小组将在接下来的几个月内进行笔测试,我们已经发现了一个客户缺陷。客户使用的特定软件套件每次更新时都需要完全重新安装。这种重新安装需要权限提升,我们已经证明使用自定义编码特洛伊木马的受污染媒体可能会导致其设备/网络受到攻击。
客户可以采用多种解决方案来确保其应用程序安装程序未被篡改。
修改:显示executing wrapped binary解决了如何在汇编语言中执行此操作的问题,而不是更高级别的语言。仍然可能是一个有用的教训...
答案 0 :(得分:3)
好的应用程序......(首先编译此应用程序)
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