《Windows cmd的命令混淆学习思路.docx》由会员分享,可在线阅读,更多相关《Windows cmd的命令混淆学习思路.docx(5页珍藏版)》请在第一文库网上搜索。
1、Windowscmd的命令混淆学习思路总结了一些Windows中cmd的命令混淆思路,静态免杀无非就是对安全设备检测到代码(命令)中的特征字符进行查杀.过滤,首先做的就是对于特征字符的处理,随后就是对环境中限制的字符替换或混淆,从而达到免杀效果。(1)选项字符替换CMD命令中可以执行ping命令,该命令是由unix系统移植过来的,帮助页面建议命令行选项应使用连字符作为选项字符,例如ping-n1127.0.0.1.这与大多数其他使用正斜杠的Windows原生命令行工具不一致。大概是为了帮助有疑问的用户,该程序还接受正斜杠作为选项比如ping/n1127.0.0.1也能运行的。大多数使用连字符的
2、内置Windows可执行文件也接受正斜杠,但有的命令却不可以,例如find/ikeyword,该命令将显示包含单词keyword的所有文件,但find-ikeyword会提示语句错误。(2)字符替换Unicode修饰符替换另一种方法是用类似的字符替换命令行中的其他字符(即除了选项字符之外)。特别是当你考虑整个Unicode范围时,在某些进程可能接受的ASCII范围中还发现了许多字母变体。涉及到的Unicode字符hhjrwysx1w修饰字母小写Wy修饰字母小写Y八修饰字母小写Hh带钩的修饰字母小写HJ修饰字母小写J修饰字母小写R修饰字母小写L修饰字母小写Sx修饰字母小写XUnicode包含一个
3、间距修饰字母范围(0x02BO-0x02FF)4,其中包括l、,和,等字符。一些命令行解析器将它们识别为字母并将它们分别转换回I、x和s。这方面的个例子是reg,它将regexportHKCUout.reg和regexportHKCUout.reg视为平等。因为编码问题显示*为方框逗号.分号替换空格使用;(分号)和,(逗号)替换合法空格,但是在某些命令中无法替换,例如:netuser会提示语法错误。(3)字符插入同样,有时可以在命令行中插入额外的字符,这些字符将被执行程序忽略。例如,某些可执行文件可能会删除不可打印的字符,同时也可能会过滤掉某些可打印的字符。例如,Windows事件日志工具we
4、vtutil似乎接受在随机位置插入某些范围内的Unicode字领粕命令行。因此执行wevtutilglihardwareeventsandwevtutilgDlihardwareevents将产生完全相同的输出尽管后者在第一个参数的中间包含一个阿拉、伯字母。还有常见的A转义字符插入插入多个(),也不会影响命令运行(4)行情插入在保持流程完整的同时操纵命令行的另一种方法是插入引号。尽管这听起来像是先前技术的一个子集,但这里的要求是引号成对出现。您可能熟悉在参数周围加上引号的概念。就拿dirk:windows”例如,这是有效的一样dirc:windows,由于缺乏空间。大多数程序都接受这个约定。鲜
5、为人知的是,大多数程序在任意位置接受引号:该命令dir1m(“。/7%”也可以工作。只要每个参数的引号数是偶数并且后面的引号不超过两个,大多数程序似乎都接受这一点。(4)环境变量在cmd命令行中支持设置环境变量和自定义变量,使用环境变量中的值或字符串可以拼接成想要的命令。例如whoami,将am设置变量为t,将命令拼接成who%t%i,执行成功。利用在cmd中的特性,表示后面的命令不显示执行(5)参数缩写插入和替换字符后,我们还需要尝试删除字符。一些应用程序允许为其他冗长的命令行选项提供速记,从而更容易记住这些命令,或者缩短命令字符个数。这是基于Unix的工具(例如grep-ikeywordv
6、sgrep-ignore-casekeyword)中的一个众所周知的概念,但在Windows上则不然。然而,一些程序接受缩短的版本。有些程序采用与Unix类似的方法并接受单字母版本(例如cmdkey/Ivscmdkey/list),有些程序接受其他缩写版本(例如wevtutilglivswevtutilget-loginfo)f而其他程序则采用通配符方法。这方面的一个例子是PowerShell,它的许多关键字允许您在关键字5的末尾省略一个或多个字符。需要注意的是有些命令的缩写会出现一些冲突。可以查看powershell相关文档。免杀的方法有很多,只要思路灵活,静态免杀很容易的。大概使用方法也很
7、简单。下载文件后再当前目录运行powershellr导入使用的模块Import-Module.Invoke-DOSfuscation.psdl;再运行程序Invoke-DOSfuscation;可以查看工具的基本使用方法TUTORIALSetcommand _/设需要混淆的命令SetFINALBINARY_/设置命令运行的环境加载混淆模块,(可以查看下当前目录下的文件夹,不同文件有不同的混淆效果)使用show命令查看当前命令设的参数情况可以使用test命令再当前窗口进行测试混肴过后的命令;复测下再cmd中运行的结果;其中有很多混淆方法,可以自己看下教程,在这里就不一一举例了。混淆只是可以过一些静态面纱,静态免杀无非就是针对特征字符的处理,静态免杀的方法千千万,基本原理不会变,这里只是提供一种思路,供大家参考。