命令混淆
对手可能会在命令执行期间混淆内容,以阻碍检测。命令行混淆是一种使命令和脚本中的字符串和模式更难以签名和分析的方法。这种类型的混淆可以包含在由传递的负载(例如,网络钓鱼 和 Drive-by Compromise)执行的命令中,或通过 命令和脚本解释器 交互执行。(引用: Akamai JS)(引用: Malware Monday VBE) 例如,对手可能会滥用使用各种符号和转义字符(如空格、^
、+
、$
和 %
)的语法,使命令难以分析,同时保持相同的预期功能。(引用: RC PowerShell) 许多语言支持内置的混淆形式,如 base64 或 URL 编码。(引用: Microsoft PowerShellB64) 对手还可能通过字符串拆分(“Wor”+“d.Application”
)、字符顺序和大小写(rev <<<'dwssap/cte/ tac'
)、globing(mkdir -p '/tmp/:&$NiA'
)以及涉及通过令牌/环境变量/输入流传递字符串的各种技巧手动实现命令混淆。(引用: Bashfuscator Command Obfuscators)(引用: FireEye Obfuscation June 2017) 对手还可能使用目录遍历等技巧来混淆命令引用的二进制文件(C:\voi\pcw\..\..\Windows\tei\qs\k\..\..\..\system32\erool\..\wbem\wg\je\..\..\wmic.exe shadowcopy delete
)。(引用: Twitter Richard WMIC) 工具如 Invoke-Obfuscation
和 Invoke-DOSfucation
也已被用来混淆命令。(引用: Invoke-DOSfuscation)(引用: Invoke-Obfuscation)