挂马扫描软件:工具换数据源后历史曲线是否还能连接

📍 WDQWDWQD987AAAAA:216.73.217.105
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /7c4a15589f7d.html
📄

挂马扫描软件:工具换数据源后历史曲线是否还能连接

能不能连,取决于历史曲线的存储方式,而不取决于换了哪个数据源。如果曲线存的是每次扫描的原始结果(文件哈希、命中规则、页面地址、时间戳),换数据源后新点可以接着画,旧段仍在;如果存的是数据源直接返回的“风险分”或“是否命中”这类聚合值,旧段和新段之间就会出现断层,因为两套数据源的判定口径不同,数值不可比。所以先查历史曲线的落库字段,再决定是拼接、分段标注,还是重建基线。

矛盾现象:新数据源上线后,曲线出现断点

常见的触发场景是:挂马扫描软件原本对接一个特征库或检测接口,某次换成另一个数据源后,控制台里的历史曲线在新数据源生效的那一天出现断点,或者前后数值突然跳变。运维看到断点,容易得出“历史数据丢了”的结论;安全负责人看到数值跳变,容易得出“站点风险升高了”的结论。这两种理解都可能错,因为断点和跳变是数据来源变化造成的,不是站点本身变化造成的。

还有一种更隐蔽的情况:曲线看起来连续,但旧段和新段的纵轴含义已经不同。旧段可能是“命中特征数”,新段可能是“命中规则数”,数值相近纯属巧合。这种连续是假连续,比明显断点更危险,因为它会让复盘时把两段数据当成同一口径来比较。

两种解释:存储口径不同,还是站点真的变了

解释一:口径断层。历史曲线记录的是数据源的输出,而不是扫描对象的固有属性。换源后,特征命名、去重方式、对同一段混淆代码的识别粒度都可能不同。旧数据源把一段注入脚本算作一个命中,新数据源可能按函数拆成多个命中,曲线自然抬高。这种情况下曲线“接不上”是正常的,站点没有变化。

解释二:站点确实发生了变化。换数据源的时间点,恰好和一次上线、改版、CDN 切换、模板更新重合。此时曲线跳变反映的是真实变化,只是被换源这件事掩盖了。如果只归因于换源,就会漏掉一次真实的挂马事件;如果只归因于站点变化,就会误判新数据源更灵敏。

两种解释可以同时成立,也可以只成立一种。关键不是选边,而是找到能把它们分开的证据。

区分证据:用同一批样本做交叉核对

最有效的动作是固定一批历史样本,用新数据源重扫,再和旧数据源的记录逐条对比。具体做法:从换源前的时间段里抽取若干次扫描记录,保留被扫页面地址和扫描时间,用新数据源对同一批地址重扫一次,然后按下面三类结果归因。

这个动作的结果会直接决定下一步:如果差异集中在“两源都报但数量不同”,历史曲线可以保留,只需在换源点加一条竖线标注口径变更;如果出现大量“旧有新无”且人工核对确认旧源是误报,说明旧段曲线本身不可信,应当把换源前的数据降级为参考,不作为趋势基线;如果出现“旧无新有”且人工核对确认是真实挂马,说明换源前的漏报需要单独复盘,而不是简单拼接曲线。

一个假设例子:拼接前先确认字段

假设某团队的挂马扫描软件把每次扫描结果存成一条记录,字段包括扫描时间、页面地址、命中规则 ID、命中次数、数据源版本。换源后,数据源版本字段变了,但命中次数仍在累加。此时把两段曲线直接连起来,看起来平滑,实际上是把两套规则体系的计数混在了一条线上。

正确的处理是:按数据源版本分组,分别画线,或者在换源点断开并标注。如果业务上必须看一条连续曲线,可以改用“是否存在命中”这个布尔值作为纵轴,因为布尔值受口径影响较小;但即便如此,也要说明新数据源覆盖的规则范围是否包含旧数据源的规则范围,否则连续仍是表面的。

这个例子里,动作是“按数据源版本分组重画”,结果是曲线从一条变成两段,复盘时不再把口径变化误读为风险变化,下一步的告警阈值也需要按新数据源单独设定,而不是沿用旧阈值。

决定前需要确认的几个条件

在决定历史曲线是否拼接之前,先确认这几件事,缺一件就不要急着下结论。

  1. 历史记录里是否保存了原始命中明细,而不只是聚合值。只有聚合值时,拼接基本不可靠。
  2. 新旧数据源的规则集是否有明确的对应关系文档。没有对应关系时,只能按“不可比”处理。
  3. 换源时间点前后,站点是否有其他变更。有重合时,必须先用人工核对排除真实变化。
  4. 曲线的用途是什么。用于对外报告时,口径一致性优先;用于内部排查时,保留两段并标注更实用。

这些条件决定的是“能不能连”,而不是“连起来好不好看”。如果原始明细缺失、规则对应关系不明、又存在同期站点变更,那么历史曲线应当视为两段独立数据,而不是一条可延续的趋势线。具体到某个挂马扫描软件是否提供原始明细导出、是否保留数据源版本字段,需要以该工具当前的导出字段和文档为准,不能凭印象判断。

图1 图2

nginx