XLMMacroDeobfuscator

XLMMacroDeobfuscator 可用于解码混淆的 XLM 宏(也称为 Excel 4.0 宏)。它利用内部 XLM 仿真器来解释宏,而无需完全执行代码。
它支持 xls、xlsm 和 xlsb 格式。
它使用xlrd2pyxlsb2和它自己的解析器分别从 xls、xlsb 和 xlsm 文件中提取单元格和其他信息。
您还可以在xlm-macro-lark.template中找到 XLM 语法

安装模拟器

  1. 使用 pip 安装

    1. pip install XLMMacroDeobfuscator --force

  2. 安装最新的开发

    1. pip install -U https://github.com/DissectMalware/XLMMacroDeobfuscator/archive/master.zip --force

    运行

    要对 Excel 文档中的宏进行去混淆处理

    1. xlmdeobfuscator --file document.xlsm

    仅提取 Excel 文档中的宏(不进行任何反混淆)

    1. xlmdeobfuscator --file document.xlsm -x

    只获取去混淆的宏并且没有任何缩进

    1. xlmdeobfuscator --file document.xlsm --no-indent --output-formula-format "[[INT-FORMULA]]"

    以 JSON 格式导出输出

    1. xlmdeobfuscator --file document.xlsm --export-json result.json

    要查看示例 JSON 输出,请查看此链接

    使用配置文件

    1. xlmdeobfuscator --file document.xlsm -c default.config

    default.config 文件必须是有效的 json 文件,例如:

    1. {
    2. "no-indent": true,
    3. "output-formula-format": "[[CELL-ADDR]] [[INT-FORMULA]]",
    4. "non-interactive": true,
    5. "output-level": 1
    6. }

    命令行

    ```shell

    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)

  1. <a name="YvTZm"></a>
  2. ### 中文命令参数
  3. ```json
  4. usage: deobfuscator.py [-h] [-c FILE_PATH] [-f FILE_PATH] [-n] [-x]
  5. [--sort-formulas] [--defined-names] [-2]
  6. [--with-ms-excel] [-s] [-d DAY]
  7. [--output-formula-format OUTPUT_FORMULA_FORMAT]
  8. [--extract-formula-format EXTRACT_FORMULA_FORMAT]
  9. [--no-indent] [--silent] [--export-json FILE_PATH]
  10. [--start-point CELL_ADDR] [-p PASSWORD]
  11. [-o OUTPUT_LEVEL] [--timeout N]
  12. 可选参数:
  13. -h, --help show this help message and exit
  14. -c FILE_PATH, --config-file FILE_PATH
  15. 指定一个配置文件(必须是一个有效的JSON文件)
  16. -f FILE_PATH, --file FILE_PATH
  17. XLSM文件的路径
  18. -n, --noninteractive 禁用交互式shell
  19. -x, --extract-only 仅提取单元格,不进行任何仿真
  20. --sort-formulas 根据计算单元地址对提取的公式进行排序
  21. (requires -x)
  22. --defined-names 提取所有已定义的名称
  23. -2, --no-ms-excel [已弃用]不要使用MS Excel处理XLS文件
  24. --with-ms-excel 使用MS Excel处理XLS文件
  25. -s, --start-with-shell
  26. 在解释输入中的宏之前,打开XLM shell
  27. -d DAY, --day DAY 指定月份中的日期
  28. --output-formula-format
  29. 指定输出公式的格式([[CELL-ADDR]],
  30. [[INT-FORMULA]], and [[STATUS]]
  31. --extract-formula-format 指定提取公式的格式[[CELL-
  32. ADDR]], [[CELL-FORMULA]], and [[CELL-VALUE]]
  33. --no-indent 公式前不显示缩进
  34. --silent 不打印输出
  35. --export-json FILE_PATH
  36. 不打印输出
  37. --start-point CELL_ADDR
  38. 不打印输出
  39. -p PASSWORD, --password PASSWORD
  40. 不打印输出
  41. -o OUTPUT_LEVEL, --output-level OUTPUT_LEVEL
  42. 设置显示的详细信息级别(
  43. 0:所有命令
  44. 1:表示命令no jump
  45. 2:表示重要命令
  46. 3:表示重要命令中包含字符串)
  47. --timeout N N秒后停止仿真(0:非中断N>0: N秒后停止仿真)

Library

以下示例显示了如何在 python 项目中使用 XLMMacroDeobfuscator 来对 XLM 宏进行反混淆:

  1. from XLMMacroDeobfuscator.deobfuscator import process_file
  2. result = process_file(file='path/to/an/excel/file',
  3. noninteractive= True,
  4. noindent= True,
  5. output_formula_format='[[CELL-ADDR]], [[INT-FORMULA]]',
  6. return_deobfuscated= True,
  7. timeout= 30)
  8. for record in result:
  9. print(record)

注意:当您将 xlmdeofuscator 用作库时,不会显示 xlmdeofuscator 徽标。

Requirements

请阅读 requirements.txt 以获取 XLMMacroDeobfuscator 所依赖的 python 库列表。
xlmdeobfuscator 可以在任何操作系统上执行,以提取和反混淆 xls、xlsm 和 xlsb 文件中的宏。您不需要安装 MS Excel。
注意:如果您想使用 MS Excel(在 Windows 上),您需要安装 pywin32 库并使用 —with-ms-excel 开关。如果使用 —with-ms-excel,xlmdeobfuscator 首先会尝试使用 MS Excel 加载 xls 文件,如果失败则使用xlrd2 library