01 · 总体架构
变体检测系统六段管道
每段独立伸缩,段间以消息队列解耦,单段故障可降级运行
说明:架构为本课题设计方案;各开源工具在管道中的位置见 §06。
1.1 关键设计决策
- 拉模型 + 推模型并存:已注册候选集合的"定期复扫"为拉模型;Zone diff 与情报源命中为推模型。推模型保时效,拉模型保覆盖。
- 品牌分片:按品牌切分任务单元,单品牌管道独立重试与限速,避免单一大品牌的解析风暴拖垮全局。
- 幂等与可重放:每段消费消息即产出带版本的数据快照,任意段可回放到任意时间点重算。
02 · 批量 DNS 解析工程
解析段是全管道吞吐瓶颈所在。千级品牌 × 数千候选的复扫意味着单次任务可达千万级查询,必须做专门工程:
2.1 高并发解析器选型
| 工具 | 类型 | 特点与在本管道中的角色 |
|---|---|---|
| massdns | 开源(C) | 超高并发批量 DNS 解析器(blechschmidt/massdns),支持多种解析模式与自定义 resolver 列表,适合亿级查询量离线批扫,本管道复扫段首选。 |
| zdns | 开源(Go) | ZMap 项目生态工具,支持并发控制与结构化 JSON 输出,工程集成友好。 |
| dnsx | 开源(Go) | ProjectDiscovery 出品,支持多类型记录探测与管道化输入输出,适合与情报工作流串联。 |
| dnstwist | 开源(Python) | 生成+解析一体,单品牌场景开箱即用;大规模场景建议仅用其生成段,解析段交予上述专用工具。 |
注:massdns 仓库 github.com/blechschmidt/massdns;zdns 仓库 github.com/zmap/zdns;dnsx 仓库 github.com/projectdiscovery/dnsx,均以各仓库文档为准。
2.2 Resolver 池与速率纪律
- 自建递归集群:生产级管道应自建递归 resolver 池(如基于 Unbound/Knot Resolver 集群),公共 resolver(8.8.8.8 等)仅作交叉校验——既避免对公共基础设施的负载压力,也防止查询行为被公共 resolver 侧观测。
- 速率与退避:对权威 NS 的查询遵循 RFC 5321 精神的礼貌原则:每 resolver 限速 + 失败指数退避 + SERVFAIL 重试预算。
- 结果缓存与负缓存:NXDOMAIN 结果按 DNS TTL 语义缓存,复扫间隔内的重复查询直接命中缓存。
03 · 数据管道与存储
- 消息队列:段间解耦用队列(Kafka/RabbitMQ 等),任务消息携带品牌 ID、候选清单哈希与优先级;
- 在线存储:候选与判定结果用关系库(支持事务与复杂关联查询);解析记录与时序数据用列式存储(ClickHouse 等)支撑大规模聚合分析;
- 证据归档:网页快照(截图+HTML+证书链+响应头)以对象存储归档,文件名含哈希与时间戳,满足证据固定要求(第8页);
- 图谱(可选):跨品牌基础设施聚类(同 IP/同证书/同 NS)可用图数据库存储实体关系,支撑攻击者资产池分析。
04 · 性能与成本优化
- 候选分层解析:按第2页候选量级分布配置解析预算——Insertion/Replacement 全量低频复扫(周级),Keyboard/Combosquatting 高频(日级),情报命中即时解析;
- 增量优先:存在性确认走 Zone diff 的增量集,避免全量候选反复探测;
- 弹性伸缩:解析段无状态化,批扫任务来时水平扩容,平时缩容;
- 成本度量:以"单品牌月均解析查询数"为核心成本指标,纳入品牌优先级排序函数(高价值品牌高预算)。
05 · 调度、告警与运营
- 调度器:品牌级 cron 调度 + 事件触发(情报源命中、Zone diff 命中)双轨;
- 预警路由:恶意级 → 即时通道(Webhook/SOAR 对接);可疑级 → 日报聚合;良性归档可检索;对外共享统一按 STIX 2.1 格式导出,便于与 MISP / OpenCTI 等情报平台集成(共享字段与脱敏要求见第3页合规边界);
- 运营看板:按品牌展示候选量、注册命中率、判定分布、平均发现时延(注册→预警)四项核心指标;
- SLO 基线:新注册变体发现时延 ≤24h(Zone 源),情报命中转发时延 ≤1h。
06 · 开源工具链全景
| 环节 | 工具 | 许可/生态 |
|---|---|---|
| 变体生成 | dnstwist、URLCrazy | 开源,Apache-2.0 等(以仓库为准) |
| 批量解析 | massdns、zdns、dnsx | 开源(GPL/Apache/BSD,以仓库为准) |
| 数据接入 | RDAP 客户端库、CT 日志流订阅 | RFC 7482-7485 标准协议;CT 日志公开订阅 |
| 情报比对 | PhishTank/URLhaus API、MISP(情报管理平台) | 社区 API + 开源平台(MISP 项目) |
| 消息管道 | Kafka / RabbitMQ / Redis Streams | 开源生态 |
| 列式存储 | ClickHouse | 开源(Apache-2.0) |
| 自动化响应 | SOAR(Shuffle 等开源方案) | 开源/商业并存 |
本节参考来源(第5页)
[1]
massdns:github.com/blechschmidt/massdns;zdns:github.com/zmap/zdns;dnsx:github.com/projectdiscovery/dnsx
[2]
dnstwist:github.com/elceef/dnstwist;URLCrazy:github.com/urbanadventurer/urlcrazy
[3]
MISP 开源威胁情报平台:misp-project.org;ClickHouse:clickhouse.com
[4]
Unbound(递归解析器):nlnetlabs.nl/projects/unbound;Knot Resolver:knot-resolver.cz