-
-
[原创]MMTS(一) -- Windows CMD命令去混淆脚本
-
发表于: 2021-1-8 16:29 5761
-
基于Python实现的Windows CMD命令去混淆脚本。
项目地址:mmts
首先,一起回顾下CMD命令中常使用的命令符号,了解符号的意义,有助于掌握命令的意义与逻辑,以及了解去混淆的时机。
介绍完常用命令符号,再介绍一下当前比较有名的混淆工具:Invoke-DOSfuscation。
该工具主要是用于混淆powershell脚本,同时兼容混淆cmd命令,详情参考fireeye白皮书
据作者自己介绍,他是在研究APT攻击的过程中对命令混淆这块产生的兴趣,并花了几个月的时间完成了这个混淆工具。作者本意是为了方便defenders去测试自己产品对混淆技术的检测能力。(PS:不过,考虑到实际情况,这个工具被攻击者用来躲避杀软检测的可能性更高。)
详细说明请参考该项目的README),这里就不展开介绍了。
为了检测命令混淆这类攻击,fireeye开发了基于flare-qdb的动态去混淆的工具De-DOSfuscator。
flare-qdb是一套基于Python和Vivisect的命令行交互式模拟执行工具。该工具主要用于记录恶意程序的执行过程的某些状态值,方便分析人员去发现和回溯。
De-DOSfuscator是基于flare-qdb的Python脚本,用于记录混淆Powershell脚本或混淆cmd命令执行过程,并从中提取出原始的powershell或cmd命令。使用手册参考dedosfuscator.md,详细介绍参考cmd-and-conquer-de-dosfuscation-with-flare-qdb一文。
python脚本拆分为5个过程,实现去混淆,其中第2、第3、第4步是关键,可以通过不断优化这三个步骤,实现对更多混淆类型的去混淆支持。
^
符号用于取消转义。
在命令混淆中,常见于s^Et
、fin^Ds^Tr
、E^ch^O
等
=
用于赋值,%%
用于取值。
流程如下:
set
命令用于显示、设置或删除 cmd.exe 环境变量。
流程如下:
%.*:~n,m%
用于变量截断,提取指定数据
程如下:
统一小写常用命令、程序名称,当前包括['echo', 'set', 'explorer', 'temp']
$ pip install mmts
$ pip install mmts
# decmd
# $cmd_file每行一条混淆CMD命令,处理完成输出$cmd_file.clear到当前目录
$ mmts
-
decmd $cmd_file
# decmd
# $cmd_file每行一条混淆CMD命令,处理完成输出$cmd_file.clear到当前目录
$ mmts
-
decmd $cmd_file
from
mmts
import
de_dosfuscation_work
def
main():
clear_str
=
de_dosfuscation_work(
"$Obfuscated_string"
)
print
(clear_str)
if
__name__
=
=
"__main__"
:
main()
from
mmts
import
de_dosfuscation_work
def
main():
clear_str
=
de_dosfuscation_work(
"$Obfuscated_string"
)
print
(clear_str)
if
__name__
=
=
"__main__"
:
main()
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)