2016-02-18 28 views
1

让我先说这个,说它已经从security.stackexchange迁移到这里在stackoverflow。此外,我明白堆栈成员可能有任何疑虑;寻找安全敏感的知识对任何参与者来说都是一把双刃剑。我个人认为,公开说出漏洞和漏洞是非常重要的,因为它向社区提供了解决这个问题的机会。有木马代码执行包装二进制

我的目标:

  • 有一个自定义编码,恶意C#应用程序执行的合法的应用程序它是包裹着完成其任务后。
    • 我们的目标系统具有支持代码的所有必要框架。

问题:

  • 包装器离散地独立地执行彼此的两个包裹二进制文件。
    • 我需要恶意文件在请求提升权限后触发合法文件。
    • 这将模拟合法文件在安装时正常执行的单个权限提升请求。

问:

  • 有没有一种方式,一个C#应用程序可以被编码,使得它可以执行一个二进制文件被“包装”用?
    • 我不完全理解包装的二进制文件发生了什么,可能会错误地提出这个问题。

背景:

我的小组将进行在未来几个月的渗透测试,我们已经确定了客户的缺陷。客户使用的特定软件套件每次更新时都需要全面重新安装。这种重新安装需要特权升级,而且我们已经证明带有自定义编码特洛伊木马的受感染媒体可能会导致其设备/网络受到损害。

客户可以使用多种解决方案来确保其应用程序安装程序未被篡改。

编辑:看起来executing wrapped binary解决了如何在汇编中做到这一点,而不是更高级的语言。仍然可能是一个有益的教训...

+2

这看起来像一个纯C#的问题,而不是一个安全问题 - 答案将是基于代码的。这在SO上被问得更好。答案不受你想用于笔试的事实的影响。 – schroeder

+0

@schroeder如果一个管理员会这么好心地移动它,我会非常感激。 – Shrout1

+0

是的,这是可能的..不,我不会告诉你如何。如果他们希望他们的程序集受到保护,他们应该使用代码签名https://msdn.microsoft.com/en-us/library/ms537361(v=vs.85).aspx –

回答

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 
+0

好的n00b问题在这里(我一直是一个系统管理员,而不是一个开发人员太长时间了!)我得到'good = Assembly.Load(ms.ToArray())'这一行的错误“Bad IL Format”错误。我已经为app.exe设置了“嵌入式资源”的构建,但我不太确定我做错了什么。对不起,继续拖着你这个折磨的路径:D我感谢帮助 – Shrout1

+0

你的app.exe运行?你是否包含app.exe作为资源或者像app.exe.config一样偶然地选择其他东西? –

+0

它确实运行!但让我仔细检查。我创建了一个资源文件,将app.exe移动到项目文件夹(bin的上一级),然后链接到app.exe。在解决方案资源管理器中选择它并将构建操作设置为“Embedded Resource”。可能错过了一个步骤... – Shrout1