pwnwriter/seg

GitHub: pwnwriter/seg

一条命令完成 ELF 二进制侦察并生成结构化报告,自动检测危险函数、安全保护机制并建议利用策略,专为安全研究者和 AI 智能体设计。

Stars: 12 | Forks: 0

# [`seg`](https://github.com/pwnwriter/seg) `分析。理解。利用二进制文件` || [`seg`](https://github.com/pwnwriter/seg/),  一个只需一条命令即可为您提供**可操作的二进制情报**的 CLI 工具。将它指向任何 ELF 二进制文件,即可获得一份完整的侦察报告——保护机制、危险函数、带有 PLT/GOT 地址的符号、反汇编亮点、libc 解析以及建议的利用策略。专为 [`CTF 选手`](https://en.wikipedia.org/wiki/Capture_the_flag_(cybersecurity)、[`渗透测试人员`](https://en.wikipedia.org/wiki/Penetration_test)和 [`AI 智能体`](https://en.wikipedia.org/wiki/Intelligent_agent)打造。 不再需要运行 7 种工具并手动交叉比对输出。一条命令。掌握全貌。🦀

GitHub Release Crate Release MIT LICENSE [![ko-fi](https://img.shields.io/badge/support-pwnwriter%20-pink?logo=kofi&logoColor=white)](https://ko-fi.com/pwnwriter) ![-----------------------------------------------------](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/6d87f46c77211627.png) ## 目录 * [`功能`](#features) * [`安装`](#installation) * [`用法`](#usage) * [`分析`](#usage-analyze) * [`调用`](#usage-invoke) * [`钩取`](#usage-hook) * [`报告部分`](#report-sections) * [`工作原理`](#tools-used) * [`贡献`](#contribution) * [`支持`](#support) * [`另请参阅`](#see) * [`许可证`](#license) ![-----------------------------------------------------](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/6d87f46c77211627.png) ## 功能 - **单条命令侦察**:运行 `seg analyze ./binary` 即可获取所有信息——保护机制、符号、字符串、反汇编、利用策略。 - **双重输出**:`--markdown` 供人类阅读,`--json` 供 AI 智能体和自动化流水线使用。 - **危险函数检测**:标记 `gets`、`strcpy`、`system`、`printf` 及其他 17 种风险函数及其调用位置。 - **利用策略**:根据分析结果自动建议 ret2libc、ret2win、格式化字符串、shellcode、ROP 或堆漏洞利用。 - **Libc 解析**:通过 `ldd` 提取本地 libc,并查询 [libc.rip](https://libc.rip) 以匹配远程 libc 及其可用偏移量(`system`、`str_bin_sh` 等)。 - **反汇编亮点**:提取 `main`、`_start` 以及名称可疑的函数(`vuln`、`win`、`backdoor`、`shell` 等)。 - **字符串分类**:分离出 shell 命令、格式化字符串、文件路径、URL 和可疑字符串。 - **函数调用**:使用 `dlopen`/`dlsym`/`libffi` 在运行时调用共享库中的导出函数,或使用 `ptrace` 通过地址调用函数。 - **函数钩取**:使用通过自动生成的 C 钩子构建的 `LD_PRELOAD` (Linux) 或 `DYLD_INSERT_LIBRARIES` (macOS) 来钩取 libc/导入的函数。 - **可移植**:使用 Rust 编写。封装了您已有的标准 Linux 工具。 ## 待办事项 (请帮忙) - [x] `seg invoke`:使用 `dlopen`、`dlsym` 和 `libffi` 调用共享库中的导出函数。 - [x] `seg invoke --addr`:使用调试器辅助执行,通过地址调用 ELF 二进制文件内的函数。 - [x] `seg hook`:使用 `LD_PRELOAD` 钩取 libc/导入的函数。 - [ ] `seg hook --frida`:后续将支持使用 Frida 进行运行时钩取。 参考资料:https://youtu.be/0o8Ex8mXigU?si=Qq60LRr5jUB_nnwR ## 安装

🌼 源码   ``` git clone --depth=1 https://github.com/pwnwriter/seg --branch=main cd seg cargo build --release ``` 二进制文件将位于 `target/release/seg`。将其移动到您的 `$PATH` 中。
🎠 Cargo   ``` cargo install seg ```
❄️ Nix   ``` nix run github:pwnwriter/seg ```
### 系统要求 `seg` 封装了这些标准的 Linux 工具(大多数已预安装): | 工具 | 软件包 | 用途 | |---|---|---| | `file` | coreutils | 二进制类型检测 | | `stat` | coreutils | 文件元数据 | | `strings` | binutils | 字符串提取 | | `readelf` | binutils | ELF 头、节、段、符号 | | `objdump` | binutils | 反汇编,PLT/GOT 解析 | | `ldd` | glibc | 链接库检测 | | `checksec` | checksec | 安全保护机制 | | `cc` | gcc/clang | 编译钩取库 (`seg hook`) | | `libffi` | libffi-dev | FFI 调用约定 (`seg invoke`) | 缺少工具不会导致 `seg` 崩溃——它们会优雅降级,并报告无法收集的内容。 ![-----------------------------------------------------](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/6d87f46c77211627.png) ## 用法 ``` ╔═╝╔═╝╔═╝ ══║╔═╝║ ║ ══╝══╝══╝ v0.1.0 Analyze. Understand. Exploit binaries @pwnwriter/seg ``` ### 分析 -
Markdown 报告输出到终端   seg analyze ./vuln --markdown
-
Markdown 报告输出到文件   seg analyze ./vuln --markdown report.md
-
JSON 报告输出到终端   seg analyze ./vuln --json
-
JSON 报告输出到文件   seg analyze ./vuln --json report.json
-
同时输出两种格式   seg analyze ./vuln --markdown report.md --json report.json
-
短别名   seg ana ./vuln --json seg analy ./vuln --markdown
-
通过管道将 JSON 传递给 jq   seg analyze ./vuln --json | jq '.strategy' seg analyze ./vuln --json | jq '.dangerous_functions' seg analyze ./vuln --json | jq '.exploitation_hints'
### 调用 -
调用共享库中的函数   seg invoke ./libmath.so add --ret i32 -- i32:2 i32:3
-
调用返回字符串的函数   seg invoke ./libgreet.so greet --ret string
-
通过地址调用函数 (Linux, ptrace)   seg invoke ./vuln --addr 0x401234 --ret i32 -- i32:42
### 钩取 -
记录函数调用日志   seg hook ./vuln puts --action log
-
用自定义函数替换原函数   seg hook ./vuln rand --action replace --replace-lib ./fake_rand.so
-
向目标二进制文件传递参数   seg hook ./vuln gets --action log -- AAAAAAAAAA
![-----------------------------------------------------](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/6d87f46c77211627.png) ## 报告部分
📊 查看报告部分   | # | 部分 | 描述 | |---|---|---| | 1 | Summary (摘要) | 二进制文件路径、类型、架构、位数、字节序 | | 2 | Security Protections (安全保护) | PIE, NX, Canary, RELRO, Fortify | | 3 | File Metadata (文件元数据) | 大小、权限、所有者、SHA256 | | 4 | ELF Headers (ELF 头) | 入口点、机器类型、ABI | | 5 | Program Segments (程序段) | LOAD、INTERP 等及其权限 | | 6 | Sections (节) | .text、.plt、.got、.bss 等 | | 7 | Linked Libraries (链接库) | 来自 `ldd` 的共享库信息 | | 8 | Dynamic Entries (动态条目) | NEEDED、INIT、FINI 等 | | 9 | Imported Functions (导入函数) | 名称、库、PLT 地址、GOT 地址 | | 10 | Exported Symbols (导出符号) | 名称、地址、类型 | | 11 | Interesting Strings (有趣的字符串) | Shell、格式化字符串、路径、URL、可疑内容 | | 12 | Disassembly Highlights (反汇编亮点) | 入口点、main 函数、可疑函数 | | 13 | Dangerous Functions (危险函数) | gets、strcpy、system、printf 等及其风险和位置 | | 14 | Exploitation Hints (利用提示) | 缓冲区溢出、格式化字符串、ret2libc、ROP | | 15 | Libc Information (Libc 信息) | 本地 libc + libc.rip 匹配 | | 16 | Suggested Strategy (建议策略) | 最可能的利用路径及操作步骤 | | 17 | AI Agent Summary (AI 智能体摘要) | 用于自动化的一句话摘要 | | 18 | Raw Tool Outputs (原始工具输出) | 所有工具的未处理输出 |
![-----------------------------------------------------](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/6d87f46c77211627.png) ## 工作原理 `seg` 是一个**封装器和分析器**——它运行标准的二进制分析工具,解析它们的输出,交叉比对结果,并生成结构化的情报: ``` Binary ──→ file, stat, readelf, objdump, strings, ldd, checksec │ ▼ Parse & Cross-reference │ ▼ Dangerous functions + Exploitation hints + Strategy │ ▼ Markdown (human) / JSON (machine) ``` JSON 输出旨在直接供 AI 智能体、漏洞利用脚本或自动化流水线使用。每一个地址、每一个符号、每一种保护机制状态都是结构化且可查询的。 ![-----------------------------------------------------](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/6d87f46c77211627.png) ## 贡献 欢迎贡献!您可以通过 [issues](https://github.com/pwnwriter/seg/issues) 或 [pull requests](https://github.com/pwnwriter/seg/pulls) 建议功能、报告错误、修复问题。非常感谢您在代码、文档方面的帮助,以及向更多人推荐 `seg`! ### 构建测试二进制文件 ``` # 编译示例漏洞二进制文件以供测试 ./tests/compile.sh # 针对它们运行 seg seg analyze ./tests/bins/bof_basic --markdown seg analyze ./tests/bins/fmt_string --json seg analyze ./tests/bins/ret2libc --json | jq '.strategy' seg analyze ./tests/bins/heap_uaf --json | jq '.dangerous_functions' ``` ## 另请参阅 - [`Haylxon`](https://github.com/pwnwriter/haylxon) :- 一款用于从终端抓取网页截图的极速工具 - [`Kanha`](https://github.com/pwnwriter/kanha) :- 一个用 Rust 编写的 Web 应用渗透测试套件 - [`checksec`](https://github.com/slimm609/checksec.sh) :- 用于检查二进制文件安全属性的 Bash 脚本 - [`pwntools`](https://github.com/Gallopsled/pwntools) :- CTF 框架和漏洞利用开发库 - [`binsider`](https://github.com/orhun/binsider) :- 像老板一样分析 ELF 二进制文件 😼🕵️‍♂️ ## 许可证 根据 [**`MIT LICENSE`**](/LICENSE) 授权

Copyright © 2026 - present pwnwriter me

标签:Crates.io, CTF工具, DAST, DNS 解析, ELF文件, PLT/GOT, PWN, Rust, Wayback Machine, 二进制分析, 云安全运维, 云资产清单, 人工智能, 内存保护机制, 反汇编, 可视化界面, 恶意软件分析, 漏洞搜索, 用户模式Hook绕过, 符号解析, 网络流量审计, 自动化安全报告, 逆向工程, 通知系统