前言
最近有些朋友问我一些免杀问题,由于个人技术有限,对静态免杀有些了解(动态免杀真的不会,太菜了),所以就总结了一些Windows中cmd的命令混淆思路,静态免杀无非就是对安全设备检测到代码(命令)中的特征字符进行查杀、过滤,首先做的就是对于特征字符的处理,随后就是对环境中限制的字符替换或混淆,从而达到免杀效果。
【查看资料】
一、选项字符替换
CMD命令中可以执行ping 命令,该命令是由unix系统移植过来的,帮助页面建议命令行选项应使用连字符作为选项字符,例如ping -n 1 127.0.0.1. 这与大多数其他使用正斜杠的 Windows 原生命令行工具不一致。大概是为了帮助有疑问的用户,该程序还接受正斜杠作为选项比如 ping /n 1 127.0.0.1也能运行的。
大多数使用连字符的内置 Windows 可执行文件也接受正斜杠,但有的命令却不可以,例如find /i keyword,该命令将显示包含单词“keyword”的所有文件,但find -i keyword会提示语句错误。
二、字符替换
Unicode修饰符替换
另一种方法是用类似的字符替换命令行中的其他字符(即除了选项字符之外)。特别是当你考虑整个 Unicode 范围时,在某些进程可能接受的 ASCII 范围中还发现了许多字母变体。
涉及到的 Unicode 字符ʱ ʰ ʲ ʳ ʷ ʸ ˢ ˣ ˡ
ʷ 修饰字母小写 W
ʸ 修饰字母小写 Y
ʰ 修饰字母小写 H
ʱ 带钩的修饰字母小写 H
ʲ 修饰字母小写 J
ʳ 修饰字母小写 R
ˡ 修饰字母小写 L
ˢ 修饰字母小写 S
ˣ 修饰字母小写 X
Unicode 包含一个间距修饰字母范围(0x02B0 - 0x02FF) [ 4 ],其中包括 ˪、ˣ 和 ˢ 等字符。一些命令行解析器将它们识别为字母并将它们分别转换回 l、x 和 s。这方面的一个例子是reg,它将reg export HKCU out.reg和reg eˣport HKCU out.reg视为平等。
因为编码问题显示 ˣ 为方框
逗号、分号替换空格
使用 ;