
Extraire et désoscurcir les macros XLM (alias macros Excel 4.0)
XLMMacroDeobfuscator peut être utilisé pour décoder les macros XLM obfusquées (également connues sous le nom de macros Excel 4.0). Il utilise un émulateur XLM interne pour interpréter les macros, sans exécuter complètement le code.
Il prend en charge les formats xls, xlsm et xlsb.
Il utilise xlrd2, pyxlsb2 et son propre analyseur pour extraire les cellules et autres informations des fichiers xls, xlsb et xlsm respectivement.
Vous pouvez également trouver la grammaire XLM dans xlm-macro-lark.template
pip install XLMMacroDeobfuscator --force
ou
pip install xlmmacrodeobfuscator[defusedxml] --force
pip install -U https://github.com/DissectMalware/XLMMacroDeobfuscator/archive/master.zip --force
Pour désobfusquer les macros dans des documents Excel :
xlmdeobfuscator --file document.xlsm
Pour seulement extraire les macros des documents Excel (sans aucune désobfuscation) :
xlmdeobfuscator --file document.xlsm -x
Pour obtenir uniquement les macros désobfusquées et sans indentation :
xlmdeobfuscator --file document.xlsm --no-indent --output-formula-format "[[INT-FORMULA]]"
Pour exporter la sortie au format JSON :
xlmdeobfuscator --file document.xlsm --export-json result.json
Pour voir un exemple de sortie JSON, veuillez consulter ce lien.
Pour utiliser un fichier de configuration :
xlmdeobfuscator --file document.xlsm -c default.config
Le fichier default.config doit être un fichier JSON valide, par exemple :
{
"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 show this help message and exit
-c FILE_PATH, --config-file FILE_PATH
Specify a config file (must be a valid JSON file)
-f FILE_PATH, --file FILE_PATH
The path of a XLSM file
-n, --noninteractive Disable interactive shell
-x, --extract-only Only extract cells without any emulation
--sort-formulas Sort extracted formulas based on their cell address
(requires -x)
--defined-names Extract all defined names
-2, --no-ms-excel [Deprecated] Do not use MS Excel to process XLS files
--with-ms-excel Use MS Excel to process XLS files
-s, --start-with-shell
Open an XLM shell before interpreting the macros in
the input
-d DAY, --day DAY Specify the day of month
--output-formula-format OUTPUT_FORMULA_FORMAT
Specify the format for output formulas ([[CELL-ADDR]],
[[INT-FORMULA]], and [[STATUS]]
--extract-formula-format EXTRACT_FORMULA_FORMAT
Specify the format for extracted formulas ([[CELL-
ADDR]], [[CELL-FORMULA]], and [[CELL-VALUE]]
--no-indent Do not show indent before formulas
--silent Do not print output
--export-json FILE_PATH
Export the output to JSON
--start-point CELL_ADDR
Start interpretation from a specific cell address
-p PASSWORD, --password PASSWORD
Password to decrypt the protected document
-o OUTPUT_LEVEL, --output-level OUTPUT_LEVEL
Set the level of details to be shown (0:all commands,
1: commands no jump 2:important commands 3:strings in
important commands).
--timeout N stop emulation after N seconds (0: not interruption
N>0: stop emulation after N seconds)
L'exemple suivant montre comment XLMMacroDeobfuscator peut être utilisé dans un projet Python pour désobfusquer des macros 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)
Veuillez lire requirements.txt pour obtenir la liste des bibliothèques Python dont dépend XLMMacroDeobfuscator.
xlmdeobfuscator peut être exécuté sur n'importe quel système d'exploitation pour extraire et désobfusquer les macros dans les fichiers xls, xlsm et xlsb. Vous n'avez pas besoin d'installer MS Excel.
Remarque : si vous souhaitez utiliser MS Excel (sous Windows), vous devez installer la bibliothèque pywin32 et utiliser l'option --with-ms-excel. Si --with-ms-excel est utilisé, xlmdeobfuscator tente d'abord de charger les fichiers xls avec MS Excel ; en cas d'échec, il utilise la bibliothèque xlrd2.
XLMMacroDeofuscator est adopté dans les projets suivants :
Veuillez me contacter si vous avez intégré XLMMacroDeofuscator dans votre projet.
Si vous avez trouvé un bogue ou souhaitez suggérer une amélioration, veuillez créer un nouveau ticket sur la page des issues.
N'hésitez pas à contribuer au projet en le forkkant et en soumettant une pull request.
Vous pouvez me joindre ([@DissectMlaware] sur Twitter) via un message direct.