windows命令行混淆

  • A+
所属分类:安全文章

前言:


        后台有朋友找我要猎鹰C2,这个我也没有哈,有需要的可以自己花钱去买,事情忙完了,可以恢复更新了。



命令行通常是杀软检测比较严格的地方,比如一些被滥用的命令就会被杀软重点关注,比如:rundll32、powershell、certutil等等。当我们使用命令行混淆时,可以适当的规避某些杀软的检测规则,达到我们执行命令的目的。

典型:Emotet木马


下面是一些常见的混淆方法


环境变量


环境变量的基本用法是使用set对变量进行赋值,然后可以直接使用赋值后的变量进行直接调用。


查看环境变量:



set



windows命令行混淆


便可以看到我们所有的环境变量。然后我们来设置环境变量:


set a=cmd /c whoami


然后执行:


%a%


windows命令行混淆


该方法可以用与静态检测绕过,要对其进行日志监测还需要装sysmon。


双引号


双引号没有什么特殊的含义,它可以帮助文件或目录保持一个整体,而不会被中间的空格所切割。

一个简单的例子就是目录名中间有空格。


windows命令行混淆


用法即是我们可以在敏感文件名、命令中间添加空格。


windows命令行混淆


转义符


转义符(^)也可以做为切割文件名的一个符号,但是该符号不能够连续输入。


windows命令行混淆


转义符也可以作为一个换行


windows命令行混淆


垃圾分隔符


先来了解一下管道,通过管道结合cmd我们可以执行前者。


echo calc | cmd


windows命令行混淆


结合环境变量,再引入@符,可以发现仍然能够执行。


cmd /c "set [email protected] & echo %x:@=% | cmd"


windows命令行混淆


@符的作用,@符能够将值传递到前面的环境变量中,如:


cmd /c "set [email protected] & echo %x:@=test% | cmd"


这就可以将test传到[email protected]的@位置,输出将是ctestalc。


字符串提取


cmd中也可以通过环境变量的方式进行变量值的字符串提取。

如:set a=abcd,要想提取里面的某个字符串,可以通过


%a:~0,1%


其中0表示从第几位开始提取,1表示提取几个字符串。

所以,我们可以这样去执行一个计算器。


set a=abcd & %a:~2,1%alc


windows命令行混淆


圆括号


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


cmd /c "(((ipconfig)))"


windows命令行混淆


逗号与分号


逗号与分号某些情况可以当作一个终止符号或者代替空格。


windows命令行混淆


循环语句查找


我们也可以通过for循环去查找我们所要的字符串执行,可以避免在命令行输入特殊的字符。

首先要说明for循环的几个参数及语句的意义。


1.for /f "条件" in "范围"2.tokens表示第几列3.delims表示切割符,可输入多个切割符


完整语句:FOR /F “tokens=4 delims=“ %g IN (“c:windowssystem32powershell”) do %g从”c:windowssystem32powershell”中以反斜杠为分隔符,提取第四列的字符串并执行。当然我们可以从文件名、目录名、文件中、环境变量中去读取数据,这样我们需要的字符串就都能够提取到。


windows命令行混淆



自动化:

https://github.com/danielbohannon/Invoke-DOSfuscation


与lolbins配合


有一些混淆需要配合指定的程序使用,下面是方法


选项字符替换


这个其实没啥说的,无非就是比如像-n,替换为/n,看图


windows命令行混淆


字符替换


利用对unicode的处理问题,当使用 ˪、ˣ 和 ˢ 等字符。一些命令行解析器将它们识别为字母并将它们分别转换回 l、x 和 s。


unicode地址如下

https://www.unicode.org/charts/nameslist/n_02B0.html

demo如下


windows命令行混淆



参数简写


这个可以拿powershell为例,其-e参数与下面所有写法同理


-e-ec-en-enc-enco-encod-encode-encoded-encodedc-encodedco-encodedcom-encodedcomm-encodedcomma-encodedcomman-encodedcommand


各lolbin所支持的方法:


windows命令行混淆



自动化工具地址:https://github.com/wietze/windows-command-line-obfuscation



参考文章:


https://www.fireeye.com/content/dam/fireeye-www/blog/pdfs/dosfuscation-report.pdf

https://www.wietzebeukema.nl/blog/windows-command-line-obfuscation


     ▼
更多精彩推荐,请关注我们

windows命令行混淆



本文始发于微信公众号(鸿鹄实验室):windows命令行混淆

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: