什么是 ArgFuscator?

ArgFuscator 是一个开源的、独立的 Web 应用程序,用于为常见的系统原生可执行文件生成混淆后的命令行。

命令行混淆(T1027.010)是通过操纵进程的命令行来掩盖命令真实意图的一种手段。在 Windows、Linux 和 MacOS 系统中,许多应用程序以意想不到的方式解析传入的命令行参数,导致在某些情况下,插入、删除和/或替换特定字符并不会改变程序的执行流程。成功的命令行混淆可能会使防病毒软件和 EDR 软件等防御措施失效,在某些情况下甚至可以完全绕过检测。

certutil 命令的正常形式与混淆形式示例

尽管先前的研究已经强调了命令行混淆的风险(大多以存在漏洞的(系统原生)应用程序的轶事为例),但围绕这一技术仍存在知识空白。本项目旨在通过提供一个集中化的资源来记录和展示各种命令行混淆技术,并记录流行应用程序对每种技术的易感性,从而填补这一空白。

目标

本项目的主要目标是记录针对网络攻击中常用的应用程序的已知命令行混淆技术,并利用这些知识让用户能够生成混淆后的命令行。对于网络安全防御者来说,这提供了一个强大的工具来测试自身的防御系统。由于检测或适应命令行混淆并非难事,拥有这一资源可以让你在自己的环境中对防御机制进行有效的、真实的验证。

诞生过程

首先,通过文献回顾和我们自己的研究,收集、分析和分类了命令行混淆技术。已识别的技术构成了后续分析的基础。

之后,通过以自动化方式和手动检查评估各种流行的应用程序,创建了已定义技术与易受攻击应用程序之间的映射关系。由此产生的“混淆模型”被捕获为机器可读的格式

第三步,创建了一个系统,该系统允许使用提供的配置中的一系列已定义混淆技术来转换任意命令行。为确保易用性,创建了一个TypeScript 实现,并由用户友好的Web 界面支持,该界面可以解析上述模型文件 —— 其结果就是您当前正在访问的网站。此外,还创建了一个跨平台的 PowerShell 实现

最后,针对已创建的实现测试了这些模型,以验证其正确性,从而可以进一步调整研究结果。其结果就是本项目,它包含了所有阶段的成果。

常见问题解答

什么是命令行混淆?

命令行混淆是一种试图掩盖或以其他方式隐藏程序执行真实意图的行为。特别是在网络安全背景下,这通常涉及将进程的参数重写为功能上与原始参数等效但能绕过检测系统的内容。这可能使攻击者能够以较低的检测几率执行恶意命令。

为什么我需要混淆命令行?

通常由威胁行为体和红队人员使用,混淆命令行参数可以掩盖命令的目标,并可能绕过检测机制、迷惑安全分析师。因此,作为安全专业人员,您可以使用此工具来测试您对命令行混淆的抵御能力,例如验证当命令行参数被混淆时您的检测是否仍然有效。

混淆后的命令没有生效,我该怎么办?

ArgFuscator 生成的命令行有时可能无法按预期工作;原因之一可能是目标程序自最初确定混淆选项以来已经更新。另一个原因可能是为 ArgFuscator 创建的混淆模型不正确。命令行很复杂,因为每个程序都有自己解析和解释所提供参数的方式;因此我们可能会犯一些小错误。如果您认为情况确实如此,请在 ArgFuscator 的 GitHub 仓库上提出 issue,以便我们进行调查。