@MSBuild安全分析

MSBuild特征之一是需要配置文件 , 攻击者可以使用一个特殊的XML标记 , 指定一个内联任务 , 详细信息点我 , 其中包含将由MSBuild编译并加载到内存中的源代码 。
@MSBuild安全分析
文章图片

文章图片

MSBuild配置文件中的内联任务的定义 。
根据任务的属性 , 开发人员可以指定在构建项目时自动执行的类 , 方法或代码片段 。也可以将源代码指定为驱动器上的外部文件 。
在研究过程中 , 我们从各种来源收集了100多个恶意MSBuild配置文件 , 我们分析了其交付方法并调查了最终的payload , 这些payload通常以Shellcode的形式交付 。
SHELLCODE总结分析 METASPLOIT
收集的大多数样本都包含由Metasploit生成的shellcode变体 , 嵌入C#代码中 。一般通过使用zlib或GZip压缩字节数组 , 然后将其转换为base64编码的可打印文本 , 来混淆shellcode 。
@MSBuild安全分析
文章图片

文章图片

MSBuild配置文件中的Meterpreter stager shellcode示例 。
可能最方便的shellcode分析工具是shellcode调试器:scdbg 。Scdbg有许多调试Shellcode的选项 。由于Scdbg基于开放源代码x86仿真库libemu , 因此它仅仿真Windows环境 , 而不会运行每个shellcode 。
当然 , 要分析shellcode , 我们需要将其从C#的格式转换回二进制格式 。我们将使用xxd工具来实现这一点 , 记下来 , 要考的
xxd有有一个神奇的模式 , 输入选项-r和-p一起可以将C#数组字节转换回二进制文件 。
xxd -r -p input_text_shellcode_file output_binary_shellcode_file
xxd支持几种常见的转储格式 , 但也不是每次都正确 。重要的是要检查二进制字节和shellcode文本文件中指定的字节是否相同 。
@MSBuild安全分析
文章图片

文章图片

COVENANT
Covenant是一个相对较新的基于C#的C2框架 , 它还允许红队成员自行编写payload , 但必须是.NET程序集 , 可以由框架代码加载和执行 。Covenant框架有其自己becon , 称为Grunts 。Grunts提供了与C2服务器建立通信的基础结构 。
@MSBuild安全分析
文章图片

文章图片

NPS
NPS是一个简单的包装可执行程序实用程序 , 创建该实用程序是为了将System.Management.Automation和其他几个.NET程序集加载到可执行程序的处理空间中 。其背后的想法是试图逃避对powershell.exe执行的检测 , 并仍然运行自定义PowerShell代码 。该工具允许参与者使用不同的机制(包括MSBuild配置工具)来创建非PowerShell payload 。该工具使用用户提供的Meterpreter阶段程序shellcode payload或自定义Powershell代码payload生成MSBuild项目文件 。
@MSBuild安全分析
文章图片

文章图片

COBALT STRIKE
尽管到目前为止 , Metasploit shellcode是最常见的 , 但我们也看到了一些使用Cobalt Strike作为payload的示例 。他的shellcode具有类似于PE文件的结构 , 但是它被设计为手动加载到内存中 , 并通过调用从blob开头的shellcode loader来执行 。
@MSBuild安全分析


推荐阅读