
MSI Dump - uma ferramenta que analisa pacotes de instalação MSI maliciosos, extrai arquivos, fluxos, dados binários e incorpora o scanner YARA.
msidumpMSI Dump - uma ferramenta que analisa pacotes MSI maliciosos, extrai arquivos, streams, dados binários e incorpora um scanner YARA.
Em documentos do Office habilitados para macro, podemos usar rapidamente oletools mraptor para determinar se o documento é malicioso. Se quisermos dissecá-lo mais, podemos usar oletools olevba ou oledump.
Para dissecar arquivos MSI maliciosos, até agora tínhamos apenas um, mas confiável, lessmsi.
No entanto, o lessmsi não implementa os recursos que eu procurava:
É aí que o msidump entra em cena.
Esta ferramenta auxilia tanto em triagens rápidas quanto em exames detalhados de coleções de MSIs maliciosos. Ela nos permite:
file/MIME para determinar o tipo de dado internoFoi criada como uma ferramenta complementar para a postagem do blog que publiquei aqui:
WindowsInstaller.Installer, atualmente não é possível suportar nativamente plataformas Linux. Talvez wine python msidump.py possa ajudar, mas ainda não testei isso.cmd> python msidump.py evil.msi -y rules.yara

Aqui podemos ver que o MSI de entrada está injetado com um VBScript suspeito e contém vários executáveis nele.
Vemos na tabela de triagem que ele estava presente na tabela Binary. Vamos pegá-lo:
python msidump.py putty-backdoored.msi -l binary -i UBXtHArj
Podemos especificar qual registro despejar pelo seu nome/ID ou pelo seu número de índice (aqui seria 7).

Vejamos outro exemplo. Desta vez, há um executável armazenado na tabela Binary que será executado durante a instalação:

Para extrair esse arquivo, usaremos:
python msidump.py evil2.msi -x binary -i lmskBju -O extracted
Onde
-x binary indica para extrair o conteúdo da tabela Binary-i lmskBju especifica qual registro extrair exatamente-O extracted define o diretório de saída
Para a melhor experiência de saída, execute a ferramenta em uma janela de console maximizada ou redirecione a saída para um arquivo:
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 Types maliciosos com base na avaliação de seus números, o que é propenso a ser contornado.
Aparentemente, ao nomear minha ferramenta, não pensei em verificar se já estava sendo usado.
Existe outra ferramenta chamada msidump que faz parte do pacote GNU msitools:
Este e outros projetos são resultado de noites sem dormir e muito trabalho duro. Se você gosta do que faço e aprecia que sempre retribuo à comunidade, Considere me comprar um café (ou melhor, uma cerveja) só para agradecer! 💪
Mariusz Banach / mgeeky, (@mariuszbit)
<mb [at] binary-offensive.com>