Dynmx是一款功能强大的基于签名的恶意软件功能检测工具,该工具实现了一种基于Windows API调用序列来检测恶意软件特征和行为的方法,这也是一种基于签名的安全检测方法。在该工具的帮助下,广大研究人员可以将Dynmx视作某种YARA规则,并利用它在恶意软件沙箱环境中实现API调用跟踪。
Dynmx所实现的检测方法使用的数据并不是静态分析数据,而是在恶意软件沙箱中对恶意软件样本进行动态分析期间生成的数据。
当前版本的Dynmx支持下列恶意软件沙箱日志:
VMRay CAPEv2 Cuckoo
工具要求
Python 3.9 anytree lxml pyparsing PyYAML six stringcase
工具安装
由于该工具基于Python 3.9开发,因此我们首先需要在本地设备上安装并配置好Python 3.9环境.接下来,广大研究人员可以使用下列命令将该项目源码克隆至本地:
代码语言:javascript复制git clone https://github.com/0x534a/dynmx.git
(向右滑动,查看更多)
然后切换到项目目录下,使用pip3命令和项目提供的requirements.txt文件安装该工具所需的其他依赖组件:
代码语言:javascript复制cd dynmx
pip3 install -r requirements.txt
我们建议大家在Python虚拟环境中安装和使用该工具。
工具使用
dynmx.py脚本是该工具的主入口点,使用-h命令可以查看工具的帮助信息:
代码语言:javascript复制$ python3 dynmx.py -h
usage: dynmx.py [-h] [--format {overview,detail}] [--show-log] [--log LOG] [--log-level {debug,info,error}] [--worker N] {detect,check,convert,stats,resources} ..
Detect dynmx signatures in dynamic program execution information (function logs)
optional arguments:
-h, --help 显示工具帮助信息和退出
--format {overview,detail}, -f {overview,detail}
数据输出格式
--show-log 在STDOU中显示所有的日志输出
--log LOG, -l LOG 日志文件
--log-level {debug,info,error}
日志级别 (默认: info)
--worker N, -w N 要生成的worker进程数量(默认: - 2)
sub-commands:
要执行的任务
{detect,check,convert,stats,resources}
detect 检测一个dynmx 签名
check 检测dynmx 签名的语句
convert 将函数日志转换为dynmx通用函数日志
stats 函数日志的统计信息
resources 从函数日志中收集到的资源
(向右滑动,查看更多)
下列方式可以查看特定命令的帮助信息(以detect检测命令为例):
代码语言:javascript复制$ python3 dynmx.py detect -h
usage: dynmx.py detect [-h] --sig SIG [SIG ...] --input INPUT [INPUT ...] [--recursive] [--json-result JSON_RESULT] [--runtime-result RUNTIME_RESULT] [--detect-all]
optional arguments:
-h, --help 显示帮助信息和退出
--recursive, -r 递归搜索输入文件
--json-result JSON_RESULT 设置JSON格式的结果文件
--runtime-result RUNTIME_RESULT 以CSV文件格式统计运行时信息
--detect-all 检测所有进程的签名
required arguments:
--sig SIG [SIG ...], -s SIG [SIG ...]
要检测的dynmx签名
--input INPUT [INPUT ...], -i INPUT [INPUT ...]
输入文件路径
(向右滑动,查看更多)
工具使用样例
在一个函数日志中检测一个Dynmx签名,使用一个worker进程:
代码语言:javascript复制python3 dynmx.py -w 1 detect -i "flog.txt" -s dynmx_signature.yml
(向右滑动,查看更多)
将一个函数日志转换为dynmx通用函数日志格式:
代码语言:javascript复制python3 dynmx.py convert -i "flog.txt" -o /tmp/
(向右滑动,查看更多)
检测一个签名:
代码语言:javascript复制
代码语言:javascript复制python3 dynmx.py check -s dynmx_signature.yml
(向右滑动,查看更多)
基于函数日志,获取恶意软件样本所使用的详细资源列表:
代码语言:javascript复制python3 dynmx.py -f detail resources -i "flog.txt"
(向右滑动,查看更多)
许可证协议
本项目的开发与发布遵循Apache-2.0开源许可证协议。
项目地址
Dynmx:https://github.com/0x534a/dynmx
https://github.com/0x534a/master-thesis
https://github.com/0x534a/dynmx-signatures
https://bazaar.abuse.ch/sample/c0832b1008aa0fc828654f9762e37bda019080cbdd92bd2453a05cfb3b79abb3/
https://malpedia.caad.fkie.fraunhofer.de/details/win.amadey
https://www.vmray.com/analyses/_mb/c0832b1008aa/report/overview.html
https://www.vmray.com/analyses/_mb/c0832b1008aa/logs/flog.txt
https://attack.mitre.org/techniques/T1055/012/
https://github.com/avast/avast-ctu-cape-dataset