CMD命令混淆浅析

admin 2021年7月25日03:01:58评论61 views字数 1710阅读5分42秒阅读模式

CMD命令混淆浅析


0x00 简介
混淆技术,已经有很长的历史了:包括恶意有效载荷的加密和字符串的混淆,到JavaScript混淆。命令行混淆不是一个新问题 - 只是混淆的目标(Windows命令处理器 cmd.exe)相对较新。命令行解释器是一个单独的软件程序,它可以在用户和操作系统之间提供直接的通讯。非图形命令行解释器用户界面提供运行基于字符的应用程序和实用程序的环境。命令行解释器通过使用类似于 MS-DOS 命令解释程序 Command.com 的各个字符来执行程序并在屏幕上显示其输出。Windows 服务器操作系统命令行解释器使用命令解释程序 Cmd.exe(该程序加载应用程序并指示应用程序之间的信息流动)将用户输入转换为操作系统可理解的形式。
Cmd中有许多的特殊字符,都具备特殊的功能,“^”是常见的转义字符,我们把插入到命令当中,不影响命令执行,它们都有特定的功能,如果需要把它们作为字符输出的话,echo >、echo |之类的写法就会出错——cmd解释器会把它们作为具有特殊功能的字符对待,而不会作为普通字符处理,这个时候,就需要对这些特殊字符做转义处理:在每个特殊字符前加上转义字符^。因此,要输出这些特殊字符,就需要用 echo ^>、echo ^|、echo ^|^|、echo ^^之类的格式来处理。另外,此转义字符还可以用作续行符号。


0x01 利用特殊字符进行混淆

CMD命令混淆浅析


逗号“,”和分号 “;”可以互换,可以取代命令中的合法空格。多个空格也不影响命令执行。

CMD命令混淆浅析


成对的圆括号()也会出现在命令参数中,也不影响命令的执行。圆括号表示嵌入子命令组,同样被cmd.exe参数处理器进行解释。

CMD命令混淆浅析


当然也可以用&&进行命令组合

CMD命令混淆浅析


,%comspec% 是一个指向当前命令行外壳的环境变量。通过使用 %comspec%,您不必担心命令行外壳是 cmd.exe 还是 command.exe;%comspec% 会自动选择正确的一个。

CMD命令混淆浅析


添加空格

CMD命令混淆浅析


添加逗号和分号

CMD命令混淆浅析


添加括号

CMD命令混淆浅析


添加多个转义字符

CMD命令混淆浅析


0x02 利用环境变量进行混淆
cmd.exe的环境变量分为系统已有的环境变量和自定义变量。利用环境变量的值中的字符或字符串,可以拼接成黑客需要的cmd命令,同时可以逃避静态检测。
我们可以自定义一个或者多个环境变量,利用环境变量值中的字符,提取并拼接出命令

CMD命令混淆浅析


也可以定义多个环境变量进行拼接命令串

CMD命令混淆浅析


大多数对powershell使用简单连接的公共示例都依赖于执行子cmd.exe进程来扩展主进程中设置的自定义环境变量。但是,call命令将提供更安静的变量扩展方法,因为它不需要执行子进程。

CMD命令混淆浅析


随机大小写和空格

CMD命令混淆浅析


添加逗号和分号

CMD命令混淆浅析


添加括号

CMD命令混淆浅析


将配对双引号添加到输入命令以混淆其最终命令行参数

CMD命令混淆浅析


用相邻的双引号替换不相邻的双引号

CMD命令混淆浅析


使用cmd.exe的/ V:ON参数启用延迟环境变量扩展

CMD命令混淆浅析


使用包含相邻引号的变量的子字符串执行相邻双引号的字符串替换

CMD命令混淆浅析


编码混淆可以支持将随机生成的垃圾字符添加到唯一环境变量中并更新for循环中的索引值以使得在视觉上重新组装原始命令更加困难。除了在循环索引值之间以任何正数量显式签名非负整数和可互换空格,逗号和分号分隔符字符之外,所有先前的插入混淆字符都可以添加到FORcoded命令中

CMD命令混淆浅析


0x03 参考
https://www.fireeye.com/blog/threat-research/2018/11/obfuscated-command-line-detection-using-machine-learning.html
https://www.fireeye.com/content/dam/fireeye-www/blog/pdfs/dosfuscation-report.pdf
https://update.venuseye.com.cn/reports/1548417941041/%E4%BB%A5Emotet%E4%B8%BA%E4%BE%8B%E6%B7%B1%E5%85%A5%E5%88%86%E6%9E%90CMD%E5%91%BD%E4%BB%A4%E6%B7%B7%E6%B7%86%E6%8A%80%E6%9C%AF20181212.html


CMD命令混淆浅析

本文始发于微信公众号(T00ls):CMD命令混淆浅析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年7月25日03:01:58
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CMD命令混淆浅析http://cn-sec.com/archives/348382.html

发表评论

匿名网友 填写信息