建立持续监测记录的核心,不是每天全站扫描一遍,而是固定一条可复查的证据链:谁在什么时间、用什么方式、检查了哪些页面或文件、看到什么结果、之后改了什么。人手有限时,先把首页、近期改动过的页面、上传目录和外部脚本引用这四类对象纳入记录,再按周或按次补充,而不是追求一次覆盖全站。
恶意代码的表现形式不同,记录字段也不同。常见需要留痕的对象包括:页面源码中出现的陌生外链脚本、<iframe>、混淆代码;服务器上被修改的文件路径与修改时间;搜索引擎结果里出现的异常标题或跳转;访问日志中反复请求的可疑参数。记录时至少写清四项:检查时间、检查对象(URL或文件路径)、观察到的现象、判断依据。
判断依据要能复核。例如“页面底部多了一段指向陌生域名的脚本”,比“感觉有问题”更有用;“该脚本在本地源码和线上源码中同时存在,且不在版本库记录里”比“可能是被注入”更接近可验证结论。注意区分“可能原因”和“已经定位的原因”:看到陌生脚本,可能是模板自带、第三方统计代码、CDN注入,也可能是被篡改,不能一发现就断言是攻击。
时间和人手有限时,建议按下面的顺序安排最先处理的工作:
robots.txt、.htaccess或Nginx配置,以及最近一周有改动的文件。这个顺序的适用条件是:站点规模不大、没有专职安全人员、无法做全量实时监控。若站点有交易或大量用户数据,应把隔离和取证提前,并考虑专业安全服务介入。
持续监测的关键是“连续”,不是“详细”。可以用表格或工单系统维护以下字段:日期、检查人、检查对象、检查方式、现象、判断、处理动作、复查日期、复查结果。每次只填实际检查过的对象,不补写没做过的项目。
假设某站发现首页被插入一段陌生脚本,记录中应写明:检查时间、首页URL、脚本所在行、脚本指向的域名、是否在版本库中、处理方式(删除或替换)、复查时间与结果。这样下次再出现类似现象时,可以直接比对,而不是从头猜。
复查不是再扫一遍全站,而是回到上次处理过的对象,并检查三个容易反复的位置:被修改文件的同目录其他文件、上传目录中新出现的可执行文件、外部脚本引用是否被再次加入。若条件允许,对比文件哈希或修改时间,比肉眼查看更可靠。
不同来源的信息口径不同:站内日志、搜索引擎结果、第三方估算流量反映的不是同一件事,不能用一个指标直接推断恶意代码是否清除。判断是否清除,应以文件内容、访问行为和复查结果为准。搜索引擎结果中的异常提示可能滞后,也可能来自其他原因,需要单独核实。
下一步可以做的,是选一个当前最可能被利用的入口,按上面的字段建立第一条记录,并设定下一次复查时间。记录一旦开始,就按同一格式延续,不要每次换一套字段。