mjbommar/glaurung

GitHub: mjbommar/glaurung

一个以 Rust/Python 为核心、AI 原生设计的现代逆向工程框架,旨在提供比 Ghidra 更轻量、更易集成的二进制分析能力。

Stars: 2 | Forks: 0

# Glaurung

Glaurung Logo

一个现代的逆向工程框架,旨在替代 Ghidra,并在整个分析流程中提供一流的 AI 集成。 ## 愿景 Glaurung 旨在展现如果 Ghidra 在今天构建会是什么样子:一种现代架构,充分利用 Rust 的性能与安全性、Python 的易用性,以及将 AI 代理集成到二进制分析的各个层面。不仅是 AI 辅助,更是 AI 原生——从格式检测到反编译。 ## 概览:高级对比 + 路线图 | 能力 | Glaurung (当前) | 路线图 | IDA Pro | Ghidra | Cutter/r2 | |---|---|---|---|---|---| | 核心目标 | AI 原生,自动化优先 | — | 交互式逆向工程 | 交互式逆向工程 | 交互式逆向工程 | | 平台/架构 | 主流操作系统 + 多架构 | 更广泛的兼容性 | 非常广泛 | 广泛 | 广泛 | | 反汇编 | 多架构,有界 | 架构深度/兼容性 | 是 | 是 | 是 | | 反编译 | — | 计划中 (IR → 类 C) | 是 (Hex-Rays) | 是 | 是 | | 分析深度 | 分类、符号、图形、名称/字符串 | 类型/原型 | 深度 | 深度 | 中度 | | 自动化/API | Python/Rust, JSON/JSONL | 稳定的插件 API | SDK, IDC/Python | 无头模式/Java | r2pipe/CLI | | AI 集成 | 内置证据与命名 | 类型/漏洞代理 | 有限/第三方 | 有限/第三方 | 有限/第三方 | | 规模/批处理 | 确定性预算 | — | 可脚本化,较重 | 可脚本化 | 强大 | | UI | CLI; UI 计划中 | TUI/HTML, Web | 成熟的 GUI | 成熟的 GUI | 成熟的 GUI | | 许可证/成本 | 开源 | — | 商业 | 开源 | 开源 | 备注 - “有界” 指的是确定性的、受时间/大小保护的分析,适用于 CI 和 LLM 流水线。 - 证据 是一等构件:紧凑、结构化且多格式 (plain/rich/JSON/JSONL)。 ## 当前状态 **这是早期的开发工作。** 基础架构正在构建中,分类和分析流程已可运行,但完整的反汇编、反编译和 AI 集成仍在开发中。 ### 当前可用功能 - 多格式分类 (ELF/PE/Mach-O),入口点/架构/字节序识别,安全的 VA 映射 - 有界的多架构反汇编窗口 (x86/x64, ARM64/ARM, RISC-V) - 在预算限制内的快速函数发现及调用图/CFG (callgraph/CFG) 生成 - 跨操作系统/架构的实用名称解析 (符号 + PLT/GOT/IAT) - 字符串 + IOC 检测,熵/覆盖层,相似度 (CTPH) - 为 LLM 准备的证据包 (plain/rich/JSON/JSONL) - Python API (通过 PyO3 调用 Rust 核心) ### 即将推出 - Mach-O 存根/惰性指针 → 名称解析与 ELF/PE 对齐 - ARM 深度解析:Thumb 模式;AArch64 字面量重建 (ADRP+MOVZ/MOVK) - 反编译器:IR 提升 → 类 C 输出;类型/原型提示 - 证据用户体验:源标签,更丰富的单架构注解 - UI 与插件:极简 TUI/HTML,Web UI;稳定的插件/导出 API ## 安装 ### 前置条件 - Rust 1.70+ - Python 3.11+ - [uv](https://github.com/astral-sh/uv) (推荐) 或 pip ### 从源码构建 ``` # Clone 仓库 git clone https://github.com/mjbommar/glaurung.git cd glaurung # 使用 uv 构建 Rust extension uvx maturin develop --uv # 运行测试 cargo test uv run pytest python/tests/ ``` ## 当前用法 ### CLI ``` # 基本的 binary 分析 glaurung triage samples/binaries/platforms/linux/amd64/export/native/gcc/O2/hello-gcc-O2 # 提取 symbols glaurung symbols samples/binaries/platforms/linux/amd64/export/native/gcc/O2/hello-gcc-O2 # 用于处理的 JSON 输出 glaurung triage samples/binaries/platforms/linux/amd64/export/native/gcc/O2/hello-gcc-O2 --json ``` 输出示例: ``` # 基本的 binary path: samples/binaries/platforms/linux/amd64/export/native/gcc/O2/hello-gcc-O2 size: 18248 bytes (17.8 KiB) verdicts: 1 _top_: format=ELF arch=x86_64 64-bit endianness=Little confidence=0.92 symbols: imports=30 exports=2 libs=3 flags: nx,aslr,relro,pie strings: ascii=192 utf8=0 u16le=0 u16be=0 similarity: ctph=8:4:… # 检测到可疑 imports 的可疑 binary path: samples/binaries/platforms/linux/amd64/export/native/gcc/O2/suspicious_linux-gcc-O2 symbols: imports=10 exports=0 libs=1 flags: nx,aslr,relro,pie; suspicious=3 → ptrace@GLIBC_2.2.5 (debugger detection) → mprotect@GLIBC_2.2.5 (memory protection manipulation) → execve@GLIBC_2.2.5 (process execution) # 包含嵌入式 C2 IOCs 的 Binary(由带有硬编码 IPs/domains 的 C 源码编译而成) path: samples/binaries/platforms/linux/amd64/export/native/gcc/O2/c2_demo-gcc-O2 strings: ascii=256 utf8=0 u16le=0 u16be=0; ioc: ipv4=2, domain=3, email=1, url=1 → C2 servers: 192.168.100.50, 10.0.2.15 → C2 domains: malware-c2.evil.com, beacon.command-control.badguys.org → Exfil email: stolen-data@evil-corp.com → Persistence paths: /etc/cron.d/evil-persistence, /etc/systemd/system/backdoor.service ``` ### Python API ``` from glaurung import triage # 基础分析 artifact = triage.analyze_path("samples/binaries/platforms/linux/amd64/export/native/gcc/O2/hello-gcc-O2") print(f"Format: {artifact.verdicts[0].format if artifact.verdicts else 'Unknown'}") print(f"Entropy: {artifact.entropy.overall if artifact.entropy else 0}") # 输出: # 格式:ELF # Entropy: 3.7123344999208134 # 检测可疑 symbols suspicious = triage.analyze_path("samples/binaries/platforms/linux/amd64/export/native/gcc/O2/suspicious_linux-gcc-O2") if suspicious.symbols and suspicious.symbols.suspicious_count > 0: print(f"Found {suspicious.symbols.suspicious_count} suspicious imports") # Output: Found 3 suspicious imports # 检测已编译 binaries 中的 IOCs(C2 servers,domains 等) c2_binary = triage.analyze_path("samples/binaries/platforms/linux/amd64/export/native/gcc/O2/c2_demo-gcc-O2") if c2_binary.strings and c2_binary.strings.ioc_counts: print(f"IOCs found in binary: {c2_binary.strings.ioc_counts}") # Output: IOCs found in binary: {'ipv4': 2, 'domain': 3, 'email': 1, 'url': 1, 'path_posix': 8, ...} # This binary contains hardcoded C2 server IPs (192.168.100.50, 10.0.2.15) # and malicious domains (malware-c2.evil.com, beacon.command-control.badguys.org) # 未来:完整的反汇编和反编译 # dis = glaurung.disassemble(binary) # decomp = glaurung.decompile(dis, ai_assist=True) ``` ## 架构 项目结构旨在支持完整的逆向工程流程: ``` glaurung/ ├── src/ │ ├── core/ # Data models (Binary, Function, Instruction, etc.) │ ├── triage/ # Analysis pipeline (working) │ ├── disasm/ # Disassembly engine (planned) │ ├── ir/ # Intermediate representation (planned) │ ├── decompile/ # Decompiler (planned) │ ├── ai/ # AI agent integration (planned) │ └── ui/ # User interface (planned) ├── python/ # Python bindings └── samples/ # Test binaries ``` ## 为什么不直接使用 Ghidra? Ghidra 功能强大,但已显老态: - **基于 Java**:内存消耗大,部署复杂 - **单体架构**:难以嵌入、扩展或集成 - **前 AI 时代**:没有用于分析的原生 LLM 集成 - **对批处理不友好**:以 GUI 为中心的设计 Glaurung 是为现代工作流而构建的: - **Rust 核心**:快速、安全、可嵌入 - **Python 优先的 API**:与 ML/数据科学技术栈的原生集成 - **AI 原生**:用于命名、类型推断、模式识别的代理 - **云就绪**:为分布式分析而设计 - **可编程**:API 优先,UI 其次 ## 开发 这是一个活跃的研究项目。当前的重点领域: 1. 完成反汇编引擎 2. 构建 IR 和基础反编译器 3. 集成首批用于函数识别的 AI 代理 4. 创建极简的 Web UI ### 贡献 欢迎早期贡献者!需要协助的关键领域: - 特定架构的反汇编 (ARM, MIPS, RISC-V) - 文件格式解析器 (DEX, WebAssembly, 固件格式) - AI 代理开发 (函数相似度,漏洞检测) - 测试与样本生成 ### 构建样本 ``` cd samples ./build-multiplatform.sh linux/amd64 # 在 samples/binaries/ 中生成测试 binaries ``` ## 路线图 - **阶段 1** (当前):基础 - 分类、解析、基础分析 - **阶段 2**:反汇编 - 多架构指令解码 - **阶段 3**:反编译 - IR、控制流恢复 - **阶段 4**:AI 集成 - 贯穿整个流程的代理 - **阶段 5**:协作 - 多用户,云端部署 ## 许可证 Apache License 2.0 - 详见 [LICENSE](LICENSE)。 ## 致谢 站在巨人的肩膀上: - [Ghidra](https://github.com/NationalSecurityAgency/ghidra) - 灵感来源与超越的目标 - [Radare2](https://github.com/radareorg/radare2) - 展示了开源逆向工程的无限可能 - [LIEF](https://github.com/lief-project/LIEF) - 卓越的格式解析 - [Capstone](https://github.com/capstone-engine/capstone) - 多架构反汇编 **注意**:这不是一个 Ghidra 插件或扩展。这是一个自底向上的重新实现,具有完全不同的架构和目标。
标签:Agentic AI, AI原生, DAST, Ghidra替代, Graph分析, IDA替代, LLM集成, Python, Rust, URL提取, VPS部署, Wayback Machine, 二进制分析, 二进制分析框架, 云安全运维, 云资产清单, 人工智能, 反汇编, 反编译, 可视化界面, 威胁情报, 客户端加密, 开发者工具, 开源, 恶意软件分析, 插件API, 无后门, 格式检测, 用户模式Hook绕过, 符号执行, 网络安全, 网络流量审计, 自动化分析, 跨站脚本, 软件分析, 逆向工具, 逆向工程, 隐私保护