- name
- elf-analyzer
- description
- Linux ELF 二进制格式深度分析。覆盖 ELF 结构解析(header/program/section)、 安全特征评估(RELRO/Canary/NX/PIE/seccomp)、静态反汇编、动态调试、加壳检测与脱壳。 当用户提供 ELF/.so 文件并请求分析、triage、安全评估时触发。
- allowed-tools
- Bash, Read, Write, Glob, Grep, WebFetch, WebSearch
- trust-level
- L1
# ELF Analyzer — ELF 格式深度分析
Linux ELF 二进制文件的格式分析专项技能。采用六阶段工作流 + 条件路由架构,
从取样到安全态势报告的完整链路。聚焦于 ELF 结构本身的分析,而非漏洞利用。
## Safety Warning
> **Warning**: 二进制分析仅应在隔离实验环境或一次性 VM 中进行。
> 切勿在个人设备或生产服务器上执行动态分析。
> 执行动态分析(Phase 3)前必须获得用户明确授权。
## Trigger Conditions
- 提供了 ELF 文件、.so 共享库的路径
- 请求分析/triage 某个 Linux 二进制
- 询问 ELF 结构、安全特征、加壳检测相关问题
- 作为其他技能(linux-pwn、binary-reverse)的前置分析步骤
## Tool Discovery
```bash
command -v file readelf objdump nm strings xxd hexdump python3 checksec \
radare2 rabin2 r2 gdb strace ltrace objcopy upx \
analyzeHeadless capa \
ldd lddtree scanelf execstack dumpelf eu-readelf 2>/dev/null | sort
# 关键后备链
# readelf 不可用 → python3 -c "import struct; ..." 手动解析
# objdump 不可用 → radare2 → llvm-objdump → python3 capstone
# checksec 不可用 → readelf -l (GNU_STACK) + readelf -d (BIND_NOW)
# ldd 不可用(或不安全) → readelf -d | grep NEEDED
# Ghidra 不可用 → radare2 + r2ghidra → objdump + 手工分析
```
## Adjacent Skills
| 技能 | 何时切换 |
| ---------------- | ------------------------------------------------------------------------------------------- |
| `binary-reverse` | ELF triage 完成后需要:反汇编模式识别、密码学算法定位、反分析绕过、Go/Rust/C++ 语言专项分析 |
| `linux-pwn` | 安全态势评估完成后需要:漏洞利用开发、堆利用、ROP 链、格式化字符串攻击、内核提权 |
## Workflow Engine
### Phase 0: Intake
1. 保存原始样本副本到 `case/00-intake/`
2. 计算哈希: `md5sum` / `sha1sum` / `sha256sum`
3. 创建案例目录: `case/{01-triage,02-strings,03-static,04-decoding,05-config,06-extracted,07-stages,09-reports,10-iocs}`
4. 初始化 `case/AGENTS.md`
### Phase 1: ELF Triage
**加载 `references/elf-triage.md`** 获取完整命令序列和输出解析模板。
核心步骤:
1. `file` → 架构、端序、链接方式、stripped 状态
2. `checksec` → RELRO / Canary / NX / PIE / FORTIFY / RPATH
3. `readelf -h` → ELF header (Type/Entry/PH/SH)
4. `readelf -l` → Program Headers (GNU_STACK/GNU_RELRO/TLS/LOAD)
5. `readelf -d` → Dynamic Section (NEEDED/BIND_NOW/RPATH/RUNPATH)
6. `ldd` / `lddtree` → 库依赖分析
7. `readelf -s` → Symbol Table (stripped 判定)
8. `strings` + 模式搜索 → URL/IP/路径/敏感关键字/编译器指纹
**路由规则** — 根据 triage 结果自动加载后续 reference:
| 发现 | 行动 |
| ----------------------------- | ---------------------------------------------------- |
| `stripped` | 加载 `references/static-analysis.md` (stripped 策略) |
| `Full RELRO` | 加载 `references/elf-security.md` |
| `UPX/加壳标记` | 加载 `references/unpacking.md`,优先脱壳 |
| `加密字符串 (高熵)` | 建议切换到 `binary-reverse` (密码学算法定位) |
| `反调试引用 (ptrace/seccomp)` | 建议切换到 `binary-reverse` (反分析绕过) |
| `可疑漏洞迹象` | 建议切换到 `linux-pwn` (漏洞利用) |
### Phase 2: Static Analysis
**加载 `references/static-analysis.md`。** 如需要反汇编模式解读,建议切换到 `binary-reverse`。
核心步骤:
1. `objdump -d -M intel` → 反汇编全部代码段
2. **Stripped**: 使用 radare2 `aaa; afl` heuristic 函数识别
3. **Non-stripped**: 基于符号表定位关键函数 + 交叉引用追踪
4. 敏感函数调用检测
5. Ghidra/radare2 深度分析(如可用)
### Phase 3: Dynamic Analysis
**仅在用户明确授权且环境隔离后执行。加载 `references/dynamic-analysis.md`。**
### Phase 4: Security Assessment
**加载 `references/elf-security.md`。** 评估安全缓解措施组合及可利用性评分 (0-10)。
### Phase 5: Report
更新 `case/REPORT.md` 和 `case/AGENTS.md`,输出:
- 案例摘要 + 样本清单(含哈希)
- 安全态势总结
- 关键发现(解码/C2/持久化/反分析)
- IOC 清单
- 进一步分析建议(推荐切换的相邻技能)
## Reference Loading Guide
| 场景 | 加载的 Reference 文件 |
| --------------------------- | -------------------------------- |
| 任何 ELF 分析的起点 | `references/elf-triage.md` |
| 理解 ELF 结构细节 | `references/elf-headers.md` |
| 动态链接/GOT/PLT/LD_PRELOAD | `references/elf-dynamic.md` |
| 安全特征分析/漏洞评估 | `references/elf-security.md` |
| Ghidra/radare2/objdump 使用 | `references/static-analysis.md` |
| GDB/strace/Frida 调试 | `references/dynamic-analysis.md` |
| 加壳检测与脱壳 | `references/unpacking.md` |
## Token Budget
1. **聊天只放结论**: 不粘贴冗长的命令输出
2. **输出落盘**: 反汇编、strings、日志写入 `case/`,用 `rg`/`head`/`tail` 检索
3. **两击失败即转向**: 同一分支两次失败后记录 blocker,切换方法
4. **脚本持久化**: 重复使用的逻辑写入 `case/04-decoding/`
## Output Template
```text
## ELF 分析结果: <sample_name>
### 基本信息
- 架构: <arch> | 端序: <endian> | 链接: <dynamic/static>
- Stripped: <yes/no> | 加壳: <yes/no/type>
### 安全态势
| RELRO | Canary | NX | PIE | seccomp | FORTIFY |
|-------|--------|----|-----|---------|---------|
### 关键发现
- ...
### 进一步分析建议
- 建议切换到: `binary-reverse` / `linux-pwn`
```
View on GitHub