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

**URL:** <https://forum.90sec.com/t/topic/189>\
**Category:** 信安之路\
**Created:** [2019 年6 月 10 日 01:12 UTC](https://forum.90sec.com/t/topic/189 "2019-06-10T01:12:01Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

作者： ![xazlsec](https://forum.90sec.com/user_avatar/forum.90sec.com/xazlsec/32/659_2.png) [@xazlsec](https://forum.90sec.com/u/xazlsec)\
发布日期： [2019 年6 月 10 日 01:12 UTC](https://forum.90sec.com/t/topic/189/1 "2019-06-10T01:12:01Z")

</div>

> 本文作者： **0x584A** （信安之路作者团队成员）

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

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

 ![image](https://forum.90sec.com/uploads/default/original/1X/2e2d687e5304f6c34747b227bebf3d7effebfaca.jpeg)

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

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

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

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

 ![image](https://forum.90sec.com/uploads/default/original/1X/ec0b0eaac3a44d9f27610d4a0eca13a9cf8819b3.jpeg)

我这里切的范围是 `3812183-4748606`

 ![image](https://forum.90sec.com/uploads/default/original/1X/16074e1aa38809bc2790b91a2767d25856f33bca.jpeg)

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

协议分级

 ![image](https://forum.90sec.com/uploads/default/original/1X/b39b1d9dcd8089916c7d5a95ddaa0111712799a4.jpeg)

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

分组长度

 ![image](https://forum.90sec.com/uploads/default/original/1X/f5121e3b16f7329cab342a91d17582849de05c06.jpeg)

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

## 基础知识补充

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

 ![image](https://forum.90sec.com/uploads/default/original/1X/b7687eb75478c410673f455889720ac3ff08cf59.jpeg)

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

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

参考：《Memcached UDP DOS复现》

> [https://www.jgeek.cn/archive/id/22.html](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

 ![image](https://forum.90sec.com/uploads/default/original/1X/538f1590a5b7e0ebaaefd3bcf5b75aa6b6793cfb.jpeg)

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

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

 ![image](https://forum.90sec.com/uploads/default/original/1X/db4aa70b3547a3111e5ff347f816a8c59c916753.jpeg)

 ![image](https://forum.90sec.com/uploads/default/original/1X/5430eb72754396c771e30e96999c5f5cb225ff97.png)

### DNS 放大 DDOS 攻击

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

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

 ![image](https://forum.90sec.com/uploads/default/original/1X/997e17596b9c939e3d0e089b06b2a8c28e087beb.jpeg)

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

 ![image](https://forum.90sec.com/uploads/default/original/1X/a422e70cd0981f698bb1de21b613715434aab960.png)

接着排除不支持 **ANY** 的 DNS 服务器，也就是 Refused（见附录：dns.qry.type列表，或维基百科）：

 ![image](https://forum.90sec.com/uploads/default/original/1X/31a48776683f17404ac16e9380a7f0da2b8da9aa.jpeg)

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

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

> [https://www.freebuf.com/column/138163.html](https://www.freebuf.com/column/138163.html)

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

所以通过 dns.rr.udp\_payload\_size 来筛选就可以确定哪些是攻击请求：

![image](https://forum.90sec.com/uploads/default/optimized/1X/e5b7a56ac42807979662f4b39a5fef3f210e2e0b_2_690x26.png)

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

 ![image](https://forum.90sec.com/uploads/default/original/1X/74fc31d4fb20653aaae8756da6d8bd8bb7020af1.jpeg)

### 非法的动态更新

查了下【Dynamic update response】，意思是 **动态更新** 。

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

![image](https://forum.90sec.com/uploads/default/original/1X/838f29a65f61905ac849e920b94dd0fe829ffaca.png)

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

### 域传送漏洞

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

 ![image](https://forum.90sec.com/uploads/default/original/1X/c6107cf5edc7b19355b3f2fc70c315e0c4967d27.jpeg)

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

![image](https://forum.90sec.com/uploads/default/optimized/1X/502ce74ce89eac481d8f005ac1bfdd2ac3d11888_2_690x32.png)

### DNSSec 域名遍历（枚举）

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

DataCon 9102: DNS Analysis, THU Team 1

> [GitHub - shyoshyo/DataCon-9102-DNS: DataCon 9102: DNS Analysis, THU Team 1 · GitHub](https://github.com/shyoshyo/Datacon-9102-DNS)

![image](https://forum.90sec.com/uploads/default/optimized/1X/a7b74920b2dfddf7f00a58be71885e3b02101c9c_2_690x33.png)

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

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

> [DataCon-9102-DNS/src/q1.sh at master · shyoshyo/DataCon-9102-DNS · GitHub](https://github.com/shyoshyo/DataCon-9102-DNS/blob/master/src/q1.sh)

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

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

 ![image](https://forum.90sec.com/uploads/default/original/1X/d3bcd00b9728e67502e2e041ae3cf94f1623c0dc.jpeg)

### 总结

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

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

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

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

 ![image](https://forum.90sec.com/uploads/default/original/1X/a2bb578f1f0ce8b1150b57eb294ee1fbf9a2dc7a.jpeg)

#### 常用字段

 ![image](https://forum.90sec.com/uploads/default/original/1X/b25527e405a516b2f4b5db93a3ebf76a4210796c.jpeg)

#### dns.qry.type 列表

 ![image](https://forum.90sec.com/uploads/default/original/1X/76066d7d98be4a5b139c5c6650bac2d45215c4d9.jpeg)

##### 参考

Wireshark 使用小技巧

> [Wireshark使用小技巧 – 绿盟科技技术博客](http://blog.nsfocus.net/wireshark-tips/)

DNS 解析的过程是什么

> [https://www.zhihu.com/question/23042131](https://www.zhihu.com/question/23042131)

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

> [DNS服务器能遭受到的DDNS攻击类型 - CobbLiu - 博客园](https://www.cnblogs.com/cobbliu/p/3383135.html)

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

> [https://www.freebuf.com/column/138163.html](https://www.freebuf.com/column/138163.html)

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

> [测试DNS区域递归漏洞以及避免DNS放大攻击-安全KER - 安全资讯平台](https://www.anquanke.com/post/id/83245)

DNS 中的协议字段详细定义

> [DNS 中的协议字段详细定义 - Loull - 博客园](https://www.cnblogs.com/549294286/p/5172448.html)
