![图片[1]-MSIDump:一款功能强大的恶意MSI安装包安全分析工具-NGC660 安全实验室](https://image.3001.net/images/20230408/1680944661_64312e1573f0010afaa80.jpeg!small)
关于MSIDump
MSIDump是一款功能强大的恶意MSI安装包安全分析工具,该工具还支持提取文件、数据流、二进制数据,并结合YARA扫描器来执行安全分析任务。
在启用了宏的Office文档上,我们可以快速使用oletools mraptor工具来判断哪一个文档是恶意文档。如果你想要进一步对其分析,我们还可以引入oletools olevba或oledump工具。
但如果你想要解析恶意MSI文件,到目前为止,我们可以信赖且能够可靠运行的就只有一个lessmsi工具,不过lessmsi并没有实现下列功能:
1、快速分类诊断;
2、二进制数据提取;
3、YARA扫描;
因此,MSIDump便应运而生。
功能介绍
1、快速确定目标文件是否可疑;
2、可疑枚举所有MSI表并转储特定记录;
3、支持从CAB提取二进制数据和所有文件,以及从CustomActions提取脚本;
4、使用YARA规则扫描所有内部数据和记录;
5、使用file/MIME类型推导来确定内部数据类型;
工具下载
由于该工具基于Python开发,因此我们首先需要在本地设备上安装并配置好Python环境。接下来,广大研究人员可以使用下列命令将该项目源码克隆至本地:
git clone https://github.com/mgeeky/msidump.git
然后切换到项目目录中,使用pip命令和项目提供的requirements.txt安装该工具所需的依赖组件:
cd msidump pip install requirements.txt
工具使用
首先,使用YARA规则对可疑MSI进行快速分类:
cmd> python msidump.py evil.msi -y rules.yara
![图片[2]-MSIDump:一款功能强大的恶意MSI安装包安全分析工具-NGC660 安全实验室](https://image.3001.net/images/20230408/1680944707_64312e43812cf7e8e5106.png!small)
此时,我们将能够看到输入MSI被注入了可疑的VBScript,并且其中包含许多可执行文件。
接下来,我们可以通过只提取该记录来仔细分析这个VBScript。我们从分类表中看到,它出现在Binary表中。然后运行下列命令:
python msidump.py putty-backdoored.msi -l binary -i UBXtHArj
我们可以通过名称/ID或索引号(这里应该是7)来指定要记录转储的内容:
![图片[3]-MSIDump:一款功能强大的恶意MSI安装包安全分析工具-NGC660 安全实验室](https://image.3001.net/images/20230408/1680944721_64312e5195897dedf1e79.png!small)
接下来,我们可以看看另一个样例。这一次,Binary表中存储了一个可执行文件,这个可执行文件会在安装过程中被执行:
![图片[4]-MSIDump:一款功能强大的恶意MSI安装包安全分析工具-NGC660 安全实验室](https://image.3001.net/images/20230408/1680944729_64312e59cbe06b191745a.png!small)
如需提取目标文件,可以直接运行下列命令:
python msidump.py evil2.msi -x binary -i lmskBju -O extracted
其中:
-x binary:该选项可以提取Binary表中的内容; -i lmskBju:该选项指定需要提取的准确记录; -O extracted:该选项用于设置输出目录;
![图片[5]-MSIDump:一款功能强大的恶意MSI安装包安全分析工具-NGC660 安全实验室](https://image.3001.net/images/20230408/1680944745_64312e69efb9230fbaa0d.png!small)
如需获取最详细的输出,可以直接在终端窗口输出记录或将结果存储到文件中:
python msidump.py [...] -o analysis.log
工具完整使用
PS D:\> python .\msidump.py --help options: -h, --help 显示工具帮助信息和退出 Required arguments: infile 待分析的MSI文件或目录 Options: -q, --quiet 开启静默模式 -v, --verbose 开启Verbose模式 -d, --debug 开启调试模式 -N, --nocolor 不使用颜色高亮输出 -n PRINT_LEN, --print-len PRINT_LEN 概览数据长度,默认为128 -f {text,json,csv}, --format {text,json,csv} 输出格式:文本、JSON、CSV,默认为文本 -o path, --outfile path 设置输出文件路径 -m, --mime 嗅探内部数据类型时,报告MIME类型 Analysis Modes: -l what, --list what 列出指定的表内容 -x what, --extract what 从MSI提取数据 Analysis Specific options: -i number|name, --record number|name 指定需要转出的记录信息 -O path, --outdir path 指定输出路径以提取信息 -y path, --yara path YARA规则/目录路径 ------------------------------------------------------ - What can be listed: --list CustomAction - 列举CustomAction --list Registry,File - 列举多个表 --list stats - 打印MSI数据库统计信息 --list all - 列举所有的表及其内容 --list olestream - 打印所有的OLE数据 --list cabs - 列举嵌入的CAB文件 --list binary - 列举嵌入在MSI中的二进制数据 - What can be extracted: --extract all - 提取二进制数据,从CAB中提取所有文件,从 CustomAction提取脚本 --extract binary - 提取二进制数据 --extract files - 提取文件 --extract cabs - 提取CAB --extract scripts - 提取脚本 ------------------------------------------------------
项目地址
MSIDump:【GitHub传送门】
参考资料
https://github.com/decalage2/oletools/blob/master/oletools/mraptor.py
https://github.com/decalage2/oletools/blob/master/oletools/olevba.py
https://github.com/DidierStevens/DidierStevensSuite/blob/master/oledump.py
https://github.com/activescott/lessmsi
本文作者:Alpha_h4ck
转载自FreeBuf.COM
昶之琴![资深玩家 徽章-资深玩家-NGC660 安全实验室](http://ngc660.cn/wp-content/themes/zibll/img/thumbnail-null.svg)
2年前0
我以为只要提交就行了好想告诉你![备受喜爱 徽章-备受喜爱-NGC660 安全实验室](http://ngc660.cn/wp-content/themes/zibll/img/thumbnail-null.svg)
2年前0
花巨资看一下