DataCon 的 DNS 恶意流量检查一题回顾

本文作者:0x584A(信安之路作者团队成员)

首先,第二题直接放弃了,算法对我来说很掉头发的,果断放弃了。毕竟现在不是答题时间了,下面的分析如有错误还请各位留言扶正,谢谢!

这是对 DataCon 大赛 DNS 方向第一个题的回顾,开赛那会工作比较忙所以没参与。现在时间稍宽松了就会尝试去解这些题目,特别是去参加X天白帽大会,吴总所说的目前分析响应人员的缺口是极大的,所以多掌握一点分析能力并没有坏处。

第一题解压后的数据包挺大的 2.6G,分包是必然的。

模拟网络管理员的攻击分析过程。给定的流量中,包含五种 DNS 攻击流量。选手需要准确判断出五种 DNS 攻击,并说明 pcap 文件中那些数据包是攻击流量。

注意看题目中的重点,我们要找出五种 DNS 攻击,并注明那些数据是那种攻击。

首先用 Wireshark 载入,查看 IO 图表查看最高频的时间段,将其中的组分成一个新的 pcap 包便于接下来的分析。(过滤规则 q1_final.pcap 老是卡死)

我这里切的范围是 3812183-4748606

接下来我们来统计那些是服务器、请求最多的协议、数据包大小等

协议分级

可以看到,切出来的包仅有 DNS 协议,用户主动发送的数据包占比最大。

分组长度

在分组长度中可以看到,大于 1000 数据包也挺多需要分析一下。

基础知识补充

一个 DNS 解析查询请求及响应:

52 为解析查询请求、53 为响应请求,使用的是 UDP 协议,这样 DNS 服务器负载更低,响应更快。

DNS 在区域传输的时候使用 TCP 协议,其他时候使用 UDP 协议。既然是 UDP 协议,那么都应为知道 UDP 的源地址是可以伪造的吧?这样就可能存在反射 DOS 攻击

参考:《Memcached UDP DOS复现》

https://www.jgeek.cn/archive/id/22.html

DNS子域名爆破

首先统计下请求次数最高的 IP 列表,这里不得不吐槽下 Wireshark 是真的慢,半个小时进度条才百分之几。。。

无奈用 tshark 命令,快很多。

tshark -r timeTop.pcap -T fields -e ip.src -e ip.dst | tr "\t" "\n" | sort | uniq -c | sort -nr

第一个IP 45.80.170.1 可以排除掉,应为它对应的是一个DNS服务 ns2.c76e40.net

所以我们通过塞选 144.202.64.226,发现 Info 中的域名前缀很不正常量也很大,所以属于子域名爆破行为。

DNS 放大 DDOS 攻击

UDP 是一种无状态、无连接的传输协议,攻击者可以伪造了一个被攻击者的IP,请求了可利用的目标服务器,目标服务器得到响应后将数据返还给被攻击者,从而形成了 DDOS 攻击。

而在DNS解析中,要返回大量的数据包势必会用到 ANY,这样返回的数据包才可能会特别大。也就是dig @114.114.114.114 ANY baidu.cn

这样就过滤出了 DNS 服务响应数据了,接下来我们来找攻击者发起的请求数据。这里需要知道,那些 DNS 服务器支持递归、那些不支持。

接着排除不支持 ANY 的 DNS 服务器,也就是 Refused(见附录:dns.qry.type列表,或维基百科):

这样就剩下 71.85.232.160、127.130.104.152、105.191.150.205 三个了。

这有一个有意思的东西,在参考《反射 DDOS 攻击防御的一点小想法》的时候,

https://www.freebuf.com/column/138163.html

作者发现自己 ANY 查询时并不会返回大于 3000 多字节的响应包,而是存在截断的情况。最后发现在来源请求中使用 DNS 的扩展名机制 (EDNS0) ,加上 UDP payload size 就能指定返回指定报文的长度。

所以通过 dns.rr.udp_payload_size 来筛选就可以确定哪些是攻击请求:

有意思的,在过滤类型的时候有发现了新的攻击类型

非法的动态更新

查了下【Dynamic update response】,意思是动态更新

不安全的动态更新:随着动态主机配置协议(DHCP)的出现,客户计算机由 DHCP 服务器动态分配 IP 地址,使原来手工更新其 A(Address)记录和 PTR(反向解析)记录变得很难管理。因此在 RFC2136 标准草案中提出了 DNS 动态更新,使得 DNS 客户端在 IP 地址或名称出现更改的任何时候都可利用 DNS 服务器来注册和动态更新其资源记录。尽管 DNS 动态更新协议规定只有经过授权的主机才能动态更新服务器的 zone file,但是攻击者还是可以利用 IP 欺骗伪装成 DNS 服务器信任的主机对区数据进行添加、删除和替换。

发起 Dynamic update 的总次数是 5055 条。

域传送漏洞

这个相对来说就比较好检测了,包含 IXFR、AXFR 即可:

可以看到,请求集中在 96.199.230.176 这个 IP 上,所以计算它的发起次数即可。

DNSSec 域名遍历(枚举)

最后这个实在是找不出来了,Google 了很久 DNS 的攻击类型均是重复上面的四种,没办法了只能找各位师傅的 writeup 看了。

DataCon 9102: DNS Analysis, THU Team 1

https://github.com/shyoshyo/Datacon-9102-DNS

一开始我还挺疑惑的,为啥这个算是一种攻击?因为我在 timeTop.pcap 中也有看到,不就是返回的数据包中带点公钥字符串,反射都不算吧。

直到我看了大佬的脚本:q1.sh:

https://github.com/shyoshyo/DataCon-9102-DNS/blob/master/src/q1.sh

好吧,我是真的柴鸡...

带星号通配符的域名前缀,也是醉了...

总结

1、0 基础入门了 DNS,以前只是停留在知道的层面上

2、对 DNS 协议、攻击场景加深了理解

3、学习了各位大佬神仙一样的解法及思路

这个 DNS 统计 里面其实啥都有,开始我咋没发觉它这么好用呢?

常用字段

dns.qry.type 列表

参考

Wireshark 使用小技巧

http://blog.nsfocus.net/wireshark-tips/

DNS 解析的过程是什么

https://www.zhihu.com/question/23042131

DNS 服务器能遭受到的 DDNS 攻击类型

https://www.cnblogs.com/cobbliu/p/3383135.html

反射 DDOS 攻击防御的一点小想法

https://www.freebuf.com/column/138163.html

测试 DNS 区域递归漏洞以及避免 DNS 放大攻击

https://www.anquanke.com/post/id/83245

DNS 中的协议字段详细定义

https://www.cnblogs.com/549294286/p/5172448.html

原文发布于微信公众号 - 信安之路(xazlsec)

原文发表时间:2019-06-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券