iT邦幫忙

2021 iThome 鐵人賽

DAY 4
1
Security

Kali Linux 工具筆記系列 第 4

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資訊收集的工具,本來是想多寫一些細節,但礙於篇幅,可能就留待之後另開篇章來做描述吧。


上一篇
Day 3 情報收集 - Information Gathering
下一篇
Day 5 情報收集 - Information Gathering (IDS/IPS Identification)
系列文
Kali Linux 工具筆記31

尚未有邦友留言

立即登入留言