整合 IDA Pro 逆向、CVE 查询、静态分析(CodeQL/Semgrep)、故障根因分析、Linux 内核漏洞主动发现、二进制漏洞利用工具链
单一入口,多能力协同
漏洞分析、CVE、逆向、漏洞挖掘、二进制、漏洞利用、exploit、根因分析、故障分析、PoC、漏洞复现、静态分析、安全审计、CVE 编号查询、内核漏洞扫描、驱动安全审计
本技能由 7 个子能力聚合而成,形成从 已知漏洞查询 → 未知漏洞发现 → 二进制逆向 → 静态审计 → 漏洞利用开发 → 完整报告输出 的完整闭环。
text
用户输入
│
├─ CVE 编号 / 漏洞查询
│ ├── cve-lookup (已知 CVE 详情,多源查询)
│ └── kernel-cve-tracker(Ubuntu USN 批量追踪)
│
├─ 二进制文件(exe/dll/so/elf/macho/apk/sys)
│ ├── ida-reverse (IDA Pro 逆向分析,72 MCP 工具)
│ └── binary-exploitation-tools(二进制利用工具链)
│
├─ 源码/内核/驱动
│ ├── kernel-vuln-discover(内核漏洞主动发现)
│ └── trailofbits-security(CodeQL/Semgrep 静态审计)
│
└─ 故障/事件描述
└── internet-failure-analysis-expert(根因分析)
报告输出
子技能触发词核心功能ida-reverse分析二进制、逆向、exe/dll/soIDA Pro 反编译、72 MCP 工具、7 阶段工作流cve-lookupCVE-XXXX、漏洞查询、漏洞详情NVD/MITRE/GitHub Advisory 多源查询kernel-cve-tracker内核 CVE、Ubuntu CVEUbuntu USN 批量查询kernel-vuln-discover挖漏洞、发现漏洞、内核扫描Fuzzer、静态分析、模式扫描、PoC 生成trailofbits-securityCodeQL、Semgrep、静态审计驱动/内核漏洞静态检测binary-exploitation-tools利用工具、pwntools、ROP调试 + 利用框架 + Shellcodeinternet-failure-analysis-expert故障分析、根因分析、事件报告官方报告 + 时间线 + 改进建议
text
用户输入 CVE 编号
│
├── cve-lookup → 多源搜索 → 结构化报告
│ │
│ └── 包含:描述、CVSS、CWE、PoC、缓解/防御/修复
│
└── internet-failure-analysis-expert → 时间线 → 根因 → 改进建议
text
用户提供二进制文件(exe/so/dll/apk)
│
├── ida-reverse → 打开 → 7 阶段逆向 → 漏洞定位
│ │
│ └── 可选:binary-exploitation-tools 辅助
│
└── trailofbits-security → 静态分析 → 漏洞报告
text
用户要求扫描内核源码 / 发现新漏洞
│
├── kernel-vuln-discover
│ ├── Phase 1: 攻击面枚举(子系统入口点)
│ ├── Phase 2: CVE 模式归纳扫描(8 种已知根因模式)
│ ├── Phase 3: Fuzzing(syzkaller/trinity)
│ └── Phase 4: 静态审计(Coccinelle/semgrep)
│ └── Phase 5: PoC 生成 + 漏洞报告
│
└── kernel-cve-tracker → 已有 CVE 批量查询
text
用户提供故障描述(Facebook 宕机、阿里云故障等)
│
└── internet-failure-analysis-expert
├── 模式 A:CVE 编号
└── 模式 B:通用故障描述
├── 步骤1:获取官方报告
├── 步骤2:拆解时间线
├── 步骤3:分析导火索 + 连环故障
├── 步骤4:识别根本原因(人/组织因素)
└── 步骤5:技术改进建议
当用户提供二进制文件(exe/dll/so/elf/macho/apk/sys)时触发
powershell
# 启动 ida-pro-mcp HTTP 服务器(后台静默)
powershell -File "<skill-root>/ida-reverse/scripts/start.ps1"
# 输出:OK:72(72 个工具就绪)或 ERR:timeout
powershell
# 打开目标文件(自动处理 System32 权限问题)
powershell -File "<skill-root>/ida-reverse/scripts/open.ps1" -Path "C:\path\to\target.exe" -TimeoutSeconds 600
# 输出:
# OK:文件名:session_id (成功)
# OK:guid-sample.exe:session_id (降级到 Temp 副本)
# ERR:open_timeout_600s (超时,需手动检查)
python
# 快速摸底:函数数、字符串、段、入口点、导入分类
idapro_survey_binary(detail_level="minimal")
# 列出所有函数(分页)
idapro_list_funcs(queries={})
# 列出全局变量
idapro_list_globals(queries={})
# 统一查询:functions/globals/imports/strings/names
idapro_entity_query(kind="functions", filter={})
python
# 反编译为伪代码
idapro_decompile(addr=0x401000)
# 反汇编指定行数
idapro_disasm(addr=0x401000, max_instructions=20)
# 综合分析(伪代码+字符串+常量+调用者+被调用者+块)
idapro_analyze_function(addr=0x401000, include_asm=false)
# 函数概要指标
idapro_func_profile(queries={})
python
# 查谁引用了目标地址
idapro_xrefs_to(addrs=[0x401000])
# 高级 xref 查询(方向/类型过滤)
idapro_xref_query(addr=0x401000, direction="both")
# 子函数列表
idapro_callees(addrs=[0x401000])
# 调用图(可指定深度)
idapro_callgraph(roots=[0x401000], max_depth=3)
# 数据流追踪(前向/后向)
idapro_trace_data_flow(addr=0x401000, direction="backward", max_depth=5)
python
# 正则搜索字符串
idapro_find_regex(pattern=r"password|token|key|secret", limit=50)
# 在反汇编列表中搜文本
idapro_search_text(pattern="strcpy")
# 字节模式搜索(支持 ?? 通配符)
idapro_find_bytes(patterns=["48 8B ?? ?? ?? ?? 00"], limit=20)
# 高级搜索(立即数/字符串/引用)
idapro_find(type="immediate", targets=["0x1000"])
# 读原始字节
idapro_get_bytes(addrs=[0x401000, 0x401020])
# 读字符串
idapro_get_string(addrs=[0x402000])
# 读整数值
idapro_get_int(queries={"addrs": [0x601000], "size": 4})
# 读全局变量值
idapro_get_global_value(queries={"names": ["glibc_version"]})
# 读结构体字段值
idapro_read_struct(queries={"struct_name": "FILE", "addr": 0x601000})
# 搜索结构体
idapro_search_structs(filter={"name": "sockaddr"})
python
# 添加注释(反汇编+反编译双向同步)
idapro_set_comments(items=[{"addr": 0x401000, "text": "漏洞点:strcpy 未校验长度"}])
# 追加注释
idapro_append_comments(items=[{"addr": 0x401000, "text": " → 可利用"}])
# 批量重命名(函数/全局/局部/栈变量)
idapro_rename(batch=[{"old_name": "FUN_00401000", "new_name": "vuln_strcpy"}])
# Patch 汇编指令
idapro_patch_asm(items=[{"addr": 0x401000, "new_asm": "xor rax, rax"}])
# Patch 字节
idapro_patch(patches=[{"addr": 0x401000, "old_bytes": "48 8B 45 00", "new_bytes": "48 31 C0 90"}])
# 定义函数
idapro_define_func(items=[{"addr": 0x401000, "name": "vuln_func"}])
# 取消定义
idapro_undefine(items=[{"addr": 0x401000}])
# 将字节转为代码
idapro_define_code(items=[{"addr": 0x401050}])
# 声明 C 结构体/枚举/联合体
idapro_declare_type(decls=[{"kind": "struct", "name": "payload_hdr", "fields": [{"name": "magic", "type": "uint32_t"}, {"name": "len", "type": "int"}]}])
# 应用类型到函数/全局/局部
idapro_set_type(edits=[{"addr": 0x401000, "type": "int (*)(char*, int)"}])
# 推断类型
idapro_infer_types(addrs=[0x401000])
# 查询已声明类型
idapro_type_query(queries={"name": "payload_hdr"})
# 查看类型详情
idapro_type_inspect(queries={"name": "FILE"})
# 声明栈变量
idapro_declare_stack(items=[{"addr": 0x401000, "name": "buf", "type": "char[256]"}])
# 删除栈变量
idapro_delete_stack(items=[{"addr": 0x401000, "name": "tmp"}])
# 查看栈帧变量
idapro_stack_frame(addrs=[0x401000])
python
# 为地址生成唯一字节签名
idapro_make_signature(addrs=[0x401000])
# 为函数生成签名
idapro_make_signature_for_function(addrs=[0x401000])
# 为引用地址的代码生成签名
idapro_find_xref_signatures(addrs=[0x401000])
# 导出函数(json/C header/prototypes)
idapro_export_funcs(addrs=[0x401000], format="json")
# 进制转换(必须用这个,不要自己算!)
idapro_int_convert(inputs=[{"value": "0x41414141", "from": 16, "to": 10}])
?ext=dbg)#python
# 在 GUI IDA 实例中打开文件
idapro_open_file(file_path="C:\\path\\to\\target.exe")
python
# 列出所有 session
idapro_idalib_list()
# 获取当前上下文绑定的 session
idapro_idalib_current()
# 切换到其他 session
idapro_idalib_switch(session_id="abcd1234")
# 关闭 session
idapro_idalib_close(session_id="abcd1234")
# 保存数据库
idapro_idalib_save(path="C:\\path\\to\\save.idb")
# 检查 worker 健康状态
idapro_idalib_health(session_id="abcd1234")
# 服务器健康检查
idapro_server_health()
# 预热子系统(字符串缓存、Hex-Rays 等)
idapro_server_warmup()
# 执行 Python 代码
idapro_py_eval(code="print(ida_funcs.get_func(0x401000).flags)")
问题解决方案idalib_open schema 校验报错用 scripts/open.ps1 绕 MCP 直调 HTTP APISystem32 文件无权限open.ps1 自动复制到 Temp 再打开带自动分析长时间无响应加 -TimeoutSeconds 600,非卡死旧数据库被锁open.ps1 自动降级到 Temp 加 GUID 前缀IDA GUI 假死start.ps1 用 taskkill /F /T 杀孤儿进程树需要远程调试IDA → Debugger → Process options → 配置远程 IP
工具用途idapro_survey_binary快速概况:函数数、字符串、段、入口点、导入分类idapro_list_funcs列出函数(分页、按名称过滤)idapro_list_globals列出全局变量idapro_entity_query统一查询:functions/globals/imports/strings/names
工具用途idapro_decompile反编译为伪代码idapro_disasm反汇编(可指定最大指令数)idapro_analyze_function综合分析(伪代码+字符串+常量+调用者+被调用者+块)idapro_func_profile函数概要指标
工具用途idapro_xrefs_to查谁引用目标地址idapro_xref_query高级 xref 查询(方向/类型过滤)idapro_callees子函数列表idapro_callgraph调用图(可指定深度)idapro_trace_data_flow数据流追踪(forward/backward)
工具用途idapro_find_regex正则搜字符串idapro_search_text在反汇编列表中搜文本idapro_find_bytes字节模式搜索(支持 ?? 通配符)idapro_find高级搜索(立即数/字符串/引用)
工具用途idapro_get_bytes读原始字节idapro_get_string读字符串idapro_get_int读整数值idapro_get_global_value读全局变量值idapro_read_struct读结构体字段值idapro_search_structs搜索结构体
工具用途idapro_set_comments添加注释(反汇编+反编译双向同步)idapro_append_comments追加注释idapro_rename批量重命名(函数/全局/局部/栈变量)idapro_patch_asmPatch 汇编指令idapro_patchPatch 字节idapro_define_func定义函数idapro_undefine取消定义idapro_define_code将字节转为代码
工具用途idapro_declare_type声明 C 结构体/枚举/联合体idapro_set_type应用类型到函数/全局/局部idapro_infer_types推断类型idapro_type_query查询已声明类型idapro_type_inspect查看类型详情
工具用途idapro_stack_frame查看栈帧变量idapro_declare_stack声明栈变量idapro_delete_stack删除栈变量
工具用途idapro_make_signature为地址生成唯一字节签名idapro_make_signature_for_function为函数生成签名idapro_find_xref_signatures为引用地址的代码生成签名
工具用途idapro_open_file在 GUI IDA 实例中打开文件(需 ?ext=dbg)
工具用途idapro_idalib_list列出所有 sessionidapro_idalib_current获取当前上下文 sessionidapro_idalib_switch切换到其他 sessionidapro_idalib_close关闭 sessionidapro_idalib_save保存数据库idapro_idalib_health检查 worker 健康状态
工具用途idapro_int_convert进制转换(必须用这个,不要自己算!)idapro_export_funcs导出函数(json/C header/prototypes)idapro_py_eval在 IDA 上下文执行 Pythonidapro_server_health服务器健康检查idapro_server_warmup预热子系统(字符串缓存、Hex-Rays 等)idapro_idalib_open⚠️ 不推荐,直接用 open.ps1 脚本
bash
# 创建 CodeQL 数据库
codeql database create /path/to/db --language=cpp --source-root=/path/to/kernel/driver
# 查询特定漏洞模式
codeql database analyze /path/to/db /path/to/rules/buffer-overflow.ql --format=sarif-latest --output=results.sarif
# 常用漏洞规则
# - 缓冲区溢出:codeql query run "semmle-code-cpp/cpp buffer overflow"
# - Use-after-free:codeql query run "semmle-code-cpp/cpp too-small-buffer-size"
# - 整数溢出:codeql query run "semmle-code-cpp/cpp integer-overflow"
bash
# 扫描驱动源码
semgrep --config=rules.yaml /path/to/driver/
# 使用内置规则
semgrep --lang=c --pattern 'strcpy($BUF, $SRC)' /path/to/code/
# 输出 SARIF 格式(可集成到 CI)
semgrep --json --output=sarif.json /path/to/code/
bash
# 扫描内核源码
spatch --sp-file /path/to/rules.cocci /path/to/linux/fs/overlayfs/ --very-quiet
# 常用检测规则
# - copy_from_user 未检查返回值
# - kmalloc 大小整数溢出
# - use-after-free(fput 后再次使用)
识别高风险子系统: io_uring、 Netfilter、 SMB、 OverlayFS、 BPF、 TLS/XFRM
使用 scripts/cve-pattern-scan.sh(来自 kernel-vuln-discover)进行自动化模式扫描:
bash
# 扫描所有已知模式
~/.agents/skills/kernel-vuln-discover/scripts/cve-pattern-scan.sh /path/to/kernel-src all
# 扫描特定模式
~/.agents/skills/kernel-vuln-discover/scripts/cve-pattern-scan.sh /path/to/kernel-src io_uring_ring
工具命令说明syzkallercd ~/syzkaller && ./bin/syz-manager -config=my.cfg系统性内核 Fuzzingtrinitytrinity -l amd64 -c "io_uring_setup"系统调用 Fuzzinglibfuzzerclang -fsanitize=fuzzer target.c组件级 Fuzzing
结合 trailofbits-security 和 kernel-vuln-discover 的子系统检查表:
子系统关键检查项关键词io_uringring mmap 越界、fixed buffer 重叠io_uring_enter、 mmap.*ringNetfilternft_expr 整数溢出shift << 32、 nft_set_elemSMBpdu_length 边界错误pdu_length == data_len + headerOverlayFSupper/lower 层权限绕过ovl_rename、 ovl_path_realBPF验证器指针类型绕过check_ptr_alignment、 PTR_INVALID
输出:漏洞描述 → 根因分析 → 触发条件 → 概念性 PoC(伪代码)
工具平台核心命令特色GDB + GEFLinux ELFgdb -q ./binary``checksec/ canary/ vmmappwndbgLinux ELF./setup.sh自动显示寄存器/栈/反汇编x64dbgWindows PE图形界面图形化断点/内存查看IDA Pro跨平台start.ps1 + open.ps1Hex-Rays 反编译、72 MCP 工具radare2跨平台r2 -A ./binary命令行逆向框架gdbserver远程gdbserver --multi 0.0.0.0:23947远程调试嵌入式
工具用途关键命令pwntoolsPython exploitprocess()/ remote()/ ELF()/ ROP()ROPgadgetROP gadget 搜索--binary ./bin --only "pop|ret"roppergadget + chain--file ./bin --search "pop rdi"one_gadgetlibc one-shot/lib/x86_64-linux-gnu/libc.so.6msfvenomshellcode-p linux/x64/shell_reverse_tcp
工具目标特点syzkallerLinux 内核系统性 Fuzzing,覆盖所有子系统trinityLinux 系统调用多架构支持,快速生成用例libfuzzerLLVM 组件集成在编译器中,cov 导向AFL用户态程序遗传算法,fork server
约束说明概念性 PoC仅伪代码 + 触发序列,不生成可执行攻击代码信息来源至少 3 个不同来源,标注可信度报告路径CVE 报告 → CVE-Reports/免责声明PoC 部分必须添加免责说明不执行 PoC报告生成过程绝不运行任何 PoC 代码中文优先中英文混合场景优先中文输出
scripts/open.ps1 而非直接调用 idalib_open