授权演练如何留下可复核证据链?
授权渗透测试 Debian 与 Ubuntu APT 供应链风险:验证中间人替换软件包的条件与回滚
演练做完,报告交上去,被问了一句“这一步你是怎么证明的”,我才发现手里只有几张截图和一句“已复现”。那一刻挺尴尬——过程我记得,但别人没法照着走一遍。
后来我慢慢明白,授权演练留证据,本质上不是留结果,是留一条别人能重放的路径。重放得了,才叫证据;重放不了,只能算我说过。
授权文件本身就是第一份证据
很多人把授权文档当成进门条,签完就收进抽屉。其实它应该贯穿整份材料:测试编号、授权编号、资产清单、允许的时间窗口、禁止行为、应急联系人、回滚责任人。报告里每个测试编号都要能和它对上。没有这层对应,后面所有日志都不知道属于谁的授权范围。
我现在的习惯是把授权编号写进证据目录的命名里,日志、快照 ID、哈希清单都挂在同一个编号下。要找的时候不用回忆,看文件名就行。
原始日志比结论值钱
演练时最容易漏的是“原始”两个字。代理日志至少要留住时间、客户端、请求地址、状态码、重定向目标、响应长度和响应文件哈希;APT 侧日志、实际下载文件的哈希、索引里的哈希,都原样保存,别做二次加工。
我吃过一次亏:当时只记了“替换成功”,没留响应长度和哈希,事后想说明被替换的是哪个文件,只能靠印象。而印象在复核面前一文不值。
还有一点更少人提:停止条件触发时的证据,比顺利跑完的证据更该保存好。出现非测试包、流量串到别的网段、回滚失败,第一件事是保全日志和快照 ID,再动手收拾环境。顺序反了,证据就没了。
结论要写成条件,不写成形容词
“存在高危漏洞”这句话没有复核价值。有价值的是:源协议是不是 HTTP、安装窗口在不在、重试配置是不是非零、哈希不一致的包有没有进入安装路径——四个条件各是什么结果,缺一个就老实写“本次未闭环”。
未闭环不是失败,是有效结论,它同样能支撑整改决策。
最后回到那句被问住的话。现在写报告前我会多问自己一遍:换个人拿着这份材料,能不能一个字都不问我,就重跑一遍?能,才算真的留住了。

参与讨论
授权编号写进文件名这个习惯好,能省很多事后回忆的麻烦
我之前就吃过没留原始日志的亏,后面想补都补不回来
停止条件触发时先保日志再修环境,这个顺序确实容易搞反