
MSI Dump - una herramienta que analiza paquetes de instalación MSI maliciosos, extrae archivos, flujos, datos binarios e incorpora el escáner YARA.
msidumpMSI Dump - una herramienta que analiza paquetes de instalación MSI maliciosos, extrae archivos, flujos, datos binarios e incorpora un escáner YARA.
En documentos de Office con macros, podemos usar rápidamente oletools mraptor para determinar si un documento es malicioso. Si queremos analizarlo más a fondo, podemos recurrir a oletools olevba o oledump.
Para analizar archivos MSI maliciosos, hasta ahora solo teníamos una opción, pero confiable y fiable: lessmsi.
Sin embargo, lessmsi no implementa las características que buscaba:
Por eso aquí entra en juego msidump.
Esta herramienta ayuda tanto en triajes rápidos como en exámenes detallados de corpus de MSI maliciosos. Permite:
file/MIME para determinar el tipo de datos internos.Fue creado como herramienta complementaria para la publicación del blog que publiqué aquí:
WindowsInstaller.Installer, actualmente no es posible dar soporte nativo a Linux. Quizás wine python msidump.py podría ayudar, pero aún no lo he probado.cmd> python msidump.py evil.msi -y rules.yara

Aquí podemos ver que el MSI de entrada está inyectado con un VBScript sospechoso y contiene numerosos ejecutables.
Vemos en la tabla de triaje que estaba presente en la tabla Binary. Vamos a obtenerlo:
python msidump.py putty-backdoored.msi -l binary -i UBXtHArj
Podemos especificar qué registro volcar ya sea por su nombre/ID o por su número de índice (aquí sería 7).

Veamos otro ejemplo. Esta vez hay un ejecutable almacenado en la tabla Binary que se ejecutará durante la instalación:

Para extraer ese archivo vamos a usar:
python msidump.py evil2.msi -x binary -i lmskBju -O extracted
Donde:
-x binary indica extraer el contenido de la tabla Binary.-i lmskBju especifica qué registro exactamente extraer.-O extracted establece el directorio de salida.
Para una mejor experiencia de salida, ejecute la herramienta en una ventana de consola maximizada o redirija la salida a un archivo:
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
------------------------------------------------------
- What can be listed:
--list CustomAction - Specific table
--list Registry,File - List multiple tables
--list stats - Print MSI database statistics
--list all - All tables and their contents
--list olestream - Prints all OLE streams & storages.
To display CABs embedded in MSI try: --list _Streams
--list cabs - Lists embedded CAB files
--list binary - Lists binary data embedded in MSI for its own purposes.
That typically includes EXEs, DLLs, VBS/JS scripts, etc
- What can be extracted:
--extract all - Extracts Binary data, all files from CABs, scripts from CustomActions
--extract binary - Extracts Binary data
--extract files - Extracts files
--extract cabs - Extracts cabinets
--extract scripts - Extracts scripts
------------------------------------------------------
CustomAction Type maliciosos evaluando sus números, lo que es propenso a ser evadido.
Aparentemente, al nombrar mi herramienta, no pensé en verificar si ya estaba en uso.
Existe otra herramienta llamada msidump que forma parte del paquete GNU msitools:
Este y otros proyectos son el resultado de noches sin dormir y mucho trabajo duro. Si te gusta lo que hago y aprecias que siempre devuelvo algo a la comunidad, Considérame un café (o mejor una cerveza) solo para darte las gracias! 💪
Mariusz Banach / mgeeky, (@mariuszbit)
<mb [at] binary-offensive.com>