跨设备深度调查
跨设备深度调查的核心问题是:一条告警线索摆在面前,如何让 Agent 在多设备之间自动联动,把碎片数据拼成一条完整的攻击链。
Flocks 的做法是把"跨设备取数 → 时间窗对齐 → 攻击链路还原 → 溯源报告"封装成一个独立子 Agent,由主 Agent Rex 在研判过程中按需调用。子 Agent 同时拥有 API 直连和浏览器操作两种取数能力,API 优先,拿不到再降级到浏览器,切换对上层流程透明。
场景简介
告警研判能回答"这一条告警是不是真的",但回答不了下面这些问题:
- 同一时间窗内 NDR 看到的外联,和 HIDS 看到的进程,是不是同一个动作?
- 防火墙有没有放行?主机上留下了什么文件?
- 初始入侵点是哪台机器,横向移动到了哪里?
这些都要求跨多个设备联合取数 + 时间轴对齐。人工做一次需要 30 分钟到几小时,Flocks 把它压到分钟级。
与「主机应急取证」的区别:主机取证是上到一台机器里去取深度证据;跨设备调查是在外围多设备之间拉网,两者常常配合使用——跨设备调查发现某台主机可疑,再委派主机取证 Agent 上机。
输入与输出
典型输入
- 一条可信告警(经过告警研判筛出来的)
- 一组可疑 IP / 主机 / 进程 / 域名
- 一个时间窗(通常是告警前后 ±30 分钟到 ±1 天)
典型输出
- 跨设备证据集:每台设备命中的原始记录,带时间戳
- 攻击时间线:按时间排序,包含初始入侵、横向移动、C2 外联等关键节点
- 标准化溯源报告:Markdown / JSON,落盘到 Workspace
- 后续动作建议:是否需要上机取证、是否需要封禁、是否需要扩线
前置条件
| 依赖项 | 要求 |
|---|---|
| 模型 | 默认模型即可;推理型模型在时间线重建时效果更好——参考 模型配置 |
| 多设备接入 | NDR / HIDS / EDR / 防火墙 / 资产平台至少接入 2 个——参考 内网安全产品接入 |
| 浏览器降级 | 若部分设备只有网页,请确保浏览器工具可用——参考 浏览器自动化与网页登录 |
| 时间同步 | 各设备时钟需同步(NTP),否则时间线会错位 |
| 资产字典 | 可选,建议接 CMDB,便于 IP ↔ 主机名 ↔ 责任人的反查 |
操作步骤(WebUI)
步骤 1:起会话,描述调查目标
进入 会话管理 → + 新建会话,把已有线索交给 Rex:
「帮我调查一下 10.10.x.x 在 2026-03-28 08:00~10:00 的可疑行为,把 NDR / HIDS / 防火墙三边的记录拉齐,给我一条完整时间线」
线索越结构化越好(IP / 时间窗 / 可疑行为类型),Rex 才能一次性拆准并发子任务。
步骤 2:Rex 切到跨设备调查子 Agent
Rex 识别到这是「跨设备联动」类请求后,会委派跨设备调查子 Agent。这一步本质是多 Agent 架构:
- Rex 负责「拆任务 + 汇总时间线」
- 跨设备调查子 Agent 拥有独立的 system prompt,专注「取数 + 对齐 + 交叉比对」
- 结果回流到 Rex 的上下文,用于后续动作
步骤 3:并发多设备取数
子 Agent 会并发发起对各接入设备的查询:
- 告警类:NDR、TDP、XDR 按时间窗过滤
- 主机类:HIDS / EDR 拉进程、网络连接、登录记录
- 边界类:防火墙拉放行 / 拒绝日志
- 网页类:走浏览器工具登录后台抓数据
所有原始数据落盘到 Workspace 的日期目录下(如 3-28/cross/ndr.json、3-28/cross/hids.json),便于后续复核和定时复用。
步骤 4:时间窗对齐与交叉比对
子 Agent 把各设备的记录按时间戳归一后,做几件事:
- 时间窗对齐:统一到同一时区,收窄到告警前后相关片段
- 实体对齐:同一 IP / 同一主机名 / 同一进程在不同设备上的记录串起来
- 因果推断:谁先谁后?谁触发了谁?识别初始入侵、横向移动、外联等关键节点
步骤 5:生成溯源报告
最终产出一份结构化报告,落在 Workspace:
- 攻击时间线(按时间正序排列)
- 证据矩阵(每条结论引用哪些设备的哪条记录)
- 影响范围(哪些资产被串上)
- 建议动作(是否升级为主机取证 / 是否封禁)
步骤 6:可选——继续委派下游动作
Rex 看完报告后可以:
- 委派 主机巡检 / 应急取证 上疑似失陷主机
- 把重点 IOC 抛给 威胁情报与 IOC 研判
- 把整条链路固化为定时任务,定期回扫时间窗,发现新关联告警
真实案例走读(一次 webshell 疑似攻击的跨设备拼图)
以一次典型的"告警研判 → 跨设备调查 → 主机取证"联动为例:
| 阶段 | Rex / 子 Agent 动作 | 产出 / 说明 |
|---|---|---|
| 触发 | 告警研判环节识别出 10.10.x.x 上有疑似 webshell 上传攻击 | 进入"需要跨设备坐实"的状态 |
| 派发 | Rex 委派跨设备调查子 Agent | 子 Agent 接管,Rex 只负责汇总 |
| 取数 | 并发查 NDR(外联 IP / URL)、HIDS(进程树 / 文件变更)、防火墙(放行记录) | 三份原始数据落盘 3-28/cross/ |
| 对齐 | 按 08:15±10min 时间窗筛,发现 NDR 外联 + HIDS 新进程 + 防火墙放行时间吻合 | 时间线初步成形 |
| 扩线 | 发现同一来源 IP 还命中过另两台主机 | 横向移动嫌疑 |
| 报告 | 产出"初始入侵 → 上传 webshell → 内网横移"三段时间线 | 结构化 Markdown |
| 联动 | Rex 继续委派主机取证 Agent 到疑似失陷主机,验证 webshell 文件是否真实存在 | 证据闭环 |
产出示例(报告片段)
调查主题: 10.10.x.x 2026-03-28 08:00-10:00 疑似 webshell 攻击
时间线:
08:12 NDR 外联 109.x.x.x:443,HTTP 400 Bad Request 异常响应
08:14 防火墙 放行 109.x.x.x -> 10.10.x.x:80(白名单内)
08:15 HIDS 新进程 /var/www/html/.cache/cmd.php(php-fpm 子进程)
08:17 HIDS 进程创建链:php-fpm -> sh -> wget xxx
08:22 NDR 同来源 IP 命中 10.10.x.y、10.10.x.z(横向移动嫌疑)
证据矩阵:
- webshell 上传: NDR(08:12) + HIDS(08:15) 互相佐证
- C2 外联: HIDS(08:17) wget 命令行 + NDR 出站流量
建议:
- 委派主机取证 Agent 到 10.10.x.x 验证 cmd.php
- 将 10.10.x.y / 10.10.x.z 纳入扩线
- 109.x.x.x 加入边界封禁候选持续运行与定时任务
跨设备调查本身是「事件驱动」的,不适合每小时无差别扫。但以下衍生任务很适合固化到 任务中心:
| 任务形态 | 说明 |
|---|---|
| 回扫重点告警 | 每 2 小时回扫过去一段时间窗内的高置信度告警,自动跑一次跨设备调查,发现新关联即推送 |
| 失陷面监控 | 已确认失陷主机的 IP 加入"每小时跨设备抽查"列表,关注后续外联与登录 |
| 误报回归 | 每天对前 24 小时已关闭告警抽样,跨设备复核,评估误报率 |
边界与常见问题
| 问题 | 处理 |
|---|---|
| 设备时钟不同步 → 时间线全错 | 先在接入层修正时区;实在拿不准,Agent 会以 NDR 时间为基准,其他设备按人工标注偏移对齐 |
| 某个设备只有网页、没有 API | 启用浏览器工具,降级也要把数据拉回来——参考 浏览器自动化与网页登录 |
| 并发查询把设备打挂 | 在 Agent / 工具层加并发上限与退避重试,或把调查拆时间窗分批跑 |
| 报告太长难读 | 在 Agent 的 system prompt 里约束"时间线 + 证据矩阵 + 建议"三段式,超出就裁剪 |
| 想让 Agent 自动封禁 | 不建议。Flocks 的定位是研判 / 证据产出,封禁动作仍由人确认后交下游系统执行 |
相关:场景总览 · 告警研判 · 主机巡检 / 应急取证 · 威胁情报与 IOC 研判 · Agent 智能体 · 工具清单 / MCP · 任务中心