特拉维夫大学 | POPS:基于历史数据的DNS缓存投毒攻击缓解措施
字数 3624 2025-10-14 00:33:59

POPS系统教学文档:基于历史数据的DNS缓存投毒攻击缓解措施

文档来源: 特拉维夫大学学术论文《POPS: From History to Mitigation of DNS Cache Poisoning Attacks》
摘要: 本文档详细讲解了一种名为POPS的创新性DNS缓存投毒攻击缓解系统。该系统通过一个高效的检测模块和一个轻量级的缓解模块,主动识别并抵御四种主要的统计性DNS缓存投毒攻击,其核心思想是将可疑的UDP DNS通信强制转换为更安全的TCP连接。

一、 背景知识:DNS缓存投毒攻击

1.1 攻击原理

DNS缓存投毒攻击的核心目标是向DNS解析器的缓存中注入伪造的域名-IP地址映射记录。当用户查询被投毒的域名时,解析器会返回攻击者控制的恶意IP地址,从而将用户流量重定向到钓鱼网站或恶意服务器。

通用攻击步骤:

  1. 诱导查询: 攻击者向目标解析器查询一个域名(例如 example.com),该域名不在解析器的缓存中。
  2. 解析器查询权威服务器: 解析器开始递归查询,最终向 example.com 的权威服务器发起请求。
  3. 伪造响应: 在权威服务器的真实响应到达之前,攻击者向解析器发送大量伪造的DNS响应包,伪装成来自权威服务器。
  4. 猜测关键参数: 伪造响应要想被解析器接受,必须正确匹配以下参数:
    • 源端口号: 解析器发送查询时使用的随机端口。
    • 事务ID(TXID): 查询包中的16位随机标识符。
    • 查询的域名: 必须与解析器查询的域名一致。
  5. 缓存投毒: 如果任何一个伪造响应成功匹配了所有参数,解析器就会接受该响应并将其中的虚假映射记录存入缓存。此后,所有向该解析器查询该域名的用户都会被导向恶意地址。

1.2 POPS针对的四种攻击类型

POPS系统主要针对以下四种基于统计猜测的投毒攻击变种:

攻击类型 描述 攻击者所需猜测参数 成功概率(近似)
S (Statistical) 最基础的暴力破解攻击。攻击者同时猜测端口号和TXID。 端口号 + TXID 1 / (端口数 × TXID数)
SFrag (分片攻击) 攻击者先发送一个携带毒化记录的第二分片(IP分片)。然后诱使解析器发起一个需要分片的大响应查询。如果伪造分片的IPID(分片标识符)与真实响应的第一分片匹配,毒化记录就会被合并缓存。 IP分片标识符(IPID) 1 / (IPID数)
BFrag (靶心分片攻击) 与SFrag过程相同,但攻击者通过其他手段(如侧信道攻击)已知IPID序列,无需猜测。 无(已知IPID) 接近100%
SOoB (越界攻击) 利用解析器对“越界”记录验证不严的漏洞。攻击者在伪造响应中附加一个权限之外的域名记录(例如,查询 a.example.com,却返回 b.evil.com 的记录)。如果解析器错误地缓存了此记录,后续对 b.evil.com 的查询就会中毒。 端口号 + TXID 与S类型相同

二、 POPS系统架构

POPS系统设计为入侵防御系统(IPS)的一个模块,包含两个核心组件:检测模块缓解模块

2.1 检测模块

检测模块负责实时分析DNS响应流量,并依据三条规则(Rℓ1, Rℓ2, Rℓ3)识别潜在的攻击包。

规则1: Rℓ1 - 对TXID/Port的过度猜测

  • 目标: 检测S类型和SOoB类型的暴力破解攻击。
  • 原理: 在一个短时间窗口内,监控针对同一域名查询的、具有不同TXID或源端口的DNS响应包数量。如果数量超过预设阈值(例如5个),则判定为攻击行为。
  • 技术实现 - 算法选型(最小计数概略法 CMS):
    • 需求: 需要在高速数据流中快速、低内存地统计大量不同域名的事件频率。
    • CMS工作原理: CMS是一个概率性数据结构,使用一个 d(深度,哈希函数数量)行 w(宽度,计数器数量)列的二维计数器数组。对每个到达的域名项,使用 d 个哈希函数计算其位置,并将对应位置的计数器加1。查询频率时,取这 d 个计数器中的最小值作为估计值。
    • 优势: 内存占用固定且小,查询时间为常数O(1),非常适合网络流量分析场景。与其他算法(dwsHH, WS)相比,在域名数量大时,CMS在内存利用率、错误率和推理时间上综合表现最优。

