第五单元:检测·取证·欺骗

日志 · 取证 · 蜜罐(综合实践项目 M5)

黄玮

2026-秋

主题 0:攻击发生了,如何复盘?

问题引入:检测到攻击之后

攻击发生了,如何复盘?

  • 检测到攻击只是第一步——还要取证溯源(谁、何时、怎么进来的)、用蜜罐诱捕(主动欺骗)
  • 三件事绑在一起,构成簇⑤「检测 / 取证 / 欺骗」的完整闭环
  • 本单元 = 把你的靶场应用做成「可观测、可取证、可诱捕」(综合实践项目(capstone) M5

本单元地图(≤2 学时):日志 · 取证 · 蜜罐

  1. 集中日志与关联分析(ELK 思路:filebeat → 日志库 + 结构化 JSON + 关联规则)
  2. 日志防篡改(强制 · 落实 M0 R5):append-only / HMAC 签名 / 只读追加
  3. 取证应对手册(playbook)(接报 → 镜像 → 时间线 → IoC → 报告)+ 证据保全
  4. 蜜罐与欺骗(Cowrie / HFish,仅本机 / 内网
  5. 攻击复盘:用 M3 概念验证(PoC)触发 → 还原攻击链 + 时间线 + IoC

本单元地图(≤2 学时):AI 埋伏

  1. (可选)国产 LLM 告警分诊(为 U6「AI 检测组件」铺垫)
  2. 能力自评:点亮簇⑤·L2,收尾衔接 M6

深度理论(取证历史、证据法理、蜜网体系)见 https://github.com/c4pr1c3/cuc-ns-ppt/blob/master/chap0x11.mdhttps://github.com/c4pr1c3/cuc-ns-ppt/blob/master/chap0x12.md。本课件只讲「做 M5 所需」。

能力框架对应 + 本里程碑权重

  • 簇 ⑤「检测 / 取证 / 欺骗」· L2(本单元只到 L2:会做一次完整闭环)
  • L2 = 搭集中日志 + 写取证应对手册 + 部署蜜罐 + 复盘一次攻击 + 日志防篡改
维度 权重 重点提示
安全严谨 0.30 R5 日志防篡改 + 蜜罐隔离是本里程碑的硬要求
完成度 0.30 日志 + 取证 + 蜜罐 + 复盘 四项齐备
深度 0.25 复盘含完整攻击链 + 时间线 + IoC

主题 1:【道】可观测性 · 取证思维 · 欺骗

道 1:可观测性——「看不见就防不住」

  • 可观测性(Observability):从系统外部行为推断内部状态的能力
  • 安全的三层「看见」:
    • 日志(Log):发生了什么(离散事件)
    • 指标(Metric):聚合了多少(计数/延迟)
    • 追踪(Trace):一次请求穿过哪些组件
  • 没有日志 = 攻击发生后无从复盘;日志散落各机 = 无法关联

经典理论(日志架构、SIEM 体系)见 https://github.com/c4pr1c3/cuc-ns-ppt/blob/master/chap0x11.md「日志与安全审计」。

道 2:取证思维——时间线 + IoC

  • 计算机取证(Forensics):用可复现、可质证的方法还原事件真相
  • 两个核心产物:
    • 时间线(Timeline):按时间排序的事件链(谁在 t₀ 做了什么 → t₁ → t₂…)
    • 威胁情报指标(IoC):可机读的「失陷指纹」(恶意 IP / 域名 / 文件哈希 / 注册表键)
  • 关键原则:证据保全——原始数据不被污染、过程可追溯

道 3:欺骗——蜜罐的「不对称」价值

  • 蜜罐(Honeypot):故意暴露的「假目标」,吸引攻击者进入受控环境
  • 价值是不对称的:
    • 攻击者碰它 → 暴露手法、工具、IP(你获得情报
    • 你碰它 → 几乎无业务损失(因为是假的)
  • 低交互 vs 高交互:模拟得越像,情报越多,但被攻陷成跳板的风险也越大
  • ⚠️ 蜜罐是双刃剑——本课程严守「仅本机 / 授权内网

本单元范式透镜:三大范式 × 检测取证欺骗

  • 攻防不对称 × 蜜罐诱捕:攻击者不知道哪台是假目标——碰一次就暴露手法与 IP,你以极小代价换情报(接道 3)
  • 纵深防御 × 日志分层:集中日志、防篡改、实时转发到独立信任域——单层失守不丢整条证据链(主题 2/3 展开)
  • 可观测与可验证的安全 × 时间线 + IoC:「防住了吗」不靠感觉——集中日志让一切可观测,时间线与 IoC 让结论可验证、可质证(道 1/2、主题 4 展开)

第六个贯穿范式「可观测与可验证的安全」是本单元的底色:M5 的每个交付物(日志管线 / 取证报告 / 蜜罐证据)都是它的直接证据。

主题 2:【术】集中日志与关联分析

术 1:为什么要「集中」日志

  • 单机日志的问题:散落、异构、易被本地篡改、无法跨机关联
  • 集中日志 = 把 app / IDS / WAF / 系统的日志汇到一条管线,统一存储、统一检索
  • 经典管线(ELK 思路):
app / IDS / WAF  ──采集(filebeat)──▶  缓冲/过滤(logstash)
        ──▶  存储+索引(Elasticsearch)  ──▶  可视化+告警(Kibana)

国产替代同样成熟:用 fluentd / filebeat / rsyslog / vector 任一作采集器;存储端可用国产 SIEM。实验不绑定具体产品。

术 2:结构化日志(JSON)——让日志「可机读、可关联」

  • 非结构化(一行文本):人能读,但机器难解析、难关联
  • 结构化(JSON 字段):每条日志带 who / when / what / where / result
{"ts":"2026-07-01T09:13:22Z","src_ip":"10.0.0.5","event":"login_failed",
 "user":"admin","app":"flask","action":"/login","result":"401"}
  • 关联规则示例:「同一 src_ip 在 60s 内 login_failed > 5 → 触发爆破告警」
  • 结构化是后续(U6)让 LLM 做告警分诊的前提——机器读得懂才能归并

术 3(上):关联规则——从「事件(event)」到「安全事件(incident)」

  • 单条日志 = 噪声(event);多条日志按时间/主体关联 = incident(安全事件)
  • 典型关联维度:
    • 按主体:同一 src_ip / user 的连续行为
    • 按时间窗口:短时间高频(爆破、扫描)
    • 按攻击链阶段:侦察(nmap)→ 利用(PoC)→ 横向(SSH 爆破)

术 3(下):规则即代码(detection-as-code)

  • 把规则写成代码/配置(detection-as-code):可版本化、可复核
  • 规则的生命力在迭代——误报多调阈值,漏报了补维度

实验任务 A 要求:至少实现一条可工作的关联规则(如登录失败阈值告警)。

主题 3:【术】日志防篡改(强制 · 落实 M0 R5)

为什么日志必须防篡改

攻破之后的第一件事,往往是清日志。 —— 攻击者擦除痕迹,让你无从复盘。

  • 回顾 M0 风险登记表 R5:审计可被篡改——管理员/攻击者可改写或删除本地日志
  • 若日志可篡改 → 取证证据不可信 → 时间线/IoC 全部失真
  • 因此 M5 把 「日志只读追加 / 防篡改」 列为强制项(安全严谨权重 0.30 的核心)

这是本里程碑「安全严谨」维度的硬要求;不做 = R5 未闭环 = 该维度直接扣分。

防 1:append-only(只读追加)

  • append-only 文件:日志文件设为只能追加,不能改/删
    • Linux:chattr +a /var/log/app.log(仅 root 可设,root 也只能 append)
    • 或写入 WORM(Write-Once-Read-Many) 存储 / 只读卷
  • 效果:即便攻击者拿到 root,也无法静默删除历史日志(除非先解除属性,留痕)
  • 局限:依赖文件系统属性;本地属性可被同权限者重置 → 需配合远端转发

防 2:HMAC 签名 / 链式哈希

  • HMAC 签名:每条(或每批)日志用只有日志服务知道的密钥计算 HMAC,与日志一同存储
    • 校验时重算 HMAC:不一致 = 被篡改过
  • 链式哈希(如 blockchain 思路):每条日志含上一条的哈希 → 篡改任意一条会断链
  • 国产可用:SM3 密码杂凑算法 / SM2 数字签名(密码合规场景)
log[i].hmac = HMAC(key, log[i].payload || log[i-1].hmac)   # 链式 + 签名

防 3:实时转发到「独立信任域」

  • 最稳妥的防篡改 = 日志一产生就送出本地
    • app/IDS → 远端集中日志服务器(不同主机、不同权限)
    • 攻击者攻陷单机,够不到集中日志库
  • 配合 时间戳签名(RFC 3161 / TSA):第三方可信时间戳固化「这条日志在 t 时刻已存在」
  • 三层递进:append-only(本机)→ HMAC 签名(本机可校验)→ 实时转发(独立域)

实验任务 E(强制)要求至少实现其一,并在 report.md 说明如何落实 R5。

主题 4:【术】取证应对手册 + 证据保全

取证应对手册:五步法(上)

  1. 接报(Triage):确认是否真为安全事件、影响范围、是否需取证
  2. 取证镜像(Imaging):对受影响主机/磁盘做位级镜像(不在原盘上分析)
  3. 时间线(Timeline):把各来源日志按时间排序,重建事件序列

取证应对手册:五步法(下)

  1. IoC 提取:从镜像/日志中提炼恶意 IP / 文件哈希 / 异常进程
  2. 报告(Report):可复现的过程 + 证据链 + 结论 + 处置建议

删去早期取证历史与法律条文(详见 https://github.com/c4pr1c3/cuc-ns-ppt/blob/master/chap0x12.md「计算机取证」)。课堂只讲「做 M5 所需」应对手册。

证据保全:可质证的三原则

  • 完整性(Integrity):原始证据不被污染——用哈希校验(SHA-256 / SM3)证明镜像 = 原盘
    • 取证前后各算一次哈希,比对一致 → 证明未被改动
  • 链路完整(Chain of Custody):证据从采集到呈堂的每一次交接都有记录(谁、何时、做了什么)
  • 最小侵入:能不在原盘操作就不在原盘;先镜像后分析
# 取证镜像 + 哈希校验(仅授权环境)
dd if=/dev/sda1 of=disk.img bs=4M status=progress
sha256sum disk.img  > disk.img.sha256   # 保全证据完整性

时间线 + IoC:取证的两件「交付物」

  • 时间线:把 app 日志、IDS 告警、系统日志、蜜罐记录统一按时间排序
    • 例:09:13 扫描 → 09:14 爆破 /login → 09:15 PoC 成功 → 09:16 异常命令执行
  • IoC:可机读、可共享的失陷指纹
    • 类型:恶意 IP/域名、文件哈希、C2 URL、异常 user-agent、注册表键
    • 格式:可导出为 STIX / OpenIOC / 简单 CSV,供防御侧联动封禁

实验任务 B 要求:写出应对手册文档;任务 D 要求:在复盘报告里给出完整时间线 + IoC 清单

主题 5:【术】蜜罐与欺骗

蜜罐分类:低交互 vs 高交互

低交互(Low-Interaction) 高交互(High-Interaction)
实现 模拟服务(假 SSH/Telnet) 真实系统当诱饵
情报量 少(只记登录尝试/命令) 多(完整攻击行为)
风险 低(难以被真正攻陷) (可能被当跳板横向)
代表 HFish、Cowrie(中低交互) 真实虚机蜜网
本课程 推荐(隔离简单) 不要求(风险高)
  • Cowrie:中低交互 SSH/Telnet 蜜罐,记录攻击者命令与下载物
  • HFish(国产):多协议、Web 管理面、社区活跃——本课程推荐

蜜罐部署:三条铁律(安全严谨 0.30)

  1. 仅监听本机 / 授权内网——绑 127.0.0.1 或内网网卡,绝不绑公网 IP
  2. 网络隔离——蜜罐单独网段 / 单独容器,不能路由到生产网(防横向)
  3. 不引入新风险——不得被攻陷后用作攻击跳板(这是常见扣分项 + 红线)

授权红线:蜜罐仅本机 / 授权内网;不得扫描 / 诱捕第三方。https://github.com/c4pr1c3/cuc-ns-ppt/blob/master/chap0x12.md「蜜罐与蜜网」有完整风险讨论。

蜜罐捕获:一次「诱捕」长什么样

  • 攻击者扫描 → 命中蜜罐端口(假 SSH)→ 尝试弱口令字典 → 进入「假 shell」→ 执行命令(被完整记录)
  • 产出情报:
    • 攻击源 IP / 地理位置 / 扫描时间段
    • 使用的口令字典(可反哺弱口令检测)
    • 进入后执行的命令、下载的恶意样本 URL(IoC 直接来源

实验任务 C 要求:记录一次「捕获」并明确写出隔离措施(绑哪个网卡、如何防横向)。

主题 6:【术】攻击复盘——用 M3 PoC 触发

复盘:把检测 / 取证 / 蜜罐 串起来

  • 复盘 = 用 M3 的 PoC(漏洞利用)在自己的靶场触发一次真实攻击
  • 然后从集中日志 + IDS + 蜜罐三处还原:
    • 攻击链(Kill Chain):侦察 → 利用 → 执行 →(横向/持久化)
    • 时间线:每个阶段的精确时刻
    • IoC:攻击源 IP、攻击载荷(payload)特征、异常命令
  • 这是 M5 的「集大成」交付——验证整条检测/取证管线真的能工作

复盘报告的最小骨架

## 攻击复盘(M3 PoC 触发)
- 触发:用 M3 的 SQLi/RCE PoC 打自己的 /orders(仅授权靶场)
- 时间线:
  - T0  侦察:nmap 全端口扫描(IDS 命中 scan)
  - T1  利用:PoC 成功(app 日志 result=500 + 异常 SQL)
  - T2  执行:异常命令(蜜罐/audit 捕获)
- IoC:src_ip=..., payload_hash=..., signature=...
- 证据保全:disk.img sha256=...(完整性校验通过)
- 处置:封禁 src_ip / 修复漏洞 / 加固日志

实验任务 D 要求:产出 attack-replay.md,含完整攻击链 + 时间线 + IoC。仅部署无复盘 = 该维度不合格。

主题 7:【器】用器与造器

器:M5 的工具箱(上 · 日志与取证)

用途 工具(国产优先) 课堂定位
日志采集 fluentd / filebeat / rsyslog / vector 任务 A 管线
日志存储/检索 ELK(Elasticsearch+Kibana)/ 国产 SIEM 任务 A
关联/告警 ELK 告警 / detection-as-code 任务 A 规则

器:M5 的工具箱(下 · 蜜罐与防篡改)

用途 工具(国产优先) 课堂定位
蜜罐 HFish(国产) / Cowrie 任务 C
证据校验 sha256sum / SM3 任务 B 保全
日志防篡改 chattr +a / HMAC / SM2 签名 任务 E(强制)

国产化原则:存储端、签名算法(SM2/SM3)、蜜罐(HFish)优先国产;采集器按团队熟悉度任选。详见 syllabus.md「国产优先」。

造器:从「会用工具」到「搭出一条管线」

  • 「器」是单个工具;「造器」= 把工具串成属于你靶场的可复用管线
  • M5 的「造器」产物(落进 docs/m5/):
    • logging.* —— 集中日志配置 + 关联规则(可重跑
    • playbook.md —— 取证五步应对手册(可复用
    • honeypot.* —— 蜜罐部署 + 隔离说明(可复现)

造器:交付物(续)+ 分水岭

  • 其余「造器」产物:
    • attack-replay.md —— 攻击链 + 时间线 + IoC(可质证
    • report.md —— 含 R5 防篡改说明 + 自评
  • 这是从 L2「会做一次」走向 L3「能持续运营」的分水岭

衔接实验:../labs/lab05-forensics.md 是 M5 的完整任务清单与量规。

主题 8:收尾与衔接

能力自评:本单元点亮簇⑤·L2

簇 × 级 能力描述 自评勾选
⑤·L2 搭集中日志 + 写取证应对手册 + 部署蜜罐 + 复盘一次攻击 + 日志防篡改 ☐ M5 交付

⚠️ 红线:仅本机 / 授权内网

  • 所有实验仅在自己靶场、授权环境内进行
  • 蜜罐仅监听本机 / 授权内网,不得对外暴露成攻击跳板,不得诱捕第三方
  • 课程不教授对外攻击;本单元工具同时是防御自查手段
  • 禁止国外大模型辅助(国产 LLM 可用于任务 F 告警分诊,注明范围 + 人工复核)

小结:今天带走的三件事

  1. 可观测 + 可取证 + 可诱捕 = 簇⑤·L2 的完整闭环;缺一不可
  2. 日志防篡改(R5)是本里程碑的硬要求:append-only / HMAC / 实时转发,至少做一项
  3. 蜜罐只在本机/内网:情报价值大,但不得成为新攻击面(安全严谨 0.30 的另一半)

经典理论全文:https://github.com/c4pr1c3/cuc-ns-ppt/blob/master/chap0x11.mdhttps://github.com/c4pr1c3/cuc-ns-ppt/blob/master/chap0x12.md(按需自学)。

下一单元 U6:AI 赋能与对抗

M5 的集中日志 = M6「AI 检测组件」的数据源。

  • U6(M6,核心 30%)给这个已加固、已可观测的应用装上 AI 能力,并反过来攻防它的 AI
  • M5 的结构化日志 + 关联规则 → 喂给 国产 LLM 做告警分诊 / 异常检测(任务 F 已铺垫)
  • 攻防闭环:搭建 → 攻击 → 检测 → 加固 → 装 AI → 攻防它的 AI,全程同一仓库