对于 C/C++
等二进制编译语言,通常不需要或不值得花时间进行代码混淆,因为编译器无论如何都会使用大量优化选项,如去掉符号,命名混淆,乱序执行,异常处理代码迁移等等。但是很大一部分恶意软件和工具是用 C#
编写的,有时是用 Java
编写的。这些语言被编译为字节码/MSIL
/CIL
,可以很容易地进行逆向工程。这意味着将需要应用一些代码混淆以避免特征检测。
有许多可用的开源混淆器,但本节的POC
基于 h4wkst3r
的 InvisibilityCloak C#
混淆器工具。
例如,使用 GhostPack
的 Certify
工具,通常用于在域中查找易受攻击的证书,可以利用上述工具来绕过 defender,如下所示。
Defender
是否正在运行并阻止默认的 Certify
构建InvisibilityCloak
混淆Certify
代码Certify
可以看到它现在可以正常工作,但是它会抛出错误,因为这台机器未加入域或是一个域控制器。
可以得出结论,它有效,但是,请注意,某些工具可能需要比其他工具更进一步和更深入的混淆。例如,在本例中选择了 Certify
而不是 Rubeus
,因为它更容易用于简单的演示目的