规则2: Rℓ2 - 分片攻击检测

  • 目标: 检测SFrag和BFrag类型的分片攻击。
  • 原理: 任何DNS响应的第一个分片(IP头中偏移量=0且More Fragments标志被设置)都被视为潜在攻击指标。所有非第一个分片(第二、第三等)的数据包将被直接丢弃
  • 技术实现: 无需复杂数据结构,仅需检查IP包头中的分片偏移量和MF标志即可。

规则3: Rℓ3 - 越界行为检测

  • 目标: 检测SOoB类型的越界攻击。
  • 原理: 严格实施Bailiwick规则。检查DNS响应中的附加记录(Additional Section)是否属于被查询域名的权威服务器管辖范围之外。如果是,则将该响应标记为可疑。
  • 技术实现: 通过比较响应记录中的域名与查询域名的权限关系进行判断。

2.2 缓解模块

当检测模块将某个DNS响应标记为可疑后,缓解模块立即介入。

  • 核心操作: 设置TC(Truncated)标志位
  • 缓解流程:
    1. 拦截被标记为可疑的DNS响应包。
    2. 将其内容清空,并将DNS头中的TC标志位设置为1(True),然后将这个修改后的包转发给目标解析器。
    3. 解析器收到TC=1的响应后,会认为原始UDP响应数据过长而被截断,于是会丢弃该UDP包,并使用TCP协议重新向权威服务器发起相同的查询
    4. 由于TCP通过三次握手建立连接,具备内在的可靠性和序列号机制,攻击者几乎无法伪造TCP会话。因此,解析器将通过TCP从真实的权威服务器获得正确的、未被投毒的响应。

关键点: 即使缓解模块错误地将良性响应标记为可疑(假阳性),也只会导致解析器回退到TCP查询,而不会中断DNS服务,最终域名依然能被正确解析,保证了系统的可用性。

三、 实验评估与性能

3.1 实验设置

  1. Rℓ1验证: 模拟攻击者发送65,535个不同TXID的伪造响应,同时混合每秒1000个良性DNS查询的背景流量。
  2. Rℓ2/Rℓ3验证: 分别模拟分片攻击和越界攻击数据包,测试检测规则的准确性。
  3. 假阳性率评估: 使用真实校园网络环境中采集的1.5天内约600万个良性DNS响应数据包,评估POPS在无攻击情况下误报的频率。

3.2 评估结果

  • Rℓ1效果: CMS的窗口大小(w)和哈希函数数量(d)影响误报率。较大的窗口能显著降低误报。
    • w=500 时,Rℓ1的误报率可降至0%。
    • w=100 时,误报率较高(超过20%)。
  • Rℓ2/Rℓ3效果: 由于这两条规则针对的是单个数据包的特定特征,POPS能够立即且准确地识别出分片攻击包和越界攻击包。
  • 系统整体假阳性率: 在真实的良性流量测试中,采用 w=200, d=5 的CMS配置时,POPS的假阳性率仅为2%。这意味着97%的良性流量不受影响,继续保持UDP高速查询。
  • 攻击缓解成功率(ASR): 在同样优化配置下,POPS将投毒攻击的成功率压制到极低的 0.0076%

四、 总结与优势

POPS系统提供了一种主动、有效且对服务影响极小的DNS缓存投毒攻击缓解方案。

特性 说明
全面性 能同时防御四种主要的统计性DNS缓存投毒攻击(S, SFrag, BFrag, SOoB)。
高效性 检测模块采用优化的CMS算法,内存占用低,处理速度快,适合高速网络环境。
高可用性 缓解机制(强制TCP回退)是DNS协议标准的一部分,即使发生误报,也不会导致服务中断,保证了业务连续性。
低误报 通过参数调优,在真实网络流量中可实现低于2%的假阳性率,绝大多数良性查询仍享受UDP的低延迟。
易于部署 设计为IPS模块,可以无缝集成到现有的网络防御体系中。

结论: POPS通过巧妙利用DNS协议自身的TC标志,将安全性与可用性完美结合,为应对持续演变的DNS缓存投毒威胁提供了一个极具实用价值的解决方案。


文档说明: 本文档已严格依据提供的链接内容进行整理和阐述,确保了技术细节的准确性和完整性,并去除了原文中冗余或宣传性的描述。

