
Extraer y desofuscar macros XLM (también conocido como Macros de Excel 4.0)
XLMMacroDeobfuscator se puede utilizar para decodificar macros XLM ofuscadas (también conocidas como macros de Excel 4.0). Utiliza un emulador XLM interno para interpretar las macros, sin ejecutar completamente el código.
Soporta los formatos xls, xlsm y xlsb.
Usa xlrd2, pyxlsb2 y su propio analizador para extraer celdas y otra información de archivos xls, xlsb y xlsm, respectivamente.
También puedes encontrar la gramática XLM en xlm-macro-lark.template
pip install XLMMacroDeobfuscator --force
o
pip install xlmmacrodeobfuscator[defusedxml] --force
pip install -U https://github.com/DissectMalware/XLMMacroDeobfuscator/archive/master.zip --force
Para desofuscar macros en documentos de Excel:
xlmdeobfuscator --file documento.xlsm
Para solo extraer macros en documentos de Excel (sin ninguna desofuscación):
xlmdeobfuscator --file documento.xlsm -x
Para obtener solamente las macros desofuscadas y sin sangría:
xlmdeobfuscator --file documento.xlsm --no-indent --output-formula-format "[[INT-FORMULA]]"
Para exportar la salida en formato JSON
xlmdeobfuscator --file documento.xlsm --export-json resultado.json
Para ver un ejemplo de salida JSON, consulte este enlace.
Para usar un archivo de configuración
xlmdeobfuscator --file documento.xlsm -c default.config
El archivo default.config debe ser un archivo JSON válido, como por ejemplo:
{
"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: falta --file
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 muestra este mensaje de ayuda y sale
-c FILE_PATH, --config-file FILE_PATH
Especifica un archivo de configuración (debe ser un archivo JSON válido)
-f FILE_PATH, --file FILE_PATH
La ruta de un archivo XLSM
-n, --noninteractive Desactiva la shell interactiva
-x, --extract-only Solo extrae celdas sin emulación
--sort-formulas Ordena las fórmulas extraídas según su dirección de celda (requiere -x)
--defined-names Extrae todos los nombres definidos
-2, --no-ms-excel [Obsoleto] No usar MS Excel para procesar archivos XLS
--with-ms-excel Usar MS Excel para procesar archivos XLS
-s, --start-with-shell
Abre una shell XLM antes de interpretar las macros en la entrada
-d DAY, --day DAY Especifica el día del mes
--output-formula-format OUTPUT_FORMULA_FORMAT
Especifica el formato para las fórmulas de salida ([[CELL-ADDR]], [[INT-FORMULA]] y [[STATUS]]
--extract-formula-format EXTRACT_FORMULA_FORMAT
Especifica el formato para las fórmulas extraídas ([[CELL-ADDR]], [[CELL-FORMULA]] y [[CELL-VALUE]]
--no-indent No mostrar sangría antes de las fórmulas
--silent No imprimir la salida
--export-json FILE_PATH
Exportar la salida a JSON
--start-point CELL_ADDR
Iniciar la interpretación desde una dirección de celda específica
-p PASSWORD, --password PASSWORD
Contraseña para descifrar el documento protegido
-o OUTPUT_LEVEL, --output-level OUTPUT_LEVEL
Establece el nivel de detalle a mostrar (0: todos los comandos, 1: comandos sin salto, 2: comandos importantes, 3: cadenas en comandos importantes)
--timeout N detener la emulación después de N segundos (0: sin interrupción, N>0: detener después de N segundos)
El siguiente ejemplo muestra cómo se puede usar XLMMacroDeobfuscator en un proyecto de Python para desofuscar 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)
Por favor, lea requirements.txt para obtener la lista de librerías Python de las que depende XLMMacroDeobfuscator.
xlmdeobfuscator se puede ejecutar en cualquier sistema operativo para extraer y desofuscar macros en archivos xls, xlsm y xlsb. No es necesario instalar MS Excel.
Nota: si desea usar MS Excel (en Windows), debe instalar la librería pywin32 y usar el modificador --with-ms-excel. Si se usa --with-ms-excel, xlmdeobfuscator primero intenta cargar los archivos xls con MS Excel; si falla, usa la librería xlrd2.
XLMMacroDeofuscator está adoptado en los siguientes proyectos:
Por favor, contácteme si ha incorporado XLMMacroDeofuscator en su proyecto.
Si encontró un error o desea sugerir una mejora, cree un nuevo issue en la página de issues.
No dude en contribuir al proyecto bifurcándolo y enviando un pull request.
Puede contactarme ([@DissectMlaware] en Twitter) a través de un mensaje directo en Twitter.