
MSI Dump - инструмент, который анализирует вредоносные установочные пакеты MSI, извлекает файлы, потоки, двоичные данные и включает сканер YARA.
msidumpMSI Dump - инструмент, который анализирует вредоносные установочные пакеты MSI, извлекает файлы, потоки, двоичные данные и использует YARA-сканер.
Для документов Office с поддержкой макросов мы можем быстро использовать oletools mraptor, чтобы определить, является ли документ вредоносным. Если нужно проанализировать его глубже, можно применить oletools olevba или oledump.
Для анализа вредоносных файлов MSI до сих пор у нас был только один, но надёжный и заслуживающий доверия инструмент lessmsi.
Однако lessmsi не реализует функции, которые я искал:
Вот здесь на сцену и выходит msidump.
Этот инструмент помогает как в быстром триаже, так и в детальном анализе коллекций вредоносных MSI. Он позволяет нам:
file/MIME для определения типа внутренних данныхОн был создан как вспомогательный инструмент к статье в блоге, которую я опубликовал здесь:
WindowsInstaller.Installer, в настоящее время невозможно поддерживать нативные платформы Linux. Возможно, wine python msidump.py может помочь, но я этого ещё не пробовал.cmd> python msidump.py evil.msi -y rules.yara

Здесь мы видим, что входящий MSI содержит подозрительный VBScript и множество исполняемых файлов.
Binary. Давайте получим её:python msidump.py putty-backdoored.msi -l binary -i UBXtHArj
Мы можем указать, какую запись дампить, либо по её имени/ID, либо по номеру индекса (здесь это было бы 7).

Давайте посмотрим на другой пример. На этот раз в таблице Binary хранится исполняемый файл, который будет выполнен во время установки:

Чтобы извлечь этот файл, мы воспользуемся
python msidump.py evil2.msi -x binary -i lmskBju -O extracted
Где
-x binary указывает извлечь содержимое таблицы Binary-i lmskBju указывает, какую именно запись извлечь-O extracted задаёт выходной каталог
Для наилучшего отображения результатов запустите инструмент в развёрнутом окне консоли или перенаправьте вывод в файл:
python msidump.py [...] -o analysis.log
PS D:\> python .\msidump.py --help
options:
-h, --help show this help message and exit
Required arguments:
infile Input MSI file (or directory) for analysis.
Options:
-q, --quiet Surpress banner and unnecessary information. In triage mode, will display only verdict.
-v, --verbose Verbose mode.
-d, --debug Debug mode.
-N, --nocolor Dont use colors in text output.
-n PRINT_LEN, --print-len PRINT_LEN
When previewing data - how many bytes to include in preview/hexdump. Default: 128
-f {text,json,csv}, --format {text,json,csv}
Output format: text, json, csv. Default: text
-o path, --outfile path
Redirect program output to this file.
-m, --mime When sniffing inner data type, report MIME types
Analysis Modes:
-l what, --list what List specific table contents. See help message to learn what can be listed.
-x what, --extract what
Extract data from MSI. For what can be extracted, refer to help message.
Analysis Specific options:
-i number|name, --record number|name
Can be a number or name. In --list mode, specifies which record to dump/display entirely. In --extract mode dumps only this particular record to --outdir
-O path, --outdir path
When --extract mode is used, specifies output location where to extract data.
-y path, --yara path Path to YARA rule/directory with rules. YARA will be matched against Binary data, streams and inner files
------------------------------------------------------
- Что можно вывести:
--list CustomAction - Конкретная таблица
--list Registry,File - Вывод нескольких таблиц
--list stats - Вывод статистики базы данных MSI
--list all - Все таблицы и их содержимое
--list olestream - Вывод всех OLE-потоков и хранилищ.
Для отображения CAB-файлов, встроенных в MSI, попробуйте: --list _Streams
--list cabs - Вывод встроенных CAB-файлов
--list binary - Вывод двоичных данных, встроенных в MSI для собственных целей.
Обычно включает EXE, DLL, VBS/JS скрипты и т.д.
- Что можно извлечь:
--extract all - Извлекает двоичные данные, все файлы из CAB-архивов, скрипты из CustomActions
--extract binary - Извлекает двоичные данные
--extract files - Извлекает файлы
--extract cabs - Извлекает CAB-архивы
--extract scripts - Извлекает скрипты
------------------------------------------------------
CustomAction Type на основе оценки их номеров, что может быть обойдено.
Видимо, при выборе названия для своего инструмента я не подумал проверить, не занято ли оно уже. Существует другой инструмент с именем msidump, входящий в состав пакета GNU msitools:
Этот и другие проекты — результат бессонных ночей и большого труда. Если вам нравится то, что я делаю, и вы цените, что я всегда отдаю что-то сообществу, рассмотрите возможность купить мне кофе (или лучше пиво) просто чтобы сказать спасибо! 💪
Mariusz Banach / mgeeky, (@mariuszbit)
<mb [at] binary-offensive.com>