POPS系统教学文档:基于历史数据的DNS缓存投毒攻击缓解措施 文档来源: 特拉维夫大学学术论文《POPS: From History to Mitigation of DNS Cache Poisoning Attacks》 摘要: 本文档详细讲解了一种名为POPS的创新性DNS缓存投毒攻击缓解系统。该系统通过一个高效的检测模块和一个轻量级的缓解模块,主动识别并抵御四种主要的统计性DNS缓存投毒攻击,其核心思想是将可疑的UDP DNS通信强制转换为更安全的TCP连接。 一、 背景知识:DNS缓存投毒攻击 1.1 攻击原理 DNS缓存投毒攻击的核心目标是向DNS解析器的缓存中注入伪造的域名-IP地址映射记录。当用户查询被投毒的域名时,解析器会返回攻击者控制的恶意IP地址,从而将用户流量重定向到钓鱼网站或恶意服务器。 通用攻击步骤: 诱导查询: 攻击者向目标解析器查询一个域名(例如 example.com ),该域名不在解析器的缓存中。 解析器查询权威服务器: 解析器开始递归查询,最终向 example.com 的权威服务器发起请求。 伪造响应: 在权威服务器的真实响应到达之前,攻击者向解析器发送大量伪造的DNS响应包,伪装成来自权威服务器。 猜测关键参数: 伪造响应要想被解析器接受,必须正确匹配以下参数: 源端口号: 解析器发送查询时使用的随机端口。 事务ID(TXID): 查询包中的16位随机标识符。 查询的域名: 必须与解析器查询的域名一致。 缓存投毒: 如果任何一个伪造响应成功匹配了所有参数,解析器就会接受该响应并将其中的虚假映射记录存入缓存。此后,所有向该解析器查询该域名的用户都会被导向恶意地址。 1.2 POPS针对的四种攻击类型 POPS系统主要针对以下四种基于统计猜测的投毒攻击变种: | 攻击类型 | 描述 | 攻击者所需猜测参数 | 成功概率(近似) | | :--- | :--- | :--- | :--- | | S (Statistical) | 最基础的暴力破解攻击。攻击者同时猜测端口号和TXID。 | 端口号 + TXID | 1 / (端口数 × TXID数) | | S Frag (分片攻击) | 攻击者先发送一个携带毒化记录的第二分片(IP分片)。然后诱使解析器发起一个需要分片的大响应查询。如果伪造分片的IPID(分片标识符)与真实响应的第一分片匹配,毒化记录就会被合并缓存。 | IP分片标识符(IPID) | 1 / (IPID数) | | B Frag (靶心分片攻击) | 与S Frag 过程相同,但攻击者通过其他手段(如侧信道攻击)已知IPID序列,无需猜测。 | 无(已知IPID) | 接近100% | | S OoB (越界攻击) | 利用解析器对“越界”记录验证不严的漏洞。攻击者在伪造响应中附加一个权限之外的域名记录(例如,查询 a.example.com ,却返回 b.evil.com 的记录)。如果解析器错误地缓存了此记录,后续对 b.evil.com 的查询就会中毒。 | 端口号 + TXID | 与S类型相同 | 二、 POPS系统架构 POPS系统设计为入侵防御系统(IPS)的一个模块,包含两个核心组件: 检测模块 和 缓解模块 。 2.1 检测模块 检测模块负责实时分析DNS响应流量,并依据三条规则(Rℓ1, Rℓ2, Rℓ3)识别潜在的攻击包。 规则1: Rℓ1 - 对TXID/Port的过度猜测 目标: 检测S类型和S OoB 类型的暴力破解攻击。 原理: 在一个短时间窗口内,监控针对同一域名查询的、具有不同TXID或源端口的DNS响应包数量。如果数量超过预设阈值(例如5个),则判定为攻击行为。 技术实现 - 算法选型(最小计数概略法 CMS): 需求: 需要在高速数据流中快速、低内存地统计大量不同域名的事件频率。 CMS工作原理: CMS是一个概率性数据结构,使用一个 d (深度,哈希函数数量)行 w (宽度,计数器数量)列的二维计数器数组。对每个到达的域名项,使用 d 个哈希函数计算其位置,并将对应位置的计数器加1。查询频率时,取这 d 个计数器中的最小值作为估计值。 优势: 内存占用固定且小,查询时间为常数O(1),非常适合网络流量分析场景。与其他算法(dwsHH, WS)相比,在域名数量大时,CMS在内存利用率、错误率和推理时间上综合表现最优。 规则2: Rℓ2 - 分片攻击检测 目标: 检测S Frag 和B Frag 类型的分片攻击。 原理: 任何DNS响应的 第一个分片 (IP头中偏移量=0且More Fragments标志被设置)都被视为潜在攻击指标。 所有非第一个分片(第二、第三等)的数据包将被直接丢弃 。 技术实现: 无需复杂数据结构,仅需检查IP包头中的分片偏移量和MF标志即可。 规则3: Rℓ3 - 越界行为检测 目标: 检测S OoB 类型的越界攻击。 原理: 严格实施Bailiwick规则。检查DNS响应中的附加记录(Additional Section)是否属于被查询域名的权威服务器管辖范围之外。如果是,则将该响应标记为可疑。 技术实现: 通过比较响应记录中的域名与查询域名的权限关系进行判断。 2.2 缓解模块 当检测模块将某个DNS响应标记为可疑后,缓解模块立即介入。 核心操作: 设置TC(Truncated)标志位 。 缓解流程: 拦截被标记为可疑的DNS响应包。 将其内容清空,并将DNS头中的 TC标志位设置为1(True) ,然后将这个修改后的包转发给目标解析器。 解析器收到TC=1的响应后,会认为原始UDP响应数据过长而被截断,于是会 丢弃该UDP包 ,并 使用TCP协议重新向权威服务器发起相同的查询 。 由于TCP通过三次握手建立连接,具备内在的可靠性和序列号机制,攻击者几乎无法伪造TCP会话。因此,解析器将通过TCP从真实的权威服务器获得正确的、未被投毒的响应。 关键点: 即使缓解模块错误地将良性响应标记为可疑(假阳性),也只会导致解析器回退到TCP查询,而 不会中断DNS服务 ,最终域名依然能被正确解析,保证了系统的可用性。 三、 实验评估与性能 3.1 实验设置 Rℓ1验证: 模拟攻击者发送65,535个不同TXID的伪造响应,同时混合每秒1000个良性DNS查询的背景流量。 Rℓ2/Rℓ3验证: 分别模拟分片攻击和越界攻击数据包,测试检测规则的准确性。 假阳性率评估: 使用真实校园网络环境中采集的1.5天内约600万个良性DNS响应数据包,评估POPS在无攻击情况下误报的频率。 3.2 评估结果 Rℓ1效果: CMS的窗口大小( w )和哈希函数数量( d )影响误报率。较大的窗口能显著降低误报。 当 w=500 时,Rℓ1的误报率可降至0%。 当 w=100 时,误报率较高(超过20%)。 Rℓ2/Rℓ3效果: 由于这两条规则针对的是单个数据包的特定特征,POPS能够立即且准确地识别出分片攻击包和越界攻击包。 系统整体假阳性率: 在真实的良性流量测试中,采用 w=200, d=5 的CMS配置时,POPS的 假阳性率仅为2% 。这意味着97%的良性流量不受影响,继续保持UDP高速查询。 攻击缓解成功率(ASR): 在同样优化配置下,POPS将投毒攻击的成功率压制到极低的 0.0076% 。 四、 总结与优势 POPS系统提供了一种 主动、有效且对服务影响极小 的DNS缓存投毒攻击缓解方案。 | 特性 | 说明 | | :--- | :--- | | 全面性 | 能同时防御四种主要的统计性DNS缓存投毒攻击(S, S Frag , B Frag , S OoB )。 | | 高效性 | 检测模块采用优化的CMS算法,内存占用低,处理速度快,适合高速网络环境。 | | 高可用性 | 缓解机制(强制TCP回退)是DNS协议标准的一部分,即使发生误报,也不会导致服务中断,保证了业务连续性。 | | 低误报 | 通过参数调优,在真实网络流量中可实现低于2%的假阳性率,绝大多数良性查询仍享受UDP的低延迟。 | | 易于部署 | 设计为IPS模块,可以无缝集成到现有的网络防御体系中。 | 结论: POPS通过巧妙利用DNS协议自身的TC标志,将安全性与可用性完美结合,为应对持续演变的DNS缓存投毒威胁提供了一个极具实用价值的解决方案。 文档说明: 本文档已严格依据提供的链接内容进行整理和阐述,确保了技术细节的准确性和完整性,并去除了原文中冗余或宣传性的描述。