01 · DNS协议机制精要
1.1 报文结构与标志位
DNS报文由12字节定长首部与四段变长部分组成:问题段(Question)、应答段(Answer)、授权段(Authority)、附加段(Additional)。首部中的标志位是审计中判断应答性质的关键证据:
| 标志位 | 含义 | 审计意义 |
|---|---|---|
| QR | 查询/应答 | 伪造应答的首要鉴别字段,投毒仿真中重点比对 |
| AA | 权威应答 | 区分权威直答与缓存代答,权威一致性监测的依据 |
| TC | 截断 | 应答超UDP载荷时置位,客户端应回退TCP(RFC 7766强制要求支持);TC置位被滥用可诱发TCP耗尽 |
| RD / RA | 期望递归 / 支持递归 | RD=1且来自非授权客户端的查询,是开放递归探测的判定特征之一 |
| AD | 已认证数据 | 仅当客户端置DO位且服务端完成DNSSEC验证时由服务端设置,是"验证已发生"的报文级证据 |
| CD | 禁用检查 | 客户端要求跳过DNSSEC验证,用于诊断;滥用会削弱验证防线 |
| RCODE | 应答码 | NOERROR/NXDOMAIN/SERVFAIL等;SERVFAIL频发是上游故障或投毒攻击的告警信号 |
1.2 EDNS(RFC 6891):扩展机制与载荷协商
经典DNS将UDP应答限制在512字节内,EDNS0通过OPT伪资源记录协商更大的UDP载荷(建议值1232字节起步,以穿越常见路径MTU)并携带扩展标志(如DO位声明DNSSEC感知)。审计要点:①EDNS实现缺陷是历史故障大户——2019年"DNS Flag Day"全球协调行动正是为强制移除对EDNS畸形应答过度容忍的遗留兼容逻辑;②UDP分片是投毒攻击面(分片重组绕过部分端口随机化假设),RFC 8906总结了此类常见运营问题;③OPT记录中的扩展选项(如EDNS Cookie、ECS)须逐项评估开启策略。
1.3 DNSSEC记录类型与验证逻辑
| 记录类型 | 作用 | 审计要点 |
|---|---|---|
| RRSIG | 资源记录集的数字签名 | 有效期校验、算法强度(当前实践以RSASHA256/ECDSAP256SHA256为主) |
| DNSKEY | 区域公钥 | ZSK/KSK分离、与DS的链上一致性 |
| DS | 父域对子域KSK的委托签名者记录 | 信任链建立点;DS/DNSKEY不匹配即链断 |
| NSEC / NSEC3 | 认证不存在(RFC 4034 / RFC 5155) | NSEC3可缓解区域遍历(zone walking),但增加解析开销;aggressive NSEC缓存见RFC 8198 |
验证失败的处置纪律:验证器对bogus应答应返回SERVFAIL而非降级返回未验证数据——BIND的dnssec-validation auto、Unbound的harden-dnssec-stripped均为此设计。审计时须确认"验证失败可观测":bogus计数、验证失败域名清单应进入监控,否则DNSSEC形同虚设。
1.4 传输层:UDP为主、TCP兜底、加密补充
UDP 53是默认传输;当应答超过协商载荷或首试UDP失败时回退TCP(RFC 7766明确递归器与权威服务器必须支持TCP)。审计含义:①仅放行UDP 53而屏蔽TCP 53会被攻击者利用(TC置位即造成解析失败),也违反标准;②TCP通道须纳入DDoS防护(SYN泛洪、连接耗尽);③DoT/DoH/DoQ加密传输(第6页展开)不改变DNS语义,仅改变信道。
02 · 递归解析与缓存规则
2.1 完整解析流程的证据链
以首次查询www.example.com为例,递归器的标准动作序列是:①查缓存(命中且未过期→直接应答);②未命中→向根服务器查询com委托(通常缓存命中);③向com权威查询example.com委托(通常缓存命中);④向example.com权威查询www的A记录;⑤(若开启验证)沿DS/DNSKEY链逐级验证RRSIG;⑥写入缓存(记录类型、应答段、TTL起算点)并应答客户端。每一步都是可观测的审计点:转发链上额外出现的"第四方"递归、TTL异常压缩、附加段夹带(bailiwick违规)等均可在此过程中被识别。
2.2 TTL与缓存的三条铁律
- TTL由权威指定、递归无权拉长:按RFC 2181第5节的澄清语义,缓存记录的生存期以应答中的TTL为准;降低TTL(如将3600改写为60)是某些"管控型"篡改的特征,审计可用多解析器比对TTL识别(呼应子课题01的多路径一致性测量)。
- 否定缓存单独计时:NXDOMAIN/NODATA按权威SOA记录中的最小TTL缓存(RFC 2308),攻击者可通过操纵SOA TTL放大或缩短否定缓存驻留时间。
- 缓存是共享资源:一个用户的投毒结果影响全体用户——这决定了第4页将缓存完整性列为最高优先级的审计域。
2.3 bailiwick:最容易被忽视的缓存写入边界
bailiwick规则要求:递归器只能把"应答中与查询名同域(或为其子域)"的记录写入缓存,以防止攻击者借example.com的应答段把bank.com的伪造NS记录塞进缓存。Kaminsky攻击的核心技巧之一正是利用附加段的第三方域名记录绕开当时的宽松实现。现代实现(BIND的fetch-glue no、Unbound的harden-referral-path)默认收紧该边界,但老旧固件仍是盲区——这正是嵌入式转发器审计的必查项。
03 · 攻击面全景清单
下表汇总递归解析器面临的十二类主要攻击面,全部可在公开文献中找到对应出处。清单是本课题各防御章节的"问题索引":
| # | 攻击面 | 机理要点 | 关键防护 |
|---|---|---|---|
| 1 | 开放递归放大 | 伪造源地址的小查询触发递归器向受害者大应答(ANY/TXT/大RRset),形成反射放大 | BCP38入口过滤+RRL+ANY最小化(第3页) |
| 2 | 缓存投毒(经典/Kaminsky型) | 抢答伪造应答:16位事务ID碰撞,Kaminsky变体借附加段第三方域名把"每次尝试成功概率"摊薄到每秒多域名多次 | 源端口随机化+0x20+Cookie+DNSSEC纵深(第4页) |
| 3 | 随机子域(水刑)攻击 | 僵尸网络以不存在的随机子域名灌向递归器,递归器再放大灌向权威,双向耗尽缓存与带宽 | NXDOMAIN限流+RRL+权威侧防护(第3页) |
| 4 | 幻影域(Phantom Domain) | 权威服务器故意极慢应答,使递归器长期占用等待队列资源,拖垮并发能力(Herzberg & Shulman, NDSS 2013) | 上游超时与并发配额管理 |
| 5 | 请求泛洪(UDP/TCP) | 直接淹没查询接收层;TCP通道的SYN与连接耗尽 | Anycast+清洗+内核参数加固(第3页) |
| 6 | 缓存窥探(Snooping) | 攻击者探测缓存中记录的剩余TTL,推断他人是否访问过特定域名 | 统一缓存过期时间、拒绝间接探测(第4页§05) |
| 7 | 实现层漏洞 | 报文解析缺陷(如BIND CVE-2016-2776断言失败)、缓存管理缺陷(Unbound幽灵域名CVE-2020-12663)、内存安全(dnsmasq DNSpooq系列) | 补丁SLA+基线加固(第5页) |
| 8 | 委托链劫持/转发劫持 | 上游递归或运营商链路篡改应答;本地hosts与路由器DNS被改写 | 加密上游+多路径一致性比对(第6页;子课题01) |
| 9 | DNS重绑定(Rebinding) | 恶意域名交替解析为攻击者IP与127.0.0.1/内网IP,绕过浏览器同源限制攻击内网设备 | RPZ私有地址阻断+设备侧校验 |
| 10 | 区域传送泄露(AXFR) | 若递归兼权威或配置不当,AXFR(RFC 5936)泄露完整区文件,暴露内网拓扑 | allow-transfer ACL+TSIG(RFC 8945) |
| 11 | 隐私泄露 | 明文查询被链路窃听;ECS(RFC 7871)将客户子网带给第三方权威 | 加密传输+ECS最小化+QNAME最小化(第6页) |
| 12 | 解析武器化(恶意用途) | DGA域名回连(T1568.002)、DNS隧道C2(T1071.004)经由递归器出站 | 出站侧检测与情报联动(第7页) |
优先级建议:对多数组织而言,攻击面1—3(可用性滥用)与攻击面2/6(缓存完整性)是必须最先收敛的"高危且高频"面;攻击面7的实现漏洞具有突发性,靠补丁纪律兜底;攻击面8—11则与隐私合规章节联动治理。审计资源分配应遵循此序。
04 · 标准与漏洞演进时间线(1987—2022)
05 · 威胁情报映射(MITRE ATT&CK)
递归解析器安全并非孤立课题,其攻防行为已在MITRE ATT&CK中获得系统标注,可直接复用其编号体系组织检测与狩猎:
| ATT&CK编号 | 技术名称 | 与递归解析器的关联 |
|---|---|---|
| T1071.004 | 应用层协议:DNS | C2经DNS通道通信时,递归器是必经出站点;异常查询熵、超长TXT、异常QTYPE比例是可狩猎信号 |
| T1568.002 | 动态解析:DGA | 失陷主机周期性查询算法生成域名,递归侧可基于NXDOMAIN率与字符熵基线检测(与子课题05联动) |
| T1498.002 | 网络拒绝服务:反射放大 | 本课题第3页正面防御对象;检测侧关注单源/多源异常放大流量特征 |
| T1584.002 | 攻陷基础设施:DNS服务器 | 攻陷他人递归/权威用于投毒或中转的预置活动,审计时需关注自身设施是否被滥用 |
| T1557 | 中间人(Adversary-in-the-Middle) | 链路篡改DNS应答属于该战术家族的协议级表现,与子课题01劫持检测直接对应 |
小结:本页建立了"协议机制→攻击面→标准时间线→威胁情报编号"的四层事实底座。第3页起,每一页均从攻击面清单中认领条目并展开为可执行的审计方法。
本节参考来源(第2页)
本节所有机制描述均可对照以下原文核验。
RFC 1034/1035(1987)、RFC 2181(1997,DNS澄清)、RFC 2182(1997,NS选择指南)、RFC 2308(1998,否定缓存):rfc-editor.org
RFC 6891(EDNS0,废止RFC 2671)、RFC 7766(TCP传输要求,废止RFC 5966)、RFC 8482(ANY最小化响应)、RFC 8906(常见运营问题):rfc-editor.org
RFC 4033/4034/4035(DNSSEC核心)、RFC 5155(NSEC3)、RFC 8198(aggressive NSEC)、RFC 9364(DNSSEC部署实践指南):rfc-editor.org
RFC 5452(抗伪造应答措施,0x20)、RFC 7873(DNS Cookie):rfc-editor.org
RFC 5936(AXFR)、RFC 8945(TSIG):rfc-editor.org
US-CERT VU#800113(2008 Kaminsky漏洞协同公告):kb.cert.org/vuls/id/800113
Herzberg & Shulman, "Vulnerable Delegation of DNS Resolution"(NDSS 2013,幻影域攻击):ndss-symposium.org
MITRE ATT&CK T1071.004 / T1568.002 / T1498.002 / T1584.002:attack.mitre.org
US-CERT TA14-017A《UDP-Based Amplification Attacks》(BAF清单):cisa.gov TA14-017A;Rossow, NDSS 2014《Amplification Hell》