针对DNS转发设备的缓存投毒攻击 (一)

答前些时间,关于DNS缓存投毒的相关知识引起了一些关注,我搜索了一些资料,发现了安全顶会USENIX Security 2020上收录的一篇关于DNS缓存投毒的文章:《Poison Over Troubled Forwarders: A Cache Poisoning Attack Targeting DNS Forwarding Devices》。文章介绍了针对DNS Forwarder(DNS转发设备)的一种新型缓存投毒攻击方法。
传统的DNS解析架构涉及存根解析器、递归解析器和权威解析器。当域名需要解析时,DNS客户端通常会向递归解析器发送查询请求,递归解析器会从权威解析器获取答案并返回给客户端。
IP协议允许数据包分片,当数据包超过链路最大传输单元(MTU)时,会被分解成多个小分片以便在链路上传输。被分片的IP数据包通过IP首部的字段重新组装,其中最重要的是IPID(IP标识),用于确定分片属于哪个数据包。
针对DNS缓存投毒历史,此前的攻击主要针对递归解析器,采用伪造攻击或分片整理攻击。伪造攻击通过制造恶意DNS响应欺骗递归解析器接受。分片整理攻击则利用被分片的DNS响应包中的第二个分片段不包含DNS或UDP报文中的报头或问题部分,从而避开伪造攻击的防御措施。
DNS Forwarder是位于存根解析器和递归解析器之间的新型DNS基础设备,它不递归解析DNS客户端的查询请求,而是将其转发给上游的递归解析器。DNS Forwarder的运行机制相对简单,它依赖于上游的递归解析器进行安全性检查,这是其关键弱点之一,使得针对DNS Forwarder的缓存投毒攻击成为可能。
针对DNS Forwarder的分片整理攻击,攻击者首先探测IPID,然后构造响应数据包的第2个分片,包含一条伪造的A记录,将其指向攻击者控制的恶意IP地址。攻击者随后发起查询请求,将数据包转发给递归解析器。递归解析器本地缓存中不存在查询的记录,因此会向权威域名解析器发起查询请求。权威域名解析器返回的响应数据包被分片,并被转发给DNS Forwarder。当合法的分片到达DNS Forwarder时,与预先构造的第2个分片重新组装,形成一个“合法”的响应包,被转发给DNS客户端。攻击的关键在于确保构造的分片能够与合法的分片匹配,依赖于对IPID的预测。
为了使递归解析器转发给DNS Forwarder的响应数据包成功分片,攻击者需要构造超大的DNS响应数据包,通常通过在DNS响应数据包中添加CNAME记录链来实现。这种超大的数据包响应需要所有DNS服务器支持DNS扩展名机制(EDNS(0)),以允许通过UDP传输较大的DNS消息,从而迫使数据包通过分片的方式传输。
攻击者还需要预测上游递归解析器的IPID分配,以确保构造的第2个分片能够与合法的分片成功组合。目前有三种IPID分配算法可供选择,攻击者需要根据这些算法来预测IPID。
成功的攻击条件包括EDNS(0)支持、没有DNS响应截断、DNS Forwarder中不进行响应验证、以及使用记录缓存DNS响应结果。攻击者需要破坏其中的任意一个条件来阻止攻击的产生。
通过测试家用路由器和路由软件,研究团队证实了DNS Forwarder存在这样的缺陷。后续研究提出了一种侧信道攻击方法,能够对随机化的源端口进行去随机化,从而成功预测分片,进一步深入了对DNS缓存投毒攻击的研究。
了解这些攻击原理和缓解措施对于提高DNS安全性具有重要意义。关注最新安全动态和防御策略是保护网络免受此类攻击的关键。
域名被污染是什么意思 (二)
答域名被污染,又称DNS污染、域名欺骗或域名缓存投毒,是指攻击者在域名服务器的DNS应答到达用户电脑之前,伪造一个错误的DNS应答发送给用户电脑,导致用户电脑收到错误信息并获得一个错误的IP地址的现象。
具体来说:过程描述:当用户尝试访问某个网站时,用户的电脑会向域名服务器发送域名查询请求。在正常情况下,域名服务器会返回一个正确的IP地址。然而,在域名被污染的情况下,攻击者能够在域名服务器的正确应答到达用户电脑之前,先发送一个伪造的、错误的DNS应答给用户电脑。结果影响:由于用户电脑首先收到了错误的DNS应答,它会根据这个错误的应答去访问一个错误的IP地址。这通常会导致用户无法访问预期的网站,或者访问到一个被攻击者控制的、伪造的网站。潜在风险:域名污染可能导致用户数据泄露、网络钓鱼攻击、恶意软件安装等安全风险。因此,对于网络安全来说,防范域名污染是非常重要的。
什么是DNS缓存投毒攻击,有什么防护措施 (三)
答DNS缓存投毒攻击,是一种利用DNS解析过程中的漏洞,将伪造的DNS响应注入到DNS缓存中,从而诱导用户访问错误的IP地址,进而实施钓鱼、恶意软件植入等攻击行为。攻击者通过伪造DNS响应,假冒真实的DNS服务器,将用户重定向至欺诈性网站,窃取用户敏感信息或进行其他非法活动。具体来说,这种攻击方式具有隐蔽性和持续性。一旦DNS服务器被投毒,所有依赖该服务器的用户都可能会受到影响。此外,由于DNS缓存的存在,即使攻击者停止发送伪造的响应,受害者仍然可能会继续受到攻击,直到DNS缓存过期或被清除。攻击的原理主要包括:DNS缓存允许DNS解析器临时存储域名与IP地址的对应关系;攻击者利用DNS缓存投毒攻击,向DNS解析器或目标设备发送虚假的DNS响应,假冒真实的DNS服务器;攻击者试图将虚假的DNS记录放入目标设备的DNS缓存中;DNS消息具有事务ID,用于将响应与相关的请求进行匹配。
为了防御DNS缓存投毒攻击,企业可以采取以下策略:采用安全的DNS协议,如DNSSEC(DNS安全扩展),对DNS查询和响应进行数字签名和验证,确保DNS响应的真实性和完整性;限制DNS服务器的访问权限,通过只允许内部网络中的用户访问DNS服务器,并禁止对外部网络的DNS查询,减少攻击者成功投毒的机会;及时更新修补系统和清理DNS缓存,定期更新修补系统和清理DNS缓存,可以防止旧的或恶意的DNS响应继续影响用户;采用多源DNS解析,通过使用多个DNS服务器进行解析,可以增加DNS解析的可靠性和安全性;加密DNS流量,通过DNS over HTTPS(DoH)或DNS over TLS(DoT)等加密技术,对DNS流量进行加密传输,保护用户隐私和数据安全;部署防火墙和入侵检测系统,在网络边界和关键节点部署防火墙和入侵检测/防御系统,可以监控网络流量并检测异常行为,防止恶意流量的入侵。
德迅云安作为提供安全服务的平台,可为用户部署T级别数据中心,提供高品质的网络环境和丰富的带宽资源,搭载自主化管理平台、德迅卫士(主机安全防火墙)、Web云防护(一站式网站安全加速),以及1V1专家技术支撑,全面保障用户的安全、可靠、稳定、高效的服务体验。自主化管理平台,提供灵活的资产管理和实时可视化监控功能;德迅卫士,提供系统层的主机安全软件,远程提供二次验证体系,一键后台优化服务器权限、威胁组件、威胁端口;Web云防护,防SQL注入、XSS跨站,后门隔离保护、Webshell上传、非法HTTP协议请求,一站式网站安全加速。
总结而言,DNS安全是企业组织数字化发展中不可或缺的一部分。面对当前频发的网络攻击,通过综合的防御措施,降低DNS攻击的风险,确保DNS的安全性,对于保障企业组织的数字化发展顺利进行至关重要。
一文带你理解tcache缓存投毒 (四)
答tcache缓存投毒是一种利用glibc的tcache特性进行的内存安全攻击,其工作原理和利用方法简述如下:
tcache简介:
tcache是glibc自2.26版本引入的性能优化特性。它为每个线程创建私有缓存,存储小于或等于1032字节的内存块,以减少线程间的资源竞争。tcache的数据结构为数组,每个元素对应不同大小chunk的链表,遵循先进后出原则。
缓存投毒攻击核心:
利用tcache的特殊设计,通过修改tcache_entry结构,使用户数据区域的前几个字节包含tcache指针。攻击者有机会修改next指针,实现任意地址写入,相较于fastbin,tcache的利用更为直接。
利用方法:
通过连续申请和释放chunk,精确控制内存布局。利用程序漏洞造成chunk overlap,影响堆内存布局。修改tcache指针,达到控制内存的目的,如计算libc基地址、劫持got表,甚至通过ROP绕过seccomp限制。
实际应用案例:
如2023年GreyCTF的pwn挑战,通过write_books函数的漏洞,利用oob造成chunk overlap,进而影响堆内存布局。利用tcache poisoning控制内存,实现攻击目标。
学习资源:
GitHub的how2heap/tcache_poisoning.c项目提供了详细的代码分析和实践案例,可供参考学习。
总结:tcache缓存投毒是一种高级的内存安全攻击技术,利用glibc的tcache特性进行。通过精确控制内存布局和修改tcache指针,攻击者可以实现任意地址写入和控制内存,进而达到攻击目的。理解其工作原理和利用方法对于应对类似的内存安全问题至关重要。
虽然我们无法避免生活中的问题和困难,但是我们可以用乐观的心态去面对这些难题,积极寻找这些问题的解决措施。法衡网希望针对DNS转发设备的缓存投毒攻击,能给你带来一些启示。