| 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
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
Adjacent Skills
| 技能 | 何时切换 |
|---|
binary-reverse | ELF triage 完成后需要:反汇编模式识别、密码学算法定位、反分析绕过、Go/Rust/C++ 语言专项分析 |
linux-pwn | 安全态势评估完成后需要:漏洞利用开发、堆利用、ROP 链、格式化字符串攻击、内核提权 |
Workflow Engine
Phase 0: Intake
- 保存原始样本副本到
case/00-intake/
- 计算哈希:
md5sum / sha1sum / sha256sum
- 创建案例目录:
case/{01-triage,02-strings,03-static,04-decoding,05-config,06-extracted,07-stages,09-reports,10-iocs}
- 初始化
case/AGENTS.md
Phase 1: ELF Triage
加载 references/elf-triage.md 获取完整命令序列和输出解析模板。
核心步骤:
file → 架构、端序、链接方式、stripped 状态
checksec → RELRO / Canary / NX / PIE / FORTIFY / RPATH
readelf -h → ELF header (Type/Entry/PH/SH)
readelf -l → Program Headers (GNU_STACK/GNU_RELRO/TLS/LOAD)
readelf -d → Dynamic Section (NEEDED/BIND_NOW/RPATH/RUNPATH)
ldd / lddtree → 库依赖分析
readelf -s → Symbol Table (stripped 判定)
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。
核心步骤:
objdump -d -M intel → 反汇编全部代码段
- Stripped: 使用 radare2
aaa; afl heuristic 函数识别
- Non-stripped: 基于符号表定位关键函数 + 交叉引用追踪
- 敏感函数调用检测
- 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
- 聊天只放结论: 不粘贴冗长的命令输出
- 输出落盘: 反汇编、strings、日志写入
case/,用 rg/head/tail 检索
- 两击失败即转向: 同一分支两次失败后记录 blocker,切换方法
- 脚本持久化: 重复使用的逻辑写入
case/04-decoding/
Output Template
## ELF 分析结果: <sample_name>
### 基本信息
- 架构: <arch> | 端序: <endian> | 链接: <dynamic/static>
- Stripped: <yes/no> | 加壳: <yes/no/type>
### 安全态势
| RELRO | Canary | NX | PIE | seccomp | FORTIFY |
|-------|--------|----|-----|---------|---------|
### 关键发现
- ...
### 进一步分析建议
- 建议切换到: `binary-reverse` / `linux-pwn`