运用DNS绕过安全设备的Oday.

一、DNS介绍

DNS域名系统是互联网关键的基础设施之一,它是一个将域名与IP地址互相映射的全球分布数据库。对于恶意DNS的过滤、检测恶意网站域名、僵尸网络和网络隐秘通道发现是安全防护设备中必不可少的一种手段。

二、原理

RFC 1035规定了域名每个标签不超过63字节,域名总长不超过255字节。可以含有任意8bit值,通常情况下域名标签由英文字母、数字和连字符构成。RFC 2181进一步明确了,DNS本身不对域名所含字符内容进行限制。一些文献中验证了ISC BIND等常用DNS服务器软件对二进制域名的支持。尽管在RFC1 123 之中对于DNS软件支持无法转换为可打印格式的资源记录,内部存储不能使用文本格式。由于Letter Digit Hyphen规则的域名含有可打印字符,如此产生了两种问题,其一为大多数程序对于域名的处理采用字符串函数,可能会对于某些特定结束字符进行处理(例如C语言中对于\000进行处理),其二DNS服务器对于特殊字符进行处理后依然返回解析结果,某些程序过滤恶意DNS域名并未考虑。

三、测试方法

用PYTHON socketserver和struct开发简单的DNS服务器进行测试,再使用DNSPython模块作为DNS请求的测试。在对DNS服务器测试时,我们向被测的服务器发送正常的或者带有特殊字符的DNS两种请求方式,如果DNS服务器两种数据报文传输的请求结果存在区别则证明其二失败,否则成功。

四、危害

1.隐藏恶意软件域名:

通过该方法可绕过基于DNS流量检测的流量分析软件、算法和相关安全设备及在线文件分析系统,通过构造加入特殊字符的DNS请求,既保证了域名成功解析,又保护了恶意域名难以被发现。

2.隐藏DNS隐蔽通道

将伪造源地址的方法与本文域名欺骗方法结合,可以起到更好的DNS隧道流量隐蔽效果,通过伪造源地址来分散DNS隧道流量,对内网数据泄密和远程控制隧道加入了新的挑战。

3.绕过DNS过滤

利用这个方法进行DNS过滤设备的穿透具有一定的可行性,目前已发现大量带有域名过滤的安全设备.存在被绕过的风险。

五、修复

所谓有攻就有防,通过DNSPython修复,在dns记录中,加入过滤异常的特殊字符。 同时在安全设备中扩大过滤DNS请求特殊字符的范围。

本文章转自安全大咖vr_system分享的原创文章,经作者授权同意后墨者安全转载来的,如有任何版权或者内容错误问题,请联系小编删除,谢谢!仅供安全爱好者研究学习,对用于非法途径的行为,发布者及作者不承担任何责任。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据分析1480

一篇文章就可以跟你聊完Pandas模块的那些常用功能

在数据分析工作中,Pandas 的使用频率是很高的,一方面是因为 Pandas 提供的基础数据结构 DataFrame 与 json 的契合度很高,转换起来就很...

9530
来自专栏Python数据科学

这可能是AI、机器学习和大数据领域覆盖最全的一份速查表

导读:本文是根据 Stefan Kojouharov 发表在 Medium 上的文章整理而成的一份人工智能、神经网络、机器学习、深度学习和大数据方面的速查表。为...

6620
来自专栏崔庆才的专栏

Github 标星 4w+,如何用 Python 实现所有算法

几位印度小哥在 GitHub 上建了一个各种 Python 算法的新手入门大全。从原理到代码,全都给你交代清楚了。为了让新手更加直观的理解,有的部分还配了动图。

15740
来自专栏Python无止境

Python 工匠:写好面向对象代码的原则(上)

花下猫语:今天继续给大家分享一篇好文章,有助于 Python 进阶的。Python 是一门支持面向对象的语言,但它跟典型的面向对象语言不完全相同。如何在 Pyt...

10620
来自专栏崔庆才的专栏

Python 工匠:编写地道循环的两个建议

循环是一种常用的程序控制结构。我们常说,机器相比人类的最大优点之一,就是机器可以不眠不休的重复做某件事情,但人却不行。而“循环”,则是实现让机器不断重复工作的关...

13310
来自专栏VB小源码

VB.NET CHART图表示例

Imports System.Windows.Forms.DataVisualization.Charting

35330
来自专栏崔庆才的专栏

Python 工匠:使用装饰器的技巧

装饰器(Decorator) 是 Python 里的一种特殊工具,它为我们提供了一种在函数外部修改函数的灵活能力。它有点像一顶画着独一无二 @ 符号的神奇帽子,...

8510
来自专栏儿童编程

Python turtle 玩出花儿

用Python turtle经过简单的重复与规律就可以作出很多美感十足的画面。下面的代码是个模版。只需要调整相应的参数,用好随机数就可以玩出花样来! 下图就是...

14210
来自专栏Bingo的深度学习杂货店

Leetcode【319、672】

灯泡开关。初始时有 n 个灯泡关闭,第 i 轮,每 i 个灯泡切换一次开关。找出 n 轮后有多少个亮着的灯泡。

9530
来自专栏AI研习社

使用Python/scikit-image实现图像分割

曾今看过The Terminator的人肯定会同意这是那个时代最伟大的科幻电影。在电影中,詹姆斯卡梅隆推出了一个有趣的视觉效果概念,让观众可以看到被称为终结者的...

38210

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励