CMD命令混淆学习

445 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

更新时间:2022.06.08 image.png

1. 背景介绍

cmd命令混淆的意义主要是bypass,混淆也不能影响原来的命令执行结果。

2. 混淆方法

2.1 双引号法"

使用双引号包裹字符,相当于将字符进行连接。 who""a""mi image.png

在这个也可以这样: image.png 最好是成对使用: image.png

2.2 转义符^

字符^CMD命令中最常见的转义字符,该字符不影响命令的执行。 who^am^i image.png 在这里不能两个^^放在一起使用,不然会报错:

image.png

2.3 大小写混合

WHoAmI image.png

2.4 空格替换,;

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

;, net user
,; net user

image.png 但是不能在一个连续命令中间使用:

image.png

2.5 括号()

成对的圆括号()也会出现在命令参数中,也不影响命令的执行。圆括号表示嵌入子命令组,同样被cmd.exe参数处理器进行解释 这个句子注意当前使用的时候,只能够使用完整的一个命令使用当前的符号,不能分开:

image.png 多层同样不影响使用: image.png

2.6 set设置环境变量

set a=cmd /c whoami  --->  %a%

在这个例子中,通过设置变量,然后去执行变量,但是一定要注意在设置set的变量值和等号之间不能有空格:

image.png

3. 混淆工具 Invoke-DOSfuscation

3.1 工具介绍

在混淆中,由于命令和方法太多,比如管道符| & || 等等,有时候我们不知道如何处理,所以在这里提供了一个新的混淆工具: github.com/danielbohan…

首先导入该工具的包: image.png 这里是因为默认禁止加载,修改下,以管理员身份运行ps,然后执行命令:

set-ExecutionPolicy RemoteSigned
选择Y

image.png

再次加载的时候报毒:

image.png

在这里需要关闭你的杀软,然后再加载:

Import-Module .\Invoke-DOSfuscation.psd1
Invoke-DOSfuscation

image.png

在这里的命令非常的多,在这里演示下最简单的用法: 使用set command 设置命令,然后跟着步骤做就行了,最后生成的命令为:

whoa%ALLUSERSPROFILE:~-5,1%i

image.png

刚刚的命令执行结果: image.png 当然,在这里还可以使用BACK命令回退上一级 image.png

%comMonpROGRaMFiLes:~     22,      1%%COmmOnPrOgramFILES:~      27,    -1%t%PROgrAmFILES:~    10,     -5%%pUblic:~    -5,   -4%s%tEmP:~    -3,   1%r

同样可以执行:

image.png

3.2 测试添加账号过火绒(失败)

在这里使用添加用户的命令来测试下火绒,因为我这个火绒病毒库没有及时更新,理论上讲不影响我们的操作:

image.png

当使用正常的用户添加命令的时候,会报毒:

image.png

image.png

在这里使用刚刚的工具来试试:

image.png

ne%ALLUSERSPROFILE:~12,-1% use%TEMP:~6,1%%CommonProgramW6432:~-6,1%%ALLUSERSPROFILE:~12,-1%e%SystemRoot:~-1,1%%TEMP:~-13,-12% 123 /%LOCALAPPDATA:~-7,1%d%OS:~3,-6%

image.png

再试试其他的方法:

image.png

还是不行: image.png

添加用户的我已经单独写了一个文章了,后面再发。

4. 总结

对cmd命令的混淆的目的并不是为了在这里添加用户,是为了辅助其他的操作,比如certutil的命令执行等。本文参考了大量的链接,感觉各位师傅的支持。

5. 参考资料

update.venuseye.com.cn/reports/154…

blog.csdn.net/weixin_4574…

cloud.tencent.com/developer/a…