
Estrae e deoffusca macro XLM (note anche come macro di Excel 4.0)
XLMMacroDeobfuscator può essere utilizzato per decodificare macro XLM offuscate (note anche come macro di Excel 4.0). Utilizza un emulatore XLM interno per interpretare le macro, senza eseguire completamente il codice.
Supporta i formati xls, xlsm e xlsb.
Utilizza xlrd2, pyxlsb2 e un proprio parser per estrarre celle e altre informazioni rispettivamente da file xls, xlsb e xlsm.
Puoi anche trovare la grammatica XLM in xlm-macro-lark.template
pip install XLMMacroDeobfuscator --force
oppure
pip install xlmmacrodeobfuscator[defusedxml] --force
pip install -U https://github.com/DissectMalware/XLMMacroDeobfuscator/archive/master.zip --force
Per deoffuscare le macro nei documenti Excel:
xlmdeobfuscator --file document.xlsm
Per estrarre solo le macro nei documenti Excel (senza alcuna deoffuscazione):
xlmdeobfuscator --file document.xlsm -x
Per ottenere solo le macro deoffuscate e senza indentazione:
xlmdeobfuscator --file document.xlsm --no-indent --output-formula-format "[[INT-FORMULA]]"
Per esportare l'output in formato JSON:
xlmdeobfuscator --file document.xlsm --export-json result.json
Per vedere un esempio di output JSON, consulta questo link.
Per usare un file di configurazione:
xlmdeobfuscator --file document.xlsm -c default.config
Il file default.config deve essere un file json valido, come:
{
"no-indent": true,
"output-formula-format": "[[CELL-ADDR]] [[INT-FORMULA]]",
"non-interactive": true,
"output-level": 1
}
_ _______
|\ /|( \ ( )
( \ / )| ( | () () |
\ (_) / | | | || || |
) _ ( | | | |(_)| |
/ ( ) \ | | | | | |
( / \ )| (____/\| ) ( |
|/ \|(_______/|/ \|
______ _______ _______ ______ _______ _______ _______ _______ _________ _______ _______
( __ \ ( ____ \( ___ )( ___ \ ( ____ \|\ /|( ____ \( ____ \( ___ )\__ __/( ___ )( ____ )
| ( \ )| ( \/| ( ) || ( ) )| ( \/| ) ( || ( \/| ( \/| ( ) | ) ( | ( ) || ( )|
| | ) || (__ | | | || (__/ / | (__ | | | || (_____ | | | (___) | | | | | | || (____)|
| | | || __) | | | || __ ( | __) | | | |(_____ )| | | ___ | | | | | | || __)
| | ) || ( | | | || ( \ \ | ( | | | | ) || | | ( ) | | | | | | || (\ (
| (__/ )| (____/\| (___) || )___) )| ) | (___) |/\____) || (____/\| ) ( | | | | (___) || ) \ \__
(______/ (_______/(_______)|/ \___/ |/ (_______)\_______)(_______/|/ \| )_( (_______)|/ \__/
XLMMacroDeobfuscator(v0.2.0) - https://github.com/DissectMalware/XLMMacroDeobfuscator
Error: --file is missing
usage: deobfuscator.py [-h] [-c FILE_PATH] [-f FILE_PATH] [-n] [-x]
[--sort-formulas] [--defined-names] [-2]
[--with-ms-excel] [-s] [-d DAY]
[--output-formula-format OUTPUT_FORMULA_FORMAT]
[--extract-formula-format EXTRACT_FORMULA_FORMAT]
[--no-indent] [--silent] [--export-json FILE_PATH]
[--start-point CELL_ADDR] [-p PASSWORD]
[-o OUTPUT_LEVEL] [--timeout N]
optional arguments:
-h, --help mostra questo messaggio di aiuto ed esce
-c FILE_PATH, --config-file FILE_PATH
Specifica un file di configurazione (deve essere un file JSON valido)
-f FILE_PATH, --file FILE_PATH
Il percorso di un file XLSM
-n, --noninteractive Disabilita la shell interattiva
-x, --extract-only Estrai solo le celle senza emulazione
--sort-formulas Ordina le formule estratte in base al loro indirizzo di cella (richiede -x)
--defined-names Estrai tutti i nomi definiti
-2, --no-ms-excel [Deprecato] Non usare MS Excel per elaborare file XLS
--with-ms-excel Usa MS Excel per elaborare file XLS
-s, --start-with-shell
Apri una shell XLM prima di interpretare le macro nell'input
-d DAY, --day DAY Specifica il giorno del mese
--output-formula-format OUTPUT_FORMULA_FORMAT
Specifica il formato per le formule di output ([[CELL-ADDR]], [[INT-FORMULA]], [[STATUS]])
--extract-formula-format EXTRACT_FORMULA_FORMAT
Specifica il formato per le formule estratte ([[CELL-ADDR]], [[CELL-FORMULA]], [[CELL-VALUE]])
--no-indent Non mostrare l'indentazione prima delle formule
--silent Non stampare l'output
--export-json FILE_PATH
Esporta l'output in JSON
--start-point CELL_ADDR
Avvia l'interpretazione da un indirizzo di cella specifico
-p PASSWORD, --password PASSWORD
Password per decifrare il documento protetto
-o OUTPUT_LEVEL, --output-level OUTPUT_LEVEL
Imposta il livello di dettaglio da mostrare (0:tutti i comandi, 1: comandi senza salti 2:comandi importanti 3: stringhe nei comandi importanti).
--timeout N ferma l'emulazione dopo N secondi (0: nessuna interruzione, N>0: ferma dopo N secondi)
L'esempio seguente mostra come XLMMacroDeobfuscator può essere usato in un progetto Python per deoffuscare macro XLM:
from XLMMacroDeobfuscator.deobfuscator import process_file
result = process_file(file='path/to/an/excel/file',
noninteractive= True,
noindent= True,
output_formula_format='[[CELL-ADDR]], [[INT-FORMULA]]',
return_deobfuscated= True,
timeout= 30)
for record in result:
print(record)
Leggi requirements.txt per ottenere l'elenco delle librerie Python da cui dipende XLMMacroDeobfuscator.
xlmdeobfuscator può essere eseguito su qualsiasi sistema operativo per estrarre e deoffuscare macro in file xls, xlsm e xlsb. Non è necessario installare MS Excel.
Nota: se si desidera utilizzare MS Excel (su Windows), è necessario installare la libreria pywin32 e usare lo switch --with-ms-excel. Se viene usato --with-ms-excel, xlmdeobfuscator tenta prima di caricare i file xls con MS Excel; se fallisce, utilizza la libreria xlrd2.
XLMMacroDeofuscator è adottato nei seguenti progetti:
Contattami se hai integrato XLMMacroDeofuscator nel tuo progetto.
Se hai trovato un bug o desideri suggerire un miglioramento, crea un nuovo problema nella pagina degli issue.
Sentiti libero di contribuire al progetto facendo un fork del repository e proponendo una pull request.
Puoi contattarmi su Twitter (@DissectMalware) tramite messaggio diretto.