恶意网络:IP 段如何评分与分级
恶意网络是指一类 IP 地址空间块,通常以 CIDR 网段表示,被多个独立的威胁情报来源标记为托管垃圾邮件、恶意软件、僵尸网络或攻击利用基础设施。ipto 会根据这些来源的一致程度对它们排序。每个网段不再只是平面黑名单中的一条记录,而是获得 1 到 10 的评分和一个风险等级,方便你决定处置的力度。
什么算恶意网络
单个行为不端的地址只是一次事件,而一整个网段反复出现在威胁情报源中,就构成一种模式。对防御方来说,这种模式通常比任何单个地址更有价值,因为攻击者轮换地址的速度比情报源收录的速度更快。恶意网络页面正是出于这个原因跟踪网段而非单个主机。像 /24 这样的条目意味着该子网内的全部 256 个地址都被牵连:整个地址块被分配给敌对基础设施或正被其使用,而不是在一个原本干净的分配中仅有一个被标记的主机。
数据每六小时根据公开来源重建一次,与其他威胁情报源的节奏相同。目前网段来自三个输入:IPsum 聚合威胁列表、Spamhaus DROP 和 Spamhaus EDROP。其中每一个本身就是多种信号的组合,因此 ipto 把它们之间的一致性作为评分的依据。该页面支持按子网搜索,可按等级或来源情报源筛选,并按每页 200 条分页。同样的数据也可通过 /v1/abuse 以 JSON 形式获取,支持 tier、source、q 和 page 查询参数。
评分与分级如何确定
评分规则刻意保持简单,便于审计。IPsum 会针对每个地址发布收录它的独立黑名单数量。ipto 只保留至少被 3 个列表收录的地址,评分即该数量,上限为 10。Spamhaus DROP 条目起始分为 10,因为它们覆盖的是被劫持或由犯罪运营者掌控的地址空间;EDROP 条目起始分为 9。当同一网段出现在多个来源中时,取最高分,因此对该网段而言,Spamhaus 的收录总是优先于 IPsum 的计数。
等级直接由评分得出:
- Critical(8 到 10):置信度最高的一组。这些通常是由犯罪基础设施运营者掌控的地址块,或正被积极滥用的被劫持地址空间,预计会有垃圾邮件、恶意软件投递或凭证窃取行为。
- High(5 到 7):在多个情报源中被标记为敌对,但不一定是有组织的犯罪基础设施。防弹托管的客户和纵容垃圾邮件的 ISP 属于此类。
- Medium(3 到 4):被多个情报源标记,但印证程度较低。共享托管环境,以及历史上有滥用记录但可能已易主的地址块,往往出现在这一级。
宏观策略使用等级,需要对较长的列表排序时使用原始评分。由于评分上限为 10,一个网段不会因为出现在更多列表上而变得"更严重",这让评分尺度能长期保持稳定。
网段级与单 IP 封禁的取舍
单地址检查回答的是一个狭窄的问题:这个具体的 IP 此刻是否被标记?IP 滥用检查器以及 IP 查询返回的 abuse_score 字段就是这样做的,它们使用同样的网段数据,评分随网段一起返回,无需再次查询。网段级数据回答的则是另一个问题:来自互联网这一片区域的任何流量是否值得信任?
一个合理的处置梯度如下:
- Critical 网段:在边界直接丢弃,或在内容分析之前就拒绝 SMTP 连接,因为任何邮件级别的评分都无法为敌对地址块中的发件人"洗白"。
- High 网段:对登录和 API 流量施加严格的速率限制或 CAPTCHA,因为凭证填充和爬取工具通常在这里活动。
- Medium 网段:记录日志并提升验证强度,而不是直接封禁。
- 任何等级:当 SIEM 告警涉及 Critical 网段内的某个地址时,自动升级处理,因为周边上下文会改变优先级。
将网段信号与 ASN 查询提供的网络上下文结合使用。如果三个被标记的网段都属于同一个自治系统,决策可能应当在 ASN 层面做出,而该查询会显示所有者、国家和所宣告的网段。
关于共享网络的注意事项
网段封禁有附带代价。共享托管或云分配中可能包含一个恶意租户和数百个合法租户,对整个前缀实施封禁会误伤所有人。因此,Medium 级条目在实施全面策略之前值得先行复核,尤其是面向消费者的服务,过度封禁意味着流失客户。网段也会易主:因旧有滥用而被列入的地址块,现在可能属于一个干净的所有者,而六小时的刷新频率最多只能与上游情报源的更新速度一样快。
另一个限制是覆盖范围。这些网段是来自上述三个来源的 IPv4 CIDR 块和单个地址;它们并不涵盖所有敌对网络,查询结果干净也不代表可以信任。ipto 同样无法检测住宅代理,因此经由家庭宽带中继的流量不会出现在这里。请把等级当作输入之一,与 VPN、Tor 和数据中心标记一起使用,这些标记可在威胁情报源页面浏览。关于为什么来源之间的一致性很重要,请参阅关于黑名单交叉印证的文章。
在 ipto 上试用
打开恶意网络页面并按 Critical 筛选即可查看最严重的网段,也可以搜索你已经怀疑的某个前缀。在代码中,可调用 GET /v1/abuse?tier=critical&page=0 并缓存响应,响应的缓存有效期为五分钟。带有 abuse_score 和 is_abuser 的单地址查询免费且无需注册,每天最多 1,000 次请求。