ATT&CK-CN V1.01 Last Update: 2019-11 [返回索引页]

译者: 林妙倩(清华大学网络研究院网络空间安全实习生)、戴亦仑(赛宁网安) 原创翻译作品,如果需要转载请取得翻译作者同意。

数据来源:ATT&CK Matrices

原文: https://attack.mitre.org/techniques/T1127

术语表: /attack/glossary

受信任的开发人员工具

有许多用于软件开发相关工作的实用程序可以用来以多种形式执行代码,以帮助开发、调试和逆向工程。 这些实用程序通常具有合法证书的签名,这些证书使它们可以在系统上执行,并通过可以有效地绕过应用程序白名单防御解决方案的可信进程来代理执行恶意代码。

MSBuild

MSBuild.exe (Microsoft Build Engine) 是 Visual Studio 使用的软件构建平台。 它使用 XML 格式的项目文件,这些文件定义了构建各种平台和配置的需求。

攻击者可以使用 MSBuild 通过受信的 Windows 实用程序代理代码的执行。 .NET 版本 4 中引入的 MSBuild 的内联任务功能允许将 c#代码插入到 XML 项目文件中。 内联任务 MSBuild 将编译并执行内联任务。 MSBuild.exe 是由 Microsoft 签名的二进制文件,因此当以这种方式使用它时,可以执行任意代码并绕过配置为允许 MSBuild.exe 的应用程序白名单防御。

DNX

.NET 执行环境 (DNX), DNX.exe 是随 Visual Studio Enterprise 打包的软件开发工具包。 它在 2016 年被淘汰,取而代之的是。NET Core CLI 。 DNX 不存在于 Windows 的标准版本中,并且可能只存在于使用旧版。NET Core 和 ASP.NET Core 1.0 的开发人员工作站上。 可执行文件 dnx.exe 由 Microsoft 签名。 攻击者可以使用 DNX. exe 代理执行任意代码,以绕过允许 DNX 执行的应用程序白名单策略。

RCSI Rcsi.exe 实用程序是用于 c#的非交互式命令行接口,类似于 csi.exe。 Roslyn.net 编译器平台的早期版本提供 Rcsi.exe,但是在集成解决方案中弃用了。 rcsi.exe 由 Microsoft 签名。

在命令行上使用 rcsi.exe 编写和执行 c# .csx 脚本文件。 攻击者可以使用 rcsi.exe 来代理执行任意代码,从而绕过允许 rcsi.exe 执行的应用程序白名单策略。

WinDbg /CDB

WinDbg 是一个 Microsoft Windows 内核和用户模式调试工具。Microsoft Console Debugger (CDB) cdb.exe 也是用户模式调试器。 这两个实用程序都在 Windows 软件开发工具包中,可以作为独立的工具使用。它们通常用于软件开发和逆向工程,在典型的 Windows 系统中可能找不到。 WinDbg.exe 和 cdb.exe 都是由 Microsoft 签名的。攻击者可以使用 WinDbg.exe 和 cdb.exe 来代理任意代码的执行,从而绕过允许这些实用程序执行的应用程序白名单策略。

其他调试器也可以用于类似的目的,比如内核模式调试器 kd.exe,它也由 Microsoft 签名。

Tracker

文件跟踪器 tracker.exe,作为 MSBuild 的一部分包含在。NET 框架中。它用于记录对 Windows 文件系统的调用。

攻击者可以利用 tracker.exe 将任意 DLL 的执行代理到其他进程中。 tracker.exe 也具有签名,因此可以使用它来绕过应用程序白名单解决方案。

缓解

在给定的环境中可能不需要 MSBuild.exe, dnx.exe, rcsi.exe, WinDbg.exe, cdb.exe, 以及 tracker.exe,如果不使用,应该删除它们。 如果给定的系统或网络不需要,配置应用程序白名单来拦截 MSBuild.exe,dnx.exe,rcsi.exe,WinDbg.exe 和 cdb.exe 的执行,以防止攻击者潜在滥用。

检测

这些或其他启用代理执行的实用程序通常用于系统上的开发、调试和逆向工程,如果没有用于这些目的,则可能是可疑的。 使用进程监视来监视 MSBuild.exe,dnx.exe,rcsi.exe,WinDbg.exe,cdb.exe 和 tracker.exe 的执行和参数。 将这些二进制文件的最近调用与之前已知良好参数的调用和已执行的二进制文件进行比较,以确定异常和潜在的攻击活动。 软件开发人员一般会在其他与软件开发相关的任务中使用这些实用程序,因此,如果存在这些实用程序并且在任务上下文之外使用,则事件可能是可疑的。 在调用这些实用程序前后使用的命令参数也可用于确定正在执行的二进制文件的来源和目的。