vinzabe/malware-deobfuscator

GitHub: vinzabe/malware-deobfuscator

一款面向防御侧的多阶段脚本反混淆分析器,在不执行恶意样本的前提下完成静态反混淆、IoC 提取、意图分类,并可结合 LLM 和沙箱轨迹比对来提升分析准确性。

Stars: 0 | Forks: 0

# malware-deobfuscator (`mwdeo`) 用于混淆脚本的防御性多阶段分析器(支持 PowerShell、JavaScript、VBScript、Python、Bash)。它在合成的沙箱轨迹比较器之上,融合了静态反混淆、IoC 提取、行为分类以及(可选的)LLM 分析。 - **检测器** — 语言指纹识别及 13 种混淆类型(`base64_blob`、`char_code_array`、`string_concat_spam`、`eval_wrapper`、`powershell_frombase64`、`powershell_invoke_expression`、`powershell_gzip`、`xor_loop`、`unicode_escape`、`hex_escape`、`packed_array`、`heavy_entropy_blob`、`hex_blob`)。 - **静态反混淆器** — 多层循环解包器:`[Convert]::FromBase64String('…')`(支持可选的 gzip / zlib)、`String.fromCharCode([…])`、`'a'+'b'+'c'+…`、`\xNN`、`\uNNNN`。受 `max_layers`(默认为 8)限制。绝不执行样本。 - **LLM 反混淆器**(可选) — 作为静态解析未能完全解码时的防御性后备方案。模型会生成一份纯英文摘要以及包含在 ```deob``` 围栏中的重构代码;输出内容会经过安全过滤——仍然包含 base64 blob 或 `FromBase64String(…)` 调用的重构结果将被直接丢弃。 - **IoC 提取器** — URLs、IPv4 地址、域名、电子邮件、文件路径、注册表键值、CLSIDs、互斥锁/命名对象字符串、MD5/SHA-256 哈希值。内置白名单过滤 Microsoft schema URL 和 example.* 域名;提供 `defang()` 辅助函数用于安全渲染。 - **意图分类器** — 启发式行为集合(18 种行为能力:`network_c2`、`downloader`、`persistence` ×3、`credential_dumping`、`keylog`、lateral ×2、AMSI bypass、AV disable、discovery ×2、`exfil_http`、`inject_process`、`shellcode_loader`、`ransomware_indicator`、`cryptominer`) → 主要意图(为以下之一:`downloader_dropper`、`credential_stealer`、`ransomware`、`remote_access_trojan`、`cryptominer`、`wiper`、`keylogger`、`scareware`、`lateral_mover`、`persistence_loader`、`reconnaissance`、`benign`、`unknown`)。可选的 LLM 分析师仅在其判断的意图属于有效枚举值,且在没有启发式支持的情况下不发生从 benign 到恶意的升级时,才会覆盖结果。 - **沙箱轨迹比较器** — 检查动态事件(Cuckoo、CAPE、ProcMon,统一标准化为 `TraceEvent`)是证实还是反驳了静态分析出的行为能力。会对没有网络活动的 `downloader_dropper` 意图、没有文件写入操作的 `ransomware` 意图,以及覆盖率为零的分析发出警告。 ## 安装 ``` pip install -r requirements.txt ``` ## 快速入门 ``` from mwdeo import Analyzer, SandboxTrace, TraceEvent from mwdeo.sandbox import EventKind result = Analyzer().analyze( open("sample.ps1").read(), trace=SandboxTrace(sample_sha256="...", events=[ TraceEvent(EventKind.NET_HTTP, "GET http://x/p"), TraceEvent(EventKind.FILE_WRITE, "C:\\dropper.exe"), ]), ) from mwdeo.report import Report print(Report(result).to_markdown()) ``` LLM 分析师: ``` from mwdeo.llm_client import LLMClient analyzer = Analyzer(llm=LLMClient()) ``` ## 命令行 ``` python -m mwdeo.cli analyze sample.js python -m mwdeo.cli analyze sample.ps1 --llm --format json python -m mwdeo.cli analyze - < sample.vbs --no-defang ``` ## 测试 ``` pytest tests/ # 83 mocked tests LLM_LIVE=1 pytest tests/test_llm_live.py # 5 live tests ``` ## 注意事项 - 我们**绝不**执行样本。请提交沙箱轨迹以进行动态确认。 - 静态反混淆器处理常见模式;对于新颖的自定义编码,将需要借助 LLM 分析师或手动编写解析规则。 - `IoCExtractor` 默认过滤环回 IP;如需包含它们,请传入 `IoCExtractor(include_loopback_ips=True)`。 ## 许可证 MIT
标签:AI合规, ATT&CK映射, Base64解码, Bash脚本分析, C2, DAST, DNS 反向解析, IoC提取, IPv6支持, IP 地址批量处理, JavaScript安全, LLM分析, OpenCanary, PFX证书, PowerShell分析, Python恶意代码, TLS, TTP映射, VBScript检测, 云安全监控, 代码反混淆, 大语言模型应用, 失陷标示提取, 威胁情报, 安全分析自动化, 安全防护, 应用安全, 开发者工具, 恶意脚本检测, 恶意软件分析, 意图分类, 攻击检测, 数据可视化, 无线安全, 沙箱模拟, 混淆检测, 网络安全, 脚本引擎安全, 逆向工具, 速率限制处理, 防御工具, 隐私保护, 静态分析