记录改动前后的基线,核心做法是:在每次改动前,用同一套检测工具对同一批文件生成一份可对比的快照,保存文件路径、大小、修改时间与哈希值;改动后再生成一份,逐项比对差异。对网站木马检测工具来说,真正有用的基线不是"某次扫描结果截图",而是结构化、可重复生成的清单,否则改动后你无法判断某个变化是正常更新还是被植入。
不同工具对同一文件的判断口径不同。有的工具只看文件内容哈希,有的会结合修改时间、权限、特征库版本。如果改动前用A工具、改动后用B工具,两份结果里的差异既可能来自真实文件变化,也可能来自工具口径差异,无法归因。同样,扫描范围也要固定:只扫网站根目录和扫整台服务器,得到的清单数量完全不同。
因此基线记录的第一步不是急着扫描,而是先固定三件事:
假设你管理一个网站,准备升级某插件,同时担心升级过程掩盖了此前的可疑改动。时间和人手有限,你只想先处理最可能出问题的部分。可以这样操作:
这个例子是假设场景,不是某个真实项目的成果。它的价值在于:差异列表会直接告诉你哪些文件被动过。如果某个文件不在你预期的升级范围内却发生了变化,它就值得优先排查。
路径、大小、修改时间、内容哈希是四个基础字段。路径保证能定位到具体文件;大小和修改时间便于快速筛选;哈希用于确认内容是否真的不同。仅凭修改时间不够,因为攻击者或某些操作可以保留原始时间戳,让文件"看起来没动过"。
容易误导的字段包括:
判断结果时,把差异分成三类:预期内改动(如插件升级涉及的文件)、预期外但可解释的改动(如日志轮转、缓存重建)、无法解释的改动。优先处理第三类。
全站文件可能成千上万,逐个人工看差异不现实。可以按以下顺序缩小范围:
如果差异列表仍然很长,可以先用哈希比对排除内容完全相同的文件,只保留真正变化的记录。这一步能大幅压缩需要人工判断的条目。适用条件是两份清单字段一致、生成方式一致;如果字段或范围不一致,比对结果本身就不可信,应先统一再重做。
最常见的错误是改动后才想起建基线,此时已经没有"改动前"的参照,只能依赖工具当前的特征库判断,无法回答"这个文件是不是本来就这样"。另一个错误是把基线存在同一台被检测的服务器上,一旦服务器被入侵,基线也可能被篡改或删除,比对就失去意义。
下一步:在下一次任何改动之前,先用固定命令生成一份包含路径、大小、修改时间和哈希的清单,存到服务器之外,然后按上面的顺序做一次改动后比对,把无法解释的差异单独列出并优先排查。