记录黑客技术中优秀的内容,传播黑客文化,分享黑客技术精华

注入攻击新方式:通过DNS隧道传输恶意载荷

2021-09-18 10:59

原文作者:Philipp Jeitner, Haya Shulman

原文标题:Injection Attacks Reloaded: Tunnelling Malicious Payloads over DNS

原文链接:https://www.usenix.org/system/files/sec21-jeitner.pdf

原文来源:USENIX Security 2021

笔记作者:2rrrr@SecQuan

文章小编:cherry@SecQuan

介绍

DNS在处理DNS记录时的透明性,即DNS不会尝试对DNS记录进行解释或理解,是使其成为互联网重要基础设施的一大原因。对于一个新的应用程序,只需要简单地创建一条新的DNS记录,就能立即传播至整个互联网,而不需要对服务器或平台做任何修改。

然而作者的研究中发现,这种透明性给互联网带来了一个严重的漏洞,利用DNS的透明性,可以将恶意载荷编码至DNS记录中来实现字符串注入攻击,进而导致系统崩溃、数据损坏和泄漏、远程代码执行等。由于DNS的透明性是DNS协议实现的一个标准,因此只要是符合标准的应用都有可能受到这一方式的攻击,而不是仅针对某一种应用。

方法

具体而言,这种攻击方式主要利用DNS透明性导致的两个特性:

  • DNS解析器(通常是发起DNS查询请求的DNS服务器)不会对接收到的DNS记录进行修改,因此恶意代码能够完整保存

  • 接收DNS解析结果的程序不会对结果做任何验证和过滤

基于以上特性,作者提出的攻击方式如图1所示。通常攻击者并不能直接将恶意代码上传至目标服务器,因此采用类似于反射攻击的方式,攻击者首先通过浏览器脚本、或发送邮件的触发方式,使目标服务器发起一个DNS查询。在第④步中,名称服务器(Name Server)受到攻击者的控制,向DNS解析器返回带有恶意代码的DNS记录。随后,DNS解析器和应用程序都不会对结果进行验证,因此恶意代码成功注入到目标服务器中。

以DNS缓存投毒为例,基于这一攻击模型有两种攻击方式,分别利用\\.和\\000字符:

  • \\.在解码时会被简单地认为是 .字符,因此DNS记录 www\\.target.com. A 6.6.6.6存入DNS缓存后就是将域名 www.taget.com解析为 6.6.6.6的一条A记录。但大多数应用都不太可能出现直接访问这类错误域名的情况,可以用CNAME记录来重定向,例如以下两条记录以及攻击过程

injectdot.attacker.com. CNAME www\\.victim.com.

www\\.victim.com. A 6.6.6.6

  • \\000是C语言字符串的结束符,很多情况下DNS记录中的字符串也会被这一字符截断,例如

injectzero.attacker.com CNAME www.target.com\\000.attacker.com

www.target.com\\000.attacker.com A 6.6.6.6

经过解析、存入缓存后得到的效果和www.target.com A 6.6.6.6相同。

此外,作者也对eduroam、LDAP等其他应用做了相关的攻击测试,攻击方式都是基于图1所示,只是针对特定应用需要构造不同的DNS记录payload。表2总结了几种应用的测试结果,除了针对DNS的缓存投毒,还能够造成应用程序的崩溃、eduroam的免验证连接、XSS攻击等等。

互联网上的测试

作者通过编写应用程序调用API的方式,向互联网中公开的DNS解析器发起查询请求来进行测试。DNS解析器的数据集来自Censys,其中包含300万个解析器,不过最终只保留了会对A、CNAME、SRV、TXT会做出响应的132万个左右。图9显示了基于CNAME和PTR类型的payload。

结果显示,针对eduroam和LDAP的payload在超过99%的解析器上都有效;其次是图9中的payload,在96%的解析器上有效;最后是缓存投毒,在约8%的解析器上生效。不过,缓存投毒是其中最为简单的攻击方式,仅要求攻击者能够控制一个名称服务器,因此这一结果依然不是一个小的数字。

根本原因及缓解措施

总的来说,导致这一漏洞的根本原因可以归纳为4个方面:DNS中威胁模型的缺乏、DNS记录的解析缺少标准规范、没有对DNS记录进行验证和过滤、主机名和域名存在的差异性。解决这一漏洞最直接的方法,就是针对其利用到的两个特性,将接收到的DNS解析结果用对待用户输入一样的方式进行过滤。但与此同时,随着互联网的进一步发展,我们也很难预见未来可能会使用哪些字符,因此对字符进行限制过多也可能会造成透明度降低、影响传输效率,甚至引入限制的同时有可能伴随着新漏洞的出现。一系列的原因使得解决这一问题仍然是一项挑战。

声明:本文来自安全学术圈,版权归作者所有。


知识来源: https://www.secrss.com/articles/34460

阅读:98287 | 评论:0 | 标签:注入 攻击 DNS

想收藏或者和大家分享这篇好文章→复制链接地址

“注入攻击新方式:通过DNS隧道传输恶意载荷”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

黑帝公告 📢

永久免费持续更新精选优质黑客技术文章Hackdig,帮你成为掌握黑客技术的英雄

广而告之 💖

标签云 ☁