AI (XX文件)逆向挖洞 思路手法 下半篇

目录

XX文件分析步骤

一条流水线:

这条流水线的四个核心原则:

工作流翻译成一句话:

[第一层:XX文件分析 ------ AI 如何描述 exe/dll/sys 的分析](#第一层:XX文件分析 —— AI 如何描述 exe/dll/sys 的分析)

[1.1 为什么从文件目录开始](#1.1 为什么从文件目录开始)

[1.2 步骤详解](#1.2 步骤详解)

[1.3 三类文件的分析描述差异(重点)](#1.3 三类文件的分析描述差异(重点))

[exe ------ 问"通讯与权限"](#exe —— 问"通讯与权限")

[dll ------ 问"谁加载它、导出什么"](#dll —— 问"谁加载它、导出什么")

[sys ------ 问"四个入口"(内核攻击面四要素)](#sys —— 问"四个入口"(内核攻击面四要素))

[1.5 XX实战案例还原(截图4/5 + 截图2/3 结论)](#1.5 XX实战案例还原(截图4/5 + 截图2/3 结论))

[第二层:静态逆向 -- IDA 无头批处理 + AI Agent 自动化](#第二层:静态逆向 -- IDA 无头批处理 + AI Agent 自动化)

[2.1 为什么"IDA 不需要 MCP"](#2.1 为什么"IDA 不需要 MCP")

[2.2 必须告诉 Agent 什么](#2.2 必须告诉 Agent 什么)

[2.3 提示词模板](#2.3 提示词模板)

[2.6 XX实战案例:sysdiag.sys 结构层结论](#2.6 XX实战案例:sysdiag.sys 结构层结论)

[第三层:动态调试 ------ WinDbg 命令行驱动](#第三层:动态调试 —— WinDbg 命令行驱动)

第四层:功能源码级分析与深度漏洞挖掘


XX文件分析步骤

一条流水线:

复制代码
  第1层 文件层   右键VSCode打开目标目录 → 枚举exe/dll/sys → 情报搜索       
                           产出:功能点清单 + 攻击面排序                    
                          ▼                                              
  第2层 结构层   告诉Agent IDA路径 → 无头批量分析 → 驱动入口/设备/分发器     
                           产出:模块表、分发路由图、设备对象清单            
                          ▼                                              
  第3层 功能层   按IOCTL通讯码逐个分发器深度反编译 → 恢复功能语义            
                           产出:每个IOCTL码的功能说明书(≈源码)           
                          ▼                                              
  第4层 数据流层 交叉引用追踪:信任字段写入者/魔数校验者/缓冲区生命周期       
                           产出:信任边界图 + 校验覆盖度审计                 
                          ▼                                              
  第5层 漏洞层   校验缺失/TOCTOU/MDL竞争/认证弱点 → 漏洞假设                
                           产出:漏洞假设清单(证据链+触发路径)            
                          ▼                                              
  第6层 验证层   WinDbg动态断点验证 → 确认或推翻假设                        
                           产出:确认的漏洞/逻辑缺陷                        
                          ▼                                              
  第7层 应用层   检测逻辑地图 → 免杀规则分析 / 漏洞报告 / 利用评估           

这条流水线的四个核心原则:

  • 分层递进:每一层的产出是下一层的输入。

    • 文件层找目标,结构层找入口,功能层找语义,数据流层找边界,漏洞层找缺陷。

    • 永远不做"跳层分析"(一上来就逐函数硬啃)。

  • 中间产物全部落盘:IDA 数据库(.i64)、每轮分析报告(.md/.txt)、脚本全部留在固定目录。

    • Agent 每轮只读上一轮产出,上下文可以跨轮次、跨会话复用------

    • 这就是为什么"9 轮无头分析"可行:不是 9 个孤立提问,而是 9 个接力赛。

  • 以通讯码为索引

    • IOCTL 码是功能的目录。拿到目录,就能按条目逐项深挖,不漏不重。
  • 每个结论必须可验证

    • 静态结论(代码路径)→ 动态验证(断点观测)→ 才进入下一步。防 AI 幻觉。

工作流翻译成一句话

先用 AI 摸清"目标是谁、有哪些文件、每个文件干什么",再用 AI 驱动 IDA/WinDbg 把驱动还原到源码级,然后以 IOCTL 通讯码为目录逐项审计功能逻辑,找出校验缺陷与逻辑漏洞,最后把逆向成果映射回"哪个模块检查什么行为",形成检测规则与绕过思路的分析。


第一层:XX文件分析 ------ AI 如何描述 exe/dll/sys 的分析

1.1 为什么从文件目录开始

安全产品的完整攻击面 = 用户态组件(exe/dll)× 内核组件(sys)× 通讯接口(设备/管道/回调)。

  1. 文件目录是攻击面枚举的最快入口:看到文件清单,就能推断产品架构;看到驱动清单,就能锁定内核攻击面。
  2. XX的安装目录 Sysdiag\就是一个标准样本:bin\(驱动与核心二进制)、LICENSE.*、uninst.exe、VERSION。

1.2 步骤详解

Step 1 ------ 收集与枚举

  • 右键目标目录 → "打开文件夹" 进入 VSCode(让 Agent 获得整个目录的读写视角);

  • 或者直接把绝对路径喂给 Agent,例如截图里的 ls -la 'f:/An/Huorong/Sysdiag/';

  • 让 Agent 递归枚举:所有 .sys 的路径、所有 .exe/.dll 的路径、文件大小与时间戳(时间戳能反推哪个组件随哪个版本更新,指向活跃的攻击面)。

Step 2 ------ 逐文件识别功能("分析或上网搜索当前所有文件中的 sys 驱动的功能")

对每个文件,Agent 做三件事:静态识别 + 情报搜索 + 交叉验证

  • 静态识别:读 PE 头、版本资源(CompanyName/ProductName/FileDescription------XX的文件版本资源里写得很清楚)、导入表(驱动导入了哪些 ntoskrnl API,能直接猜出功能类别);

  • 情报搜索:网上搜索文件名(看雪论坛、GitHub、CVE 库、MSDN)。XX这种国民级产品,公开讨论极多,很多驱动名、设备名、已知问题都能搜到;

  • 交叉验证:把静态结论与情报结论对照,标注"已确认/待验证"。

Step 3 ------ 攻击面排序

排序规则(从上到下优先级递减):

|-----|----------------------------------|--------------------------|
| 优先级 | 文件类型 | 理由 |
| P0 | .sys 驱动 | 内核权限、IOCTL 攻击面、自我保护机制的核心 |
| P1 | 核心服务 exe(HipsDaemon/TrafficProt) | 与内核的通讯通道、策略下发方、事件消费方 |
| P2 | 界面 exe(HipsMain/HipsTray) | 特权操作入口(往往有 IPC 到服务进程) |
| P3 | 功能 dll | 依赖注入点、导出函数攻击面 |

Step 4 ------ 产出功能点清单

对每个 P0/P1 文件输出一行结论:文件名 → 角色 → 通讯接口(设备名/管道名/回调) → 分析优先级 → 依据(版本资源/导入表/网上资料)。

1.3 三类文件的分析描述差异(重点)

  • exe / dll / sys 三类文件,问 AI 的角度完全不同,这是很多人描述不好导致分析浅的根因:
exe ------ 问"通讯与权限"
复制代码
1. 服务注册:sc query / 注册表 HKLM\SYSTEM\CurrentControlSet\Services 下注册了哪些服务?
   启动类型?以什么账户运行(LocalSystem=高价值目标)?
2. 通讯接口:它打开什么设备(\Device\xxx)、命名管道、socket?------ 这决定它与哪个驱动/组件对话
3. 角色推断:名称 + 版本资源 + 行为推断(HipsDaemon=守护+策略,TrafficProt=流量监控)
4. 高价值问题:它下发的策略/配置是什么格式?------ 它是内核的"指挥官",逆向它能得到内核接口的语义字典
dll ------ 问"谁加载它、导出什么"
复制代码
1. 导出函数清单 + 参数形态(IDA 静态,或 dumpbin /exports)
2. 加载者:谁 LoadLibrary 它(交叉引用);是否被注入(dll 劫持/白加黑面)
3. 角色:界面插件?通信封装(供 exe 调用驱动)?扫描引擎?
4. 高价值问题:它封装了哪些 IOCTL 调用?------ dll 经常是用户态调用驱动接口的薄封装,
   逆向 dll 能直接拿到 IOCTL 码 + 输入输出结构体的语义(比从内核侧猜快得多)
sys ------ 问"四个入口"(内核攻击面四要素)
复制代码
1. 入口点 DriverEntry:创建了什么设备(IoCreateDevice)、符号链接(IoCreateSymbolicLink)、
   注册了什么分发器(MajorFunction)、注册了什么回调(Ob/Ps/Cm/Filter/WFP)
2. 分发器:DEVICE_CONTROL 是主攻面 ------ IOCTL 码全集
3. 回调:进程/线程/镜像回调、对象回调(自我保护)、minifilter、WFP ------ 检测逻辑的钩子点
4. 设备可达性:设备 ACL、符号链接 ------ 谁能打开设备(攻击面暴露度)

1.4 提示词模板

复制代码
分析目录 F:\...\Huorong\Sysdiag\ 下的所有文件:
1. 递归列出所有文件(含 bin 子目录),标注每个 .sys/.exe/.dll 的:
   - 版本资源信息(公司名/产品名/文件描述/版本号)
   - 文件大小、时间戳
2. 对每个 .sys:分析导入表,列出它导入的 ntoskrnl 关键 API(Zw*/Io*/Ob*/Ps*/Cm*/Flt*/Mm* 类),
   按 API 类别推断驱动功能(文件过滤?进程监控?网络过滤?自我保护?)
3. 上网搜索每个驱动/核心 exe 的公开资料(看雪、GitHub、CVE),与静态推断交叉验证
4. 输出:功能点清单表(文件 → 角色 → 通讯接口 → 优先级 → 依据),
   并按攻击面价值排序(驱动 > 服务exe > 界面exe > dll)

文件 F:\...\bin\sysdiag.sys 的角色已确认为XX主驱动/HIPS。现在分析:
1. 它的服务注册信息(服务名、启动类型、组、依赖)------ 用 sc qc 或注册表
2. 它的设备名和符号链接名(网上搜索 + 后续IDA确认)------ 用户态组件如何打开它
3. 它与其他XX组件(HipsDaemon.exe、TrafficProt.exe、其他.sys)的关系图
4. 已知漏洞/公开逆向资料汇总(标注来源链接)

1.5 XX实战案例还原(截图4/5 + 截图2/3 结论)

  • 目标目录:F:\...\Huorong\Sysdiag\(含 bin\);

  • 第 1 层结论:核心攻击面 = sysdiag.sys(主驱动/HIPS 内核,557KB,x64),用户态指挥官 = HipsDaemon(策略下发+事件消费)、TrafficProt(网络流量监控,依赖 NSI 过滤设备);

  • 分析优先级:sysdiag.sys(P0)→ 其内部的 nxeng 网络引擎、ActMon 行为监控、NSI 过滤、DTrampoline 注入通道(这是第 2/3 层才能展开的)。


第二层:静态逆向 -- IDA 无头批处理 + AI Agent 自动化

2.1 为什么"IDA 不需要 MCP"

IDA 本身就支持命令执行,所以不需要 MCP

复制代码
IDA 的自动化接口 = 命令行参数 + IDAPython + 文件落盘

Agent 与 IDA 的完整交互协议(这就是"自动吊起 IDA"的底层机制):

  1. Agent 写一个 IDAPython 脚本到磁盘(例如 round3_dispatch.py);

  2. Agent 用命令行吊起 IDA

    F:\App\IDA\ida64.exe -A -S"F:\work\round3_dispatch.py" -L"F:\work\round3.log" "F:...\sysdiag.sys"

  3. 脚本执行 :等待自动分析完成(ida_auto.auto_wait()),做反编译/枚举/交叉引用,把结果写进文本文件(round3_report.txt);

  4. IDA 退出 ,Agent 读报告文件,基于结果写下一轮脚本

关键参数详解(这就是截图里"具体的执行命令"的含义):

|---------------|--------------------------|--------------------------------------------|
| 参数 | 含义 | 说明 |
| -A | 自动模式 | 不弹任何对话框(没有 GUI 交互),自动分析完就绪 |
| -S"script.py" | 自动分析完成后运行指定 IDAPython 脚本 | 脚本内 auto_wait() 保证等分析完成 |
| -L"log.txt" | 日志落盘 | Agent 靠它判断分析是否异常 |
| .i64 数据库 | 自动保存 | 下次再分析同一文件时自动复用,不用重跑分析 ------ 这是多轮分析的根基 |

MCP 方案(IDA/Ghidra MCP server)也能做,但你的"文件落盘协议"有三个优势:

  • 长任务可靠:MCP 连接中断会丢状态;文件落盘每一步都有产物,断了从产物续;

  • 数据库复用:9 轮分析共享同一个 .i64,Agent 的命名/注释/结构体恢复会累积;

  • 无授权限制:headless 模式只需要本地 Hex-Rays 许可,不依赖任何第三方插件。

2.2 必须告诉 Agent 什么

复制代码
IDA 安装路径:F:\App\IDA\(ida64.exe / idat64.exe 的目录)
目标文件:F:\...\sysdiag.sys(绝对路径)
工作目录:F:\work\huorong_analysis\(所有脚本、报告、数据库放这里)
输出约定:每轮脚本 → 每轮报告文件(UTF-8 txt/md),报告开头标注轮次与目标
约束:全程无头(-A),禁止需要 GUI 的操作

2.3 提示词模板

复制代码
使用 IDA 无头模式分析驱动 F:\...\sysdiag.sys:
- IDA 路径:F:\App\IDA\ida64.exe(-A -S 方式)
- 工作目录:F:\work\huorong_analysis\(脚本与报告都放这里,数据库会自动生成)
第1轮脚本要求:
1. 列出所有函数数量、段信息、导入的 ntoskrnl 函数(分类:Io/Ob/Ps/Cm/Flt/Mm/Ke)
2. 反编译 DriverEntry:定位所有 IoCreateDevice / IoCreateSymbolicLink / IoCreateDeviceSecure 调用,
   提取设备名、符号链接名、DeviceType、设备扩展大小
3. 提取 MajorFunction 数组的每个槽位(分发器函数地址),标注哪个是 DEVICE_CONTROL
4. 全部输出到 round1_report.txt

基于已生成的 .i64 数据库(函数命名已累积),继续第5轮:
目标函数 sub_140E890(核心模块二次路由分发器)。
1. 完整反编译该函数及其调用的全部子函数(递归2层)
2. 输出每个分支的:IOCTL码 → 调用的子函数 → 功能推断(结合输入输出缓冲区的使用方式)
3. 对每个子函数标注:缓冲区来源(SystemBuffer/MDL/Type3InputBuffer)、
   长度校验点、锁使用(ExAcquireResource*/Ndis锁)、内存操作(IoAllocateMdl/MmProbeAndLockPages)
4. 结果追加到 round5_report.txt,格式:每个 IOCTL 码一节

追踪"进程信任字段"的数据流:
1. 已知进程记录结构:偏移 +1354 存 PID,偏移 +2712 是信任标志(CREATE 校验用)
2. 找出所有写 +2712 的代码位置(交叉引用)------列出写入者函数、写入条件
3. 找出所有读 +2712 的代码位置------哪些分发器/子接口在读、读后做什么决策
4. 结论:是否存在"非受信路径写入信任标志"的可能性?输出证据链

2.6 XX实战案例:sysdiag.sys 结构层结论

复制代码
总体架构:统一分发器 + 模块表(5 个模块)
DriverEntry (sub_140?A60):
  1. 校验启动参数(?w?),失败返回 0
  2. 用 MmGetSystemRoutineAddress 动态解析函数(部分符号无法静态解析的原因)
  3. 遍历模块表,调用各模块初始化(支持卸载)
  4. 创建设备:IoCreateDevice,DeviceType=0x22(FILE_DEVICE_UNKNOWN),
     DACL 开放(所有人可访问)→ 说明安全不靠设备 ACL,而靠 IOCTL 层进程信任校验

模块表(5 项):
  模块0: 主接口模块(核心设备,二次路由入口 sub_140E890)
  模块1: nxeng 网络引擎(优先打开已有设备,不存在才自建)
  模块2: 功能码查询接口 (sub_14??, 1975字节)
  模块3: 功能码查询接口 (sub_1404220, 1713字节)
  模块4: NSI 过滤设备(附加到 NSI 设备,拦截查询类请求)

核心模块二次路由 sub_140E890 ------ 按 DeviceObject 再分发到三个子接口:
  1. HR::ActMon ------ 行为监控(4.5KB,多个 IOCTL)
  2. HR::DTrampoline ------ 注入通道(Trampoline 跳板)
  3. HR::Base ------ 基础接口(启动会话、进程信任)

第三层:动态调试 ------ WinDbg 命令行驱动

  • 后续分析

第四层:功能源码级分析与深度漏洞挖掘

  • 后续分析
相关推荐
FLJwu1 天前
镜头模组与画质量产实战 03:运动相机 ISP 图像调校、杂光鬼影抑制与来料验收标准|20 年源头工厂量产经验
经验分享·数码相机·产品运营·接口隔离原则·相机
aokai16881 天前
1688合规运营干货:地址预警风控规则解读与规避方案
产品运营·内容运营
FLJwu2 天前
镜头模组与画质量产实战 02:运动相机镜头组装工艺、胶水选型、温变跑焦与参数虚标|20 年源头工厂量产经验
经验分享·数码相机·产品运营·相机
TKcloudmaster_H2 天前
告别低效运营:跨境数据分析 + 多账号矩阵增效方案
大数据·矩阵·数据挖掘·数据分析·新媒体运营·产品运营·流量运营
顶妙WMS3 天前
跨境电商旺季退货量大,泰国海外仓如何高效处理退货?
产品运营
生活皆是风景4 天前
GEO玩明白,流量自动上门
大数据·人工智能·产品运营
KIZIFLOW北泽五金6 天前
液压系统压力损失怎么降?成因分析与减损实操方案
运维·自动化·新媒体运营·产品运营·流量运营·用户运营·内容运营
aokai16886 天前
1688工业品运营深耕思路:垂直赛道与全渠道落地运营心得
产品运营·内容运营
学着改变2757 天前
2026便携式超声波流量计性能白皮书 户外巡检适用性横评
大数据·网络·人工智能·科技·产品运营·量子计算