
Extrahieren und Entschleiern von XLM-Makros (auch bekannt als Excel 4.0-Makros)
Mit XLMMacroDeobfuscator können verschleierte XLM-Makros (auch bekannt als Excel 4.0-Makros) entschlüsselt werden. Es verwendet einen internen XLM-Emulator, um die Makros zu interpretieren, ohne den Code vollständig auszuführen.
Es unterstützt die Formate xls, xlsm und xlsb.
Es verwendet xlrd2, pyxlsb2 und einen eigenen Parser, um Zellen und andere Informationen aus xls-, xlsb- und xlsm-Dateien zu extrahieren.
Die XLM-Grammatik finden Sie auch in xlm-macro-lark.template.
pip install XLMMacroDeobfuscator --force
oder
pip install xlmmacrodeobfuscator[defusedxml] --force
pip install -U https://github.com/DissectMalware/XLMMacroDeobfuscator/archive/master.zip --force
Zum Entschleiern von Makros in Excel-Dokumenten:
xlmdeobfuscator --file dokument.xlsm
Zum reinen Extrahieren von Makros in Excel-Dokumenten (ohne Entschleierung):
xlmdeobfuscator --file dokument.xlsm -x
Um nur die entschleierten Makros ohne Einrückung zu erhalten:
xlmdeobfuscator --file dokument.xlsm --no-indent --output-formula-format "[[INT-FORMULA]]"
Zum Exportieren der Ausgabe im JSON-Format:
xlmdeobfuscator --file dokument.xlsm --export-json ergebnis.json
Ein Beispiel für eine JSON-Ausgabe finden Sie unter diesem Link.
Zum Verwenden einer Konfigurationsdatei:
xlmdeobfuscator --file dokument.xlsm -c default.config
Die Datei default.config muss eine gültige JSON-Datei sein, z.B.:
{
"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
Fehler: --file fehlt
Verwendung: deobfuscator.py [-h] [-c DATEIPFAD] [-f DATEIPFAD] [-n] [-x]
[--sort-formulas] [--defined-names] [-2]
[--with-ms-excel] [-s] [-d TAG]
[--output-formula-format AUSGABE_FORMEL_FORMAT]
[--extract-formula-format EXTRAKT_FORMEL_FORMAT]
[--no-indent] [--silent] [--export-json DATEIPFAD]
[--start-point ZELLADRESSE] [-p PASSWORT]
[-o AUSGABESTUFE] [--timeout N]
optionale Argumente:
-h, --help Zeigt diese Hilfemeldung an und beendet das Programm.
-c DATEIPFAD, --config-file DATEIPFAD
Gibt eine Konfigurationsdatei an (muss eine gültige JSON-Datei sein).
-f DATEIPFAD, --file DATEIPFAD
Der Pfad einer XLSM-Datei.
-n, --noninteractive Deaktiviert die interaktive Shell.
-x, --extract-only Extrahiert nur Zellen ohne Emulation.
--sort-formulas Sortiert extrahierte Formeln nach ihrer Zelladresse (erfordert -x).
--defined-names Extrahiert alle definierten Namen.
-2, --no-ms-excel [Veraltet] MS Excel nicht zur Verarbeitung von XLS-Dateien verwenden.
--with-ms-excel Verwendet MS Excel zur Verarbeitung von XLS-Dateien.
-s, --start-with-shell
Öffnet eine XLM-Shell, bevor die Makros in der Eingabe interpretiert werden.
-d TAG, --day TAG Gibt den Tag des Monats an.
--output-formula-format AUSGABE_FORMEL_FORMAT
Gibt das Format für Ausgabeformeln an ([[CELL-ADDR]], [[INT-FORMULA]] und [[STATUS]]).
--extract-formula-format EXTRAKT_FORMEL_FORMAT
Gibt das Format für extrahierte Formeln an ([[CELL-ADDR]], [[CELL-FORMULA]] und [[CELL-VALUE]]).
--no-indent Keine Einrückung vor Formeln anzeigen.
--silent Keine Ausgabe drucken.
--export-json DATEIPFAD
Exportiert die Ausgabe als JSON.
--start-point ZELLADRESSE
Beginnt die Interpretation ab einer bestimmten Zelladresse.
-p PASSWORT, --password PASSWORT
Passwort zum Entschlüsseln des geschützten Dokuments.
-o AUSGABESTUFE, --output-level AUSGABESTUFE
Legt die Detailstufe der anzuzeigenden Informationen fest (0: alle Befehle, 1: Befehle ohne Sprünge, 2: wichtige Befehle, 3: Zeichenketten in wichtigen Befehlen).
--timeout N Stoppt die Emulation nach N Sekunden (0: keine Unterbrechung, N>0: Stopp nach N Sekunden).
Das folgende Beispiel zeigt, wie XLMMacroDeobfuscator in einem Python-Projekt zum Entschleiern von XLM-Makros verwendet werden kann:
from XLMMacroDeobfuscator.deobfuscator import process_file
result = process_file(file='pfad/zu/einer/excel/datei',
noninteractive= True,
noindent= True,
output_formula_format='[[CELL-ADDR]], [[INT-FORMULA]]',
return_deobfuscated= True,
timeout= 30)
for record in result:
print(record)
Bitte lesen Sie die Datei requirements.txt, um die Liste der Python-Bibliotheken zu erhalten, von denen XLMMacroDeobfuscator abhängig ist.
xlmdeobfuscator kann auf jedem Betriebssystem ausgeführt werden, um Makros in xls-, xlsm- und xlsb-Dateien zu extrahieren und zu entschleiern. MS Excel muss nicht installiert sein.
Hinweis: Wenn Sie MS Excel (unter Windows) verwenden möchten, müssen Sie die Bibliothek pywin32 installieren und den Schalter --with-ms-excel verwenden.
Wenn --with-ms-excel verwendet wird, versucht xlmdeobfuscator zuerst, XLS-Dateien mit MS Excel zu laden. Falls dies fehlschlägt, wird die xlrd2-Bibliothek verwendet.
XLMMacroDeobfuscator wird in folgenden Projekten eingesetzt:
Bitte kontaktieren Sie mich, wenn Sie XLMMacroDeobfuscator in Ihr Projekt integriert haben.
Wenn Sie einen Fehler gefunden haben oder eine Verbesserung vorschlagen möchten, erstellen Sie bitte ein neues Issue auf der Issue-Seite.
Sie können gerne zum Projekt beitragen, indem Sie das Projekt forken und einen Pull-Request einreichen.
Sie können mich (@DissectMalware auf Twitter) per Direktnachricht erreichen.