Day 4 情报收集 - Information Gathering (DNS analysis)

什麽是DNS

DNS全称Domain Name System,它将 ithelp.ithome.com.tw 这种人们可读取的名称转换为 52.199.252.220 等数字 IP 地址,让我们在使用浏览器进入网站时,不需要记住这些冗长的数字,而是网域这种让人容易记忆的名称。这边只要先知道DNS是一种阶层式的服务且大部分公司都有自己的服务器就可以了。

DNS资讯中包含了很多有用的资讯,例如域名、子网域资讯、IP位址等等,对後续劫持或是渗透等攻击行为提供了必要的线索,而且对目标进行DNS资讯的收集通常都是被动的方式,不会影响目标也比较不会留下痕迹。

DNS需要收集的资讯:

  • A (Address) 将DNS网域名称对应到IPv4的32位元位址。
  • AAAA IPv6
  • CNAME (Canonical Name),可为设定多个别名,设定的别名都会连至同一部服务器。
  • NS (Name Server) DNS服务器的主机名称
  • MX (Mail Exchanger) 设定担任邮件服务器的主机,所有要送往那部机器的 mail 都要经过 mail exchanger 转送。

由於DNS是整个网际网路公司业务的基础,有越来越多的公司开始自己搭建DNS服务器来做解析服务并管理公司其他子网域名,所以如果设定不当,可能将整个企业的基础业务以及网路架构对外暴露从而造成严重的资讯泄露,甚至导致企业网路被渗透。

工具介绍

  1. ping
    ping 是一个非常常用的网路工具,主要是透过ICMP协定来量测与目标之间的网路连线是否正常,可回报到目标主机之间封包来回的时间,也因为用法简单、使用频繁,甚至已经成为了一个动词,常可以听到"你ping看看那台服务器阿",许多网游玩家在讨论时也会用"ping值"来确认是否处於可正常游玩的网路环境之下。

一般用法可以直接ping该服务器的主机位置,例如直接对google的DNS服务器测试

ping 8.8.8.8

或是直接对某个网域名称

ping google.com

可以看到类似以下结果

PING google.com (216.58.200.46) 56(84) bytes of data.
64 bytes from tsa01s08-in-f46.1e100.net (216.58.200.46): icmp_seq=1 ttl=54 time=57.9 ms
64 bytes from tsa01s08-in-f46.1e100.net (216.58.200.46): icmp_seq=2 ttl=54 time=54.8 ms
64 bytes from tsa01s08-in-f46.1e100.net (216.58.200.46): icmp_seq=3 ttl=54 time=65.4 ms
--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 54.779/59.372/65.442/4.476 ms

可以看到其实有先经过DNS解析得到IP位址後,对该主机进行封包来回测试,但ping其实不能太全面了解整个DNS解析的过程,因为就像之前提到的,DNS其实是个阶层式的服务,是经过当前网路配置的状况去一层层问到的结果,可能修改DNS服务器後再次测试又会得到不同的IP结果。不过ping最主要的功能是确认网路的可靠度,另外也可能对方主机没有回应ICMP而造成ping失败的可能性。

  1. nslookup + dig
    nslookup可以查询域名以及对应的IP,可以不输入任何参数进入互动模式,或是给定想查询的域名
nslookup google.com

可以看到查询结果

Server:         192.168.1.1
Address:        192.168.1.1#53

Non-authoritative answer:
Name:   google.com
Address: 172.217.160.110
Name:   google.com
Address: 2404:6800:4008:802::200e

因为这里参数没有给指定的DNS server,因此会透过本机当前预设的DNS server (192.168.1.1)去查询,而查询结果可以看到IP为17.217.160.110,也可以以参数方式指定DNS server,这边以google的DNS server 8.8.8.8为例

nslookup google.com 8.8.8.8

查询结果可以看到这次是从8.8.8.8问到的结果

Server:         8.8.8.8
Address:        8.8.8.8#53

Non-authoritative answer:
Name:   google.com
Address: 142.251.42.238
Name:   google.com
Address: 2404:6800:4008:800::200e

这边因为可能因为有DNS load balancing为了降载,所以可能每次问到的IP都不太一致。另外值得一提的是,nslookup已经很老了,可能已经在被淘汰的边缘,之所以还要介绍他是因为windows上也还有这套工具能使用,如果是使用Linux的话,其实可以考虑另一个工具dig

dig的使用跟nslookup很像,但也提供了更多资讯,一般使用方式如下

dig google.com

或是透过@符号来指定DNS server

dig google.com @8.8.8.8

查询结果可以分成几个区块

  • 第一部分显示 dig 的版本和输入的参数。
  • 第二部分显示服务返回的状态,如果 status 的值为 NOERROR 则说明本次查询成功。
  • 第三部分中的 QUESTION SECTION 显示我们要查询的域名。
  • 第四部分的 ANSWER SECTION 是查询到的结果。
  • 第五部分则是此次查询的统计资讯,比如用了多长时间,查询了哪个 DNS 服务器,在什麽时间进行的查询等等。
; <<>> DiG 9.16.15-Debian <<>> google.com @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14099
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;google.com.                    IN      A

;; ANSWER SECTION:
google.com.             176     IN      A       172.217.160.78

;; Query time: 48 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Sep 19 11:11:15 EDT 2021
;; MSG SIZE  rcvd: 55

dig也可以反向用IP来查询域名,这边我们用前面解出来的172.217.160.78当范例

dig -x 172.217.160.78

反查结果,但反查结果跟预期好像有点不太一样,这个之後有机会再说。

; <<>> DiG 9.16.15-Debian <<>> -x 172.217.160.78
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55942
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;78.160.217.172.in-addr.arpa.   IN      PTR

;; ANSWER SECTION:
78.160.217.172.in-addr.arpa. 69112 IN   PTR     tsa01s09-in-f14.1e100.net.

;; Query time: 144 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Sun Sep 19 11:16:33 EDT 2021
;; MSG SIZE  rcvd: 95
  1. dnsenum
    前面用到的工具让我们可以针对域名去查询IP位址,但是是在很明确知道域名的情况下才有办法,接下来要介绍的是可以列举子域名的工具dnsenum,顾名思义就是dns + enum,除了可以查域名之外,也可以透过字典暴力方式来找出子网域名。

这边先简单用,直接输入域名,去找出相关的子域名

dnsenum google.com

查询结果,从结果可以看到有网域对应的IP位址,也列出了NS、MX等资讯,更有一些别名的纪录,都是相当重要的资讯,但後面怎麽运用这些资讯才是重点,其实有这些资讯也不只是只有攻击这个唯一的用途,事实上我们在排查网路服务相关问题时,有时候也是需要收集这些资讯的。

dnsenum VERSION:1.2.6

-----   google.com   -----                                                                                                                                                   
                                                                                                                                                                             
                                                                                                                                                                             
Host's addresses:                                                                                                                                                            
__________________                                                                                                                                                           
                                                                                                                                                                             
google.com.                              20       IN    A        142.251.43.14                                                                                               

                                                                                                                                                                             
Name Servers:                                                                                                                                                                
______________                                                                                                                                                               
                                                                                                                                                                             
ns2.google.com.                          86400    IN    A        216.239.34.10                                                                                               
ns1.google.com.                          86400    IN    A        216.239.32.10
ns3.google.com.                          86400    IN    A        216.239.36.10
ns4.google.com.                          86400    IN    A        216.239.38.10

                                                                                                                                                                             
Mail (MX) Servers:                                                                                                                                                           
___________________                                                                                                                                                          
                                                                                                                                                                             
alt1.aspmx.l.google.com.                 293      IN    A        142.250.141.26                                                                                              
aspmx.l.google.com.                      293      IN    A        108.177.97.26
alt2.aspmx.l.google.com.                 293      IN    A        142.250.115.26
alt4.aspmx.l.google.com.                 293      IN    A        142.250.152.26
alt3.aspmx.l.google.com.                 293      IN    A        64.233.171.26

                                                                                                                                                                             
Trying Zone Transfers and getting Bind Versions:                                                                                                                             
_________________________________________________                                                                                                                            
                                                                                                                                                                             
                                                                                                                                                                             
Trying Zone Transfer for google.com on ns2.google.com ... 
AXFR record query failed: corrupt packet

Trying Zone Transfer for google.com on ns1.google.com ... 
AXFR record query failed: corrupt packet

Trying Zone Transfer for google.com on ns3.google.com ... 
AXFR record query failed: corrupt packet

Trying Zone Transfer for google.com on ns4.google.com ... 
AXFR record query failed: corrupt packet

                                                                                                                                                                             
Brute forcing with /usr/share/dnsenum/dns.txt:                                                                                                                               
_______________________________________________                                                                                                                              
                                                                                                                                                                             
about.google.com.                        86400    IN    CNAME    www3.l.google.com.                                                                                          
www3.l.google.com.                       244      IN    A        172.217.160.78
accounts.google.com.                     216      IN    A        142.251.42.237
admin.google.com.                        288      IN    A        142.251.42.238
ads.google.com.                          185      IN    A        172.217.160.78
america.google.com.                      3600     IN    CNAME    www3.l.google.com.
www3.l.google.com.                       88       IN    A        142.251.43.14

今天介绍了几个关於DNS资讯收集的工具,本来是想多写一些细节,但碍於篇幅,可能就留待之後另开篇章来做描述吧。


<<:  Day19 CSS Transform

>>:  【LeetCode】bit operation

Day 25 bert 文字情感分类-4

接续昨天的结果,范例程序码的其他部分可以不做更动, 或是把一些测试用的区段改成中文以确认编码是否成功...

30天程序语言研究

今天是30天程序语言研究的第二十八天,由於最近写unix语言的东西用到很多,所以做了很多笔记,就想说...

【Day10】ASI 自动插入分号

ASI(Automatic Semicolon Insertion) 当 JavaScript 语句...

[16] [烧瓶里的部落格] 06. 部落格的 Blueprint

部落格的 Blueprint 和会员验证时候的做法一样 部落格页面应该列出所有文章,允许已登入的会员...

学习Python纪录Day26 - 批次处理档案part2

批次修改档名 在os模组中使用rename()更改档名 path = "./videos&...