把每次网站木马扫描当成一次可追溯的运维事件来记录:扫描前保存当前文件与数据库状态,扫描中记录工具、范围、时间和命中结果,处理后记录删除或隔离了哪些文件、改了哪些配置,复查时用同一范围和同一工具再扫一遍并对比差异。这样做的目的不是留痕本身,而是当木马再次出现时,能判断它是残留、重新入侵,还是误报。
没有基线的扫描记录几乎无法复盘。开始扫描前,至少固定三项内容:
find 配合 sha256sum 生成列表并保存到站外。这些数据是后续判断"变了什么"的唯一依据。只记录"扫描发现 3 个可疑文件"是不够的,因为无法确认这 3 个文件是新增的,还是一直存在只是这次才被规则命中。
扫描报告里出现可疑文件,只是现象,不是结论。同一个现象可能有多种解释:
记录时要把"疑似"和"已确认"分开写。确认手段包括:比对哈希是否与官方发行版本一致、查看文件内容是否包含可疑的请求执行函数、检查访问日志中该文件是否被外部调用过。只有拿到这些证据,才能把"可能原因"升级为"已定位原因"。
处理阶段最容易漏记的是操作细节。建议按下面的格式逐条记录,每条包含时间、对象、动作、执行人、依据:
.htaccess 中新增的重定向规则、计划任务中新增的条目。假设某次扫描在 /uploads/ 下发现一个 PHP 文件,内容包含接收外部参数的执行逻辑。处理记录应写明:文件路径、哈希值、移动到的隔离目录、判断依据(该目录本不应出现可执行脚本)、以及是否同步检查了同目录下其他文件。这样下次扫描时才能确认同类文件是否再次出现。
复查的关键是可比性。如果第一次用工具 A 扫全站,第二次用工具 B 只扫部分目录,两次结果无法对比。复查时应保持:
复查通过的标准可以设为:可疑文件为零,且核心目录哈希与已知干净版本一致,且访问日志中不再出现对已隔离文件的调用请求。如果仍有命中,先判断是残留(同一哈希再次出现)还是新变种(新哈希、新路径),两者的处理方向不同。
把上述观察、判断、处理、复查四段写成一份固定模板,每次扫描填一份,按日期存档。下一步可以直接做一件事:为当前站点生成一份文件哈希基线并保存到站外,之后每次木马扫描都以它为对比起点。