- 浏览: 288045 次
文章分类
- 全部博客 (276)
- burp+hydra暴力破解 (1)
- kali linux工具集 (6)
- kali (59)
- linux (54)
- password (14)
- web (63)
- 渗透测试 (50)
- windows (40)
- metasploit (9)
- 信息收集 (32)
- burp suit (4)
- 安全审计 (9)
- https://github.com/secretsquirrel/the-backdoor-factory (0)
- nmap (4)
- arachni (2)
- 工具 (5)
- sql (3)
- 网络 (2)
- 后渗透测试 (10)
- 内网 (5)
- 无线 (2)
- C (3)
- bios (1)
- RoR (12)
- mongodb (1)
- linxu (1)
- gdb (1)
- linux,虚拟化 (1)
- python (4)
最新评论
原文地址:http://resources.infosecinstitute.com/dns-cache-snooping/
1. 介绍
DNS或则命名服务器用于解析域名到IP地址。有很多DNS服务器,它们用于解析特定的域名,但是他们存放特定的DNS记录。这些记录可以是如下:A,AAAA,NS,MX,等。所有的DNS服务器连接到一起来构建一个层级的DNS网络。我们来查询我们自己的DNS服务器来解析www.google.com。
可以看到查询返回5个地址173.194.35.144, 173.194.35.145, 173.194.35.146, 173.194.35.147 and 173.194.35.148,用来负载均衡。
2. DNS Queries
DNSDNS服务器的主要工作是相应DNS查询。一个DNS查询是一个如下啊的问题:“Hello DNS 服务器,请告诉我www.google.com的IP”。当DNS服务器接收到这样一个请求时,它将查询该域名的IP,然后返回相应的IP。DNS服务器可以从本地的cache中查询主机地址信息。如果hostname-ip关系存在,它立即返回结果。否则它将查询forward到他的DNS服务器。
DNSDNS服务器的目的是提供一个本地域名的hostname-IP的转换,它配置喜爱本地区域文件中。但这些不是DNS服务器通常解析的请求;通常情况下是DNS不知道的域名。当DNS服务器接收到这种请求的时候,DNS服务器做下面所有事中的一件:
1. Recursive Query:既然既然DNS服务器不知道hostname,它将会请求它自己的DNS服务器来解决它。如果IP存在,那么递归查询总会返回一个IP地址。递归查询不是DNS服务器必须支持的选项。
2. Iterative Non-Recursive Query:如果如果DNS服务器不知道查询的hostname,那么它返回一组可能知道该IP的DNS服务器。但是如果hostname-IP对存在本地cache中,那么对应的IP必须返回。所有DNS服务器必须支持Non-Recursive Query。
3. DNS Cache 窥探: Non-Recursive Queries are EnabledDNS cache窥探是一个获取已经被DNS服务器解析的请求的过程。如果我们想检查hostname是否被本地DNS网络解析,这将很有用。这意味着本地网络中的节点近期使用那台DNS服务器请求过hostname。从而可以窥探在某一个时间user访问了哪个页面。
如果我莫使用一个非递归查询来解析一个已经解析的域名,那么DNS服务器对于cache窥探很敏感。为了检查DNS服务器是否对于DNS窥探敏感,我们可以尝试用非递归请求来查找一个域名:如果DNS服务器不知道那么它也不请求其他DNS服务器。
我们可以通过nslookup命令:
nslookup -norecursive www.rapid7.com
首先首先我们使用nslookup命令访问8.8.8.8来解析hostname www.rapid7.com,通过-norecursive 选项来使用非递归。在下图的输出中,我们可以看到nslookup命令没有解析www.rapid7.com
然后我们使用-recursive选项,则应该解析:
我们可以看到DNS服务器8.8.8.8通过询问其他DNS服务器来获得www.rapid7.com信息。在查询的最后,它返回地址208.118.227.10,正是www.rapid7.com的IP.
r然后我们再使用-norecursive选项,这次应该显示IP。原因是使用了-recursive,DNS将返回的IP存储在它的cache中。只要该实体存在于cache中,那么即使使用non-recursive,仍然会返回结果。如下:
现在DNS服务器返回208.118.227.10。我们可以发现DNS服务器存在缓存窥探漏洞。
3. DNS Cache Snooping: Non-Recursive Queries are Disabled
对于窥探一个DNS服务器,我们可以使用non-recursive查询,从那里我们可以让DNS服务器返回一个给定资源的任何类型:A,MX,CNAME,PTR等。我们可以通过设置RD标志为0来实现.如果DNScache中存在任何实体,它将会返回。否则,DNS服务器将返回其他可以回答查询的服务器,大多数情况下我们将会获得root.hints文件。
通常情况下当配置DNS服务器时,可以禁止non-recursive。但是即使只允许递归查询,我们有时仍然可以某个实体是否存在于缓冲。有两种方法:
(一)检查query所需的时间:如果查询的时间大致等于发送数据包到服务器的时间,那么该实体可能存在于cache中,因为不需要浪费时间向其他DNS服务器查询。
我们首先用ping命令测量一些ICMP数据报包送指定DNS服务器所需时间。下图发送3个数据包到8.8.8.8服务器,花费大概30.387微秒。查看最后一行的avg
然后使用8.8.8.8服务器来解析hostname,但是应该使用一个可以统计时间的工具-dig。如下所示,用8.8.8.8查询www.google.com花费31 ms。
发送ICMP所需时间大致等于DNS查询时间,所以www.google.com很可能在DNS服务器8.8.8.8的缓存中。
我们解析www.imdb.com,我们将会看到它不在cache中:
查询话费时间61毫秒,意味着查询时间加倍。这表明www.imdb.com不在缓存中。如果我们再次查询同样域名,我们将会看到只需31 ms,可能是因为hostname-ip对由之前的查询已经放到本地cache中了
(二) 当查询一个有漏洞的DNS服务器和root DNS服务器比较他们的TTL
以内因为不允许non-recursive查询,唯一的选项是使用recursive查询-将会在DNS服务器中缓冲结果。但是即使那样,我们可以检查应答的TTL值来判断一个host是否已经存在于cache中。
在上图结果中TTL值是300,认为是一个低值。它意味着在查询的时候hostname www.google.com已经在cache中
1. 介绍
DNS或则命名服务器用于解析域名到IP地址。有很多DNS服务器,它们用于解析特定的域名,但是他们存放特定的DNS记录。这些记录可以是如下:A,AAAA,NS,MX,等。所有的DNS服务器连接到一起来构建一个层级的DNS网络。我们来查询我们自己的DNS服务器来解析www.google.com。
# nslookup www.google.com 192.168.1.1 Server: 192.168.1.1 Address 1: 192.168.1.1 Name: www.google.com Address 1: 173.194.35.148 muc03s01-in-f20.1e100.net Address 2: 173.194.35.144 muc03s01-in-f16.1e100.net Address 3: 173.194.35.147 muc03s01-in-f19.1e100.net Address 4: 173.194.35.145 muc03s01-in-f17.1e100.net Address 5: 173.194.35.146 muc03s01-in-f18.1e100.net Address 6: 2a00:1450:4016:800::1010 muc03s01-in-x10.1e100.net
可以看到查询返回5个地址173.194.35.144, 173.194.35.145, 173.194.35.146, 173.194.35.147 and 173.194.35.148,用来负载均衡。
2. DNS Queries
DNSDNS服务器的主要工作是相应DNS查询。一个DNS查询是一个如下啊的问题:“Hello DNS 服务器,请告诉我www.google.com的IP”。当DNS服务器接收到这样一个请求时,它将查询该域名的IP,然后返回相应的IP。DNS服务器可以从本地的cache中查询主机地址信息。如果hostname-ip关系存在,它立即返回结果。否则它将查询forward到他的DNS服务器。
DNSDNS服务器的目的是提供一个本地域名的hostname-IP的转换,它配置喜爱本地区域文件中。但这些不是DNS服务器通常解析的请求;通常情况下是DNS不知道的域名。当DNS服务器接收到这种请求的时候,DNS服务器做下面所有事中的一件:
1. Recursive Query:既然既然DNS服务器不知道hostname,它将会请求它自己的DNS服务器来解决它。如果IP存在,那么递归查询总会返回一个IP地址。递归查询不是DNS服务器必须支持的选项。
2. Iterative Non-Recursive Query:如果如果DNS服务器不知道查询的hostname,那么它返回一组可能知道该IP的DNS服务器。但是如果hostname-IP对存在本地cache中,那么对应的IP必须返回。所有DNS服务器必须支持Non-Recursive Query。
3. DNS Cache 窥探: Non-Recursive Queries are EnabledDNS cache窥探是一个获取已经被DNS服务器解析的请求的过程。如果我们想检查hostname是否被本地DNS网络解析,这将很有用。这意味着本地网络中的节点近期使用那台DNS服务器请求过hostname。从而可以窥探在某一个时间user访问了哪个页面。
如果我莫使用一个非递归查询来解析一个已经解析的域名,那么DNS服务器对于cache窥探很敏感。为了检查DNS服务器是否对于DNS窥探敏感,我们可以尝试用非递归请求来查找一个域名:如果DNS服务器不知道那么它也不请求其他DNS服务器。
我们可以通过nslookup命令:
nslookup -norecursive www.rapid7.com
首先首先我们使用nslookup命令访问8.8.8.8来解析hostname www.rapid7.com,通过-norecursive 选项来使用非递归。在下图的输出中,我们可以看到nslookup命令没有解析www.rapid7.com
# nslookup -norecursive -type=A www.rapid7.com Server: 8.8.8.8 Address: 8.8.8.8#53 Non-authoritative answer: *** Can't find www.rapid7.com: No answer
然后我们使用-recursive选项,则应该解析:
# nslookup -recursive -type=A www.rapid7.com Server: 8.8.8.8 Address: 8.8.8.8#53 Non-authoritative answer: Name: www.rapid7.com Address: 208.118.227.10
我们可以看到DNS服务器8.8.8.8通过询问其他DNS服务器来获得www.rapid7.com信息。在查询的最后,它返回地址208.118.227.10,正是www.rapid7.com的IP.
r然后我们再使用-norecursive选项,这次应该显示IP。原因是使用了-recursive,DNS将返回的IP存储在它的cache中。只要该实体存在于cache中,那么即使使用non-recursive,仍然会返回结果。如下:
# nslookup -norecursive -type=A www.rapid7.com Server: 8.8.8.8 Address: 8.8.8.8#53 Non-authoritative answer: Name: www.rapid7.com Address: 208.118.227.10
现在DNS服务器返回208.118.227.10。我们可以发现DNS服务器存在缓存窥探漏洞。
3. DNS Cache Snooping: Non-Recursive Queries are Disabled
对于窥探一个DNS服务器,我们可以使用non-recursive查询,从那里我们可以让DNS服务器返回一个给定资源的任何类型:A,MX,CNAME,PTR等。我们可以通过设置RD标志为0来实现.如果DNScache中存在任何实体,它将会返回。否则,DNS服务器将返回其他可以回答查询的服务器,大多数情况下我们将会获得root.hints文件。
通常情况下当配置DNS服务器时,可以禁止non-recursive。但是即使只允许递归查询,我们有时仍然可以某个实体是否存在于缓冲。有两种方法:
(一)检查query所需的时间:如果查询的时间大致等于发送数据包到服务器的时间,那么该实体可能存在于cache中,因为不需要浪费时间向其他DNS服务器查询。
我们首先用ping命令测量一些ICMP数据报包送指定DNS服务器所需时间。下图发送3个数据包到8.8.8.8服务器,花费大概30.387微秒。查看最后一行的avg
# ping -c 3 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_req=1 ttl=47 time=29.7 ms 64 bytes from 8.8.8.8: icmp_req=2 ttl=47 time=30.7 ms 64 bytes from 8.8.8.8: icmp_req=3 ttl=47 time=30.6 ms --- 8.8.8.8 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 29.725/30.387/30.769/0.491 ms
然后使用8.8.8.8服务器来解析hostname,但是应该使用一个可以统计时间的工具-dig。如下所示,用8.8.8.8查询www.google.com花费31 ms。
# dig @8.8.8.8 www.google.com ; <<>> DiG 9.9.1-P2 <<>> @8.8.8.8 www.google.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39294 ;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;www.google.com. IN A ;; ANSWER SECTION: www.google.com. 256 IN A 173.194.35.146 www.google.com. 256 IN A 173.194.35.144 www.google.com. 256 IN A 173.194.35.145 www.google.com. 256 IN A 173.194.35.147 www.google.com. 256 IN A 173.194.35.148 ;; Query time: 31 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; MSG SIZE rcvd: 123
发送ICMP所需时间大致等于DNS查询时间,所以www.google.com很可能在DNS服务器8.8.8.8的缓存中。
我们解析www.imdb.com,我们将会看到它不在cache中:
# dig @8.8.8.8 www.imdb.com ; <<>> DiG 9.9.1-P2 <<>> @8.8.8.8 www.imdb.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28806 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;www.imdb.com. IN A ;; ANSWER SECTION: www.imdb.com. 9410 IN CNAME us.dd.imdb.com. us.dd.imdb.com. 33 IN A 207.171.162.180 ;; Query time: 61 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; MSG SIZE rcvd: 77
查询话费时间61毫秒,意味着查询时间加倍。这表明www.imdb.com不在缓存中。如果我们再次查询同样域名,我们将会看到只需31 ms,可能是因为hostname-ip对由之前的查询已经放到本地cache中了
# dig @8.8.8.8 www.imdb.com ; <<>> DiG 9.9.1-P2 <<>> @8.8.8.8 www.imdb.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53647 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;www.imdb.com. IN A ;; ANSWER SECTION: www.imdb.com. 10776 IN CNAME us.dd.imdb.com. us.dd.imdb.com. 36 IN A 72.21.203.211 ;; Query time: 31 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; MSG SIZE rcvd: 77
(二) 当查询一个有漏洞的DNS服务器和root DNS服务器比较他们的TTL
以内因为不允许non-recursive查询,唯一的选项是使用recursive查询-将会在DNS服务器中缓冲结果。但是即使那样,我们可以检查应答的TTL值来判断一个host是否已经存在于cache中。
# nslookup -type=A www.google.com 8.8.8.8 -debug Server: 8.8.8.8 Address: 8.8.8.8#53 ------------ QUESTIONS: www.google.com, type = A, class = IN ANSWERS: -> www.google.com internet address = 173.194.35.146 ttl = 300 -> www.google.com internet address = 173.194.35.148 ttl = 300 -> www.google.com internet address = 173.194.35.144 ttl = 300 -> www.google.com internet address = 173.194.35.145 ttl = 300 -> www.google.com internet address = 173.194.35.147 ttl = 300 AUTHORITY RECORDS: ADDITIONAL RECORDS: ------------ Non-authoritative answer: Name: www.google.com Address: 173.194.35.146 Name: www.google.com Address: 173.194.35.148 Name: www.google.com Address: 173.194.35.144 Name: www.google.com Address: 173.194.35.145 Name: www.google.com Address: 173.194.35.147
在上图结果中TTL值是300,认为是一个低值。它意味着在查询的时候hostname www.google.com已经在cache中
发表评论
-
如何找书
2015-09-20 19:21 346引用intitle:"index.of" ... -
[转]linkedin_crawl
2015-06-30 00:24 450https://blog.netspi.com/collect ... -
[译]从配置错误的web server中dump git数据
2015-03-26 01:07 584原文地址:https://blog.netspi.com/du ... -
gitrob--github信息收集
2015-01-17 00:36 982原文地址:http://michenriksen.com/bl ... -
网站管理员页面一览
2014-11-26 21:51 551从http://packetstormsecurity.com ... -
[译]Doxing
2014-11-20 00:50 973原文地址:http://resources.infosecin ... -
web编码/解码在线工具
2014-11-18 01:26 1147http://www.intern0t.org/xssor/ -
exiftool提取excel 元数据
2014-11-17 23:41 728root@kali:~# file a.xlsx a.xlsx ... -
dnsenum工作方式
2014-11-15 22:49 3671. 首先测试区域传送 2. 然后通过字典暴力破解(/usr/ ... -
recon-ng 百度模块
2014-11-14 01:34 1041kali中使用recon-ng中recon/hosts/gat ... -
使用nmapdb进行nmap的xml格式转换
2014-11-12 20:21 10951. wget https://github.com/argp ... -
nmap cheatsheet
2014-11-12 00:47 388https://blogs.sans.org/pen-test ... -
exiftool消除元数据
2014-11-09 01:26 613在kali中,对于图片中的元数据,可以使用 exiftool ... -
[译]使用SimpleXML扫描内网
2014-11-09 00:06 449原文地址:https://www.idontplaydarts ... -
[译]搜索引擎hack
2014-11-06 00:49 792原文:http://resources.infosecinst ... -
HTTP Traceroute
2014-11-06 00:11 499该工具用来跟踪http的forward响应。 如果访问的是ht ... -
DotDotPwn的https模式
2014-11-05 22:26 891参考: http://www.spentera.com/201 ... -
[译]dotdotpwn使用
2014-11-05 21:26 1652原文地址:https://github.c ... -
目录遍历漏洞小结
2014-11-04 23:32 14731. 首先使用dotdotpwn发现漏洞 2. 如果存在,则使 ... -
dotdotpwn
2014-11-04 23:06 665参考:https://media.blackhat.com/b ...
相关推荐
在Windows 10操作系统中,更改DNS(Domain Name System)设置有时可能会变得复杂,特别是对于不熟悉系统控制面板深层结构的用户。为了简化这一过程,我们可以利用批处理(BAT)脚本来快速有效地调整DNS配置。批处理...
清除DNS缓存 清除DNS缓存是计算机网络维护中一个非常重要的操作。DNS(Domain Name System,域名系统)缓存是计算机中的一种缓存机制,当计算机对域名访问时,并不是每次访问都需要向DNS服务器寻求帮助的,一般来说...
MS07-029,Windows 域名系统 (DNS) 服务器服务的远程过程调用 (RPC) 管理接口中存在基于堆栈的缓冲区溢出。
5. **接收DNS响应**:设置一个足够大的缓冲区,使用`recvfrom()`函数等待DNS服务器的响应。响应报文包括与请求报文类似的头部,以及一个或多个回答记录,每个回答记录包含查询的域名、类型、类、TTL(生存时间)和...
在本资源中,我们关注的是"易语言DnsQuery解析DNS源码",这是一段用于解析DNS(Domain Name System)的源代码,帮助用户获取域名对应的IP地址或者IP地址对应的域名。DNS是互联网上的一个关键服务,它将人类可读的...
这包括加密传输、防止缓冲区溢出等。 6. **多线程与并发**:DNS服务器需要处理多个并发请求,因此需要设计良好的并发模型,如使用线程池或者异步I/O来提高性能和响应速度。 7. **调试与日志**:为了便于测试和故障...
DNSproxy是一个DNS转发程序,它的主要功能是作为DNS透明代理,帮助用户实现DNS查询的智能路由和安全保护。 透明代理是指在用户无感知的情况下,DNSproxy会自动处理所有DNS查询请求。当用户将他们的DNS服务器设置为...
CoreDNS 是一个现代化的、可插拔的DNS服务器,它被设计用来替代Kubernetes集群中的kube-dns服务,成为Kubernetes生态系统的默认DNS解决方案。CoreDNS 的核心目标是提供一个高效且灵活的服务发现机制,使得应用程序和...
在IT领域,DNS(Domain Name System)协议是网络基础设施中的重要组成部分,它负责将人类可读的域名转换为IP地址,使得互联网上的通信能够顺利进行。C#是一种广泛用于开发Windows应用程序、网络服务和游戏的面向对象...
DNSproxy2是一款针对Android系统的DNS修改工具,经过优化以提供更高效、稳定的服务。这款工具的特色在于它允许用户自定义设置两个DNS服务器地址,从而提高网络连接速度和稳定性,或者用于绕过某些地区的网络限制。...
- **使用HTTPS**:保护DNS查询过程不被窥探,即使是在公共WiFi环境下也能够保障隐私安全。 - **定期更新和维护DNS服务器软件**,确保其拥有最新的安全补丁。 ### DNS与云计算 近年来,随着云计算的兴起,DNS服务也...
### 全国网通DNS与电信DNS大全:深入解析与应用 #### DNS服务器概念与作用 DNS(Domain Name System,域名系统)是互联网的一项服务,它作为域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网...
DNS(域名服务协议)是互联网中的一项关键技术和基础服务,它负责将域名地址转换为IP地址,使得用户能够方便地访问网络资源。DNS系统采用分布式数据库的方式,将域名空间分割成多个层级,每个层级由不同的机构或个人...
《seed缓冲区溢出实验报告解析》 缓冲区溢出是一种常见的软件安全漏洞,它发生在程序尝试向固定大小的缓冲区内写入超过其容量的数据时。在这个实验中,我们将深入理解这一概念,以及如何利用它来获取不同级别的权限...
DNS备份 当你的DNS服务器正常运行起来后,大家可以按照下列步骤对自己的服务器配置进行备份: 1. 停止DNS服务。 2. 打开Regedit程序,找到键HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\DNS。 3....
DNSBench是一款强大的DNS(Domain Name System)性能测试工具,由知名网络安全研究者Gibson Research Corporation开发。这款工具的主要目的是帮助用户评估和比较不同DNS服务器的响应速度和稳定性,从而选择最佳的DNS...
### 清空本地DNS缓存的方法 在计算机网络中,DNS(Domain Name System,域名系统)扮演着将网站域名转换为IP地址的重要角色。为了提高访问速度和效率,操作系统会缓存这些DNS查询结果,即DNS缓存。然而,在某些情况...
DNS(Domain Name System)是互联网中的重要组成部分,它将易于记忆的域名转换为计算机可识别的IP地址。在本文中,我们将深入探讨“DNS扫盲实现智能DNS”的相关知识点,帮助您更好地理解和配置智能DNS系统。 首先,...
DNS(域名系统)是互联网的重要组成部分,它负责将人类易读的域名转换为计算机可识别的IP地址。然而,DNS系统并非无懈可击,其中一种著名的攻击方式就是DNS缓存中毒,也被称为Kaminsky攻击。这个实验,"SEED lab:...