【网络安全】Windows cmd的命令混淆学习思路
前言
最近有些朋友问我一些免杀问题,由于个人技术有限,对静态免杀有些了解(动态免杀真的不会,太菜了),所以就总结了一些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视为平等。
因为编码问题显示 ˣ 为方框
逗号、分号替换空格
使用 ; (分号) 和 , (逗号)替换合法空格,但是在某些命令中无法替换,例如:net user会提示语法错误。
三、 字符插入
同样,有时可以在命令行中插入额外的字符,这些字符将被执行程序忽略。例如,某些可执行文件可能会删除不可打印的字符,同时也可能会过滤掉某些可打印的字符。
例如,Windows 事件日志工具wevtutil似乎接受在随机位置插入某些范围内的 Unicode 字符(ࢯ)的命令行。因此执行wevtutil gli hardwareeventsandwevtutil gࢯli hardwareevents将产生完全相同的输出,尽管后者在第一个参数的中间包含一个阿拉、伯字母。
还有常见的 ^ 转义字符插入
插入多个(),也不会影响命令运行
四、 行情插入
在保持流程完整的同时操纵命令行的另一种方法是插入引号。尽管这听起来像是先前技术的一个子集,但这里的要求是引号成对出现。
您可能熟悉在参数周围加上引号的概念。就拿dir "c:\windows"例如,这是有效的一样dir c:\windows\,由于缺乏空间。大多数程序都接受这个约定。鲜为人知的是,大多数程序在任意位置接受引号:该命令dir c:“win"d”"ow"s"也可以工作。只要每个参数的引号数是偶数并且后面的引号不超过两个,大多数程序似乎都接受这一点。
五、环境变量
在cmd命令行中支持设置环境变量和自定义变量,使用环境变量中的值或字符串可以拼接成想要的命令。例如whoami,将am 设置变量为 t,将命令拼接成who%t%i,执行成功。
利用@在cmd中的特性,@表示后面的命令不显示执行
六、参数缩写
插入和替换字符后,我们还需要尝试删除字符。一些应用程序允许为其他冗长的命令行选项提供“速记”,从而更容易记住这些命令,或者缩短命令字符个数。
这是基于 Unix 的工具(例如grep -i keywordvs grep --ignore-case keyword)中的一个众所周知的概念,但在 Windows 上则不然。然而,一些程序接受缩短的版本。有些程序采用与 Unix 类似的方法并接受单字母版本(例如cmdkey /lvs cmdkey /list),有些程序接受其他缩写版本(例如wevtutil glivs wevtutil get-loginfo),而其他程序则采用“通配符方法”。这方面的一个例子是 PowerShell,它的许多关键字允许您在关键字 [ 5 ]的末尾省略一个或多个字符。
需要注意的是有些命令的缩写会出现一些冲突。可以查看powershell相关文档。
免杀的方法有很多,只要思路灵活,静态免杀很容易的。
命令混淆工具已经有好多大佬开发出来了,详细用法大家可以自己研究(网上已经有很多了),命令混淆过静态免杀很简单,在这里提供一个简单的样例供大家参考。
下载地址:https://github.com/danielbohannon/Invoke-DOSfuscation
大概使用方法也很简单。
下载文件后再当前目录运行powershell,导入使用的模块 Import-Module .\Invoke-DOSfuscation.psd1 ;
再运行程序Invoke-DOSfuscation ;
可以查看工具的基本使用方法TUTORIAL
Set command //设置需要混淆的命令
Set FINALBINARY//设置命令运行的环境
加载混淆模块,(可以查看下当前目录下的文件夹,不同文件有不同的混淆效果)
使用show命令查看当前命令设置的参数情况
\5. 可以使用test命令再当前窗口进行测试混肴过后的命令;
复测下再cmd 中运行的结果;
其中有很多混淆方法,可以自己看下教程,在这里就不一一举例了。混淆只是可以过一些静态面纱,静态免杀无非就是针对特征字符的处理,静态免杀的方法千千万,基本原理不会变,这里只是提供一种思路,供大家参考。参考文献
关注我,持续更新!!!
私我获取【网络安全学习资料·攻略】
【网络安全】Windows cmd的命令混淆学习思路相关推荐
- python pip、conda、windows CMD常用命令大全!
文章目录 python pip 常用命令 1.查找软件 2.安装软件 3.更新软件 4.卸载软件 5.列出已安装软件 6.查看一个软件包时安装了哪些文件 7.命令补全 8.升级所有包 9.修改pip安 ...
- Windows CMD常用命令大全
开始→运行(cmd)命令大全 开始→运行(cmd)命令大全 gpedit.msc-----组策略 sndrec32-------录音机 Nslookup-------IP地址侦测器 ex ...
- Windows cmd常用命令行命令
Windows常用命令行命令 打开"运行"对话框(Win+R),输入cmd,打开控制台命令窗口... 也可以通过cmd /c 命令 和 cmd /k 命令的方式来直接运行命令 注: ...
- Windows CMD 常用命令指示符
目录 I. 基本命令 1. 打开 2. 输入规范 3. 常用命令 II. 其他常用命令 1. taskmgr 任务管理器 2. msconfig 系统配置 3. shutdown 关机 4. Java ...
- windows cmd 执行命令文件路径带有空格的处理方式
windows cmd 执行批处理命令文件路径带有空格的处理方式 当执行命令的时候如果文件路径带有空格,windows可能会找不到该目录,这时候需要使用双引号做一下处理 cmd执行: "D: ...
- Windows cmd(DOS)命令窗口中echo命令ANSI转义显示彩色字或背景
2019独角兽企业重金招聘Python工程师标准>>> 前言 3个星期的周末了解LINUX下.WINDOWS下的ANSI颜色转义控制,LINUX下根据网上的搜索结果一下就成功了,但W ...
- Windows CMD DOS命令
文章目录 DOS命令基础 进入cmd Windows下几种常用快捷键 基本命令 调整字体 操作文件 操作目录(文件夹) 查找命令 复制和移动 操作进程 关机和重启 其他命令 DOS命令基础 进入cmd ...
- Windows CMD/DOS命令,批处理
文章目录 0. 写在前面 1. 常用的CMD命令 1.1 设置变量命令set 1.2 自定义DOS窗口color.title 1.3 网络连接相关 1.3.1 ping 命令 1.3.2 telnet ...
- Windows CMD常用命令查询
CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本.文件系统版本) 1. appwiz.cpl:程序和功能 2. calc:启动计算器 3. certm ...
最新文章
- 现场丨2017中国计算机大会(CNCC2017)之沈向洋演讲:自然语言中的描述、对话和隐喻
- 分类系统的构成与外部表象
- [Everyday Mathematics]20150104
- Eclipse里不同的project,右键选择属性property facet里看到的list 内容是否相同
- 循环队列的java结构_Java数据结构——循环队列
- 计算机组装维修中级试题,计算机维修工中级理论知识试卷.doc
- 剑指offer面试题:替换空格
- Redis在windows下的配置
- POJ1256 (C++ compare函数)
- MFC 常见窗口操作
- 编译原理-提取左公因子---消除左递归(自己看)
- Unix环境编程-守护进程
- GeForce Experience显示帧数
- JS--JavaScript数值计算与类型转换详解
- 微信H5适配 解决微信调整字体大小导致Html5页面混乱
- Auto property synthesis will not synthesizeproterty;it will be implemented by its superclass, use@dy
- 毕业设计 嵌入式 扫地机器人系统
- windows Server 2012 R2安装 “vc_redist.x64.exe“ 报错
- 2017年第九届深圳国际物联网博览会盛大开幕
- LoadLibrary
热门文章
- SLAM:VSLAM简介之详细攻略
- CV之MobiLenet:基于openpose利用CMU/MobilenetV2算法实现对多人体姿态(2019湖人勒布朗詹姆斯扣篮)实时估计检测
- 成功解决from nets import inception_resnet_v2 ModuleNotFoundError: No module named 'nets'
- MAT之GA:遗传算法(GA)解决M-TSP多旅行商问题
- 关于我的CSDN博客的一些要说的话
- react中component存在性能问题
- 第8.23节 Python中使用sort/sorted排序与“富比较”方法的关系分析
- vue+iview 设置全局的url以及跨越问题
- 【转载】IIS网站配置不带www域名直接跳转带www的域名
- Windows 10 LTSC添加UWP支持