安全圈 | 专注于最新网络信息安全讯息新闻

首页

dns域傳送漏洞(一)

作者 eppolito 时间 2020-02-27
all

本文主要介紹:

1)什麼是DNS?

2)使用Nslookup命令探測DNS域傳送漏洞

3)使用nmap掃描DNS域傳送漏洞

4)使用dig命令檢測

5)使用python + Dig批量掃描漏洞主機

6)使用python實現AXFR査詢

1)什麼是DNS?

DNS(Domain Name System,功能變數名稱管理系統)是萬維網WWW的重要基礎。它建立在一個分散式資料庫基礎之上,在這個資料庫裏,保存了IP地址和功能變數名稱的相互映射關係。

正因為DNS的存在,我們才不需要記住大量無規則的IP地址, 而只需要知道對方電腦的名稱,就可以訪問對應服務。比如,筆者的部落格是www.lijiejie.com,當用戶在流覽器地址欄輸入上述功能變數名稱,瀏覽器就將向DNS伺服器發送査詢,得到目標主機的IP地址,再與對應的主機建立一個HTTP連接,請求網頁。相對於記住106.187.34.156這個IP地址,功能變數名稱www.lijiejie.com自然更有意義、更加清晰明了。

DNS伺服器使用的TCP/UDP埠號是53。

最常用的DNS記錄有以下幾類:

A記錄      IP地址記錄,記錄一個功能變數名稱對應的IP地址

AAAA記錄    IPv6地址記錄,記錄一個功能變數名稱對應的IPv6地址

CNAME記錄  別名記錄,記錄一個主機的別名

MX記錄    電子郵件交換記錄,記錄一個郵件功能變數名稱對應的IP地址,比如my[at]lijiejie.com

            後面的部分lijiejie.com,郵件伺服器對應的IP地址

NS記錄      功能變數名稱服務器記錄,記錄該功能變數名稱由哪臺功能變數名稱服務器解析

PTR記錄    反向記錄,也即從IP地址到功能變數名稱的一條記錄

  TXT記錄    記錄功能變數名稱的相關文字資訊

作為重要的互聯網基礎設施,難免成為駭客的重點攻擊目標,服務的穩定性尤為重要。DNS伺服器分為:主服務器、備份服務器和緩存服務器。在主備服務器之間同步資料庫,需要使用“DNS域傳送”。域傳送是指後備服務器從主服務器拷貝數據,並用得到的數據更新自身資料庫。

若DNS伺服器配寘不當,可能導致匿名使用者獲取某個域的所有記錄。造成整個網絡的拓撲結構洩露給潜在的攻擊者,包括一些安全性較低的內部主機,如測試服務器。憑藉這份網絡藍圖,攻擊者可以節省很少的掃描時間。

大的互聯網廠商通常將內部網絡與外部互聯網隔離開,一個重要的手段是使用Private DNS。如果內部DNS洩露,將造成極大的安全風險。風險控制不當甚至造成整個內部網絡淪陷。

2) nslookup命令 

筆者首先介紹DNS査詢工具nslookup命令的使用。僅使用該命令,就可完成DNS域傳送的測試。在windows命令提示符中輸入“nslookup ?”,得到如下簡略的用法說明:

d:\nslookup ?

用法:

nslookup [-opt …]             # 使用默認服務器的互動模式

nslookup [-opt …] - server    # 使用 “server” 的互動模式

nslookup [-opt …] host        # 僅查找使用默認服務器的 “host”

nslookup [-opt …] host server # 僅查找使用 “server” 的 “host”

Nslookup命令以兩種方式運行:非互動式和互動式。本文第一次提到“互動式”的概念,簡單說明:互動式系統是指執行過程中允許用戶輸入數據和命令的系統。而非互動式系統,是指一旦開始運行,不需要人干預就可以自行結束的系統。囙此,nslookup以非互動式管道運行,就是指運行後自行結束。而互動式,是指開始運行後,會要求使用者進一步輸入數據和命令。

非互動式下命令的語法是是:

nslookup [-option] [hostname] [server]

Option是可選的參數,不帶參數執行nslookup命令,可進入互動式shell,在shell中輸入help,可查閱參數說明,如下例所示:

D:\>nslookup

默認服務器:  public1.114dns.com

Address:  114.114.114.114

> help

命令:  (識別字以大寫表示,[]表示可選)

set OPTION      -設定選項

    type=X              -設定査詢類型(如A、AAAA、A+AAAA、ANY、CNAME、MX

                          NS、PTR、SOA和SRV)

ls [opt] DOMAIN [> FILE] -列出DOMAIN中的地址(可選:輸出到檔案FILE)

    -a          -  列出規範名稱和別名

    -d          -  列出所有記錄

    -t TYPE    -  列出給定RFC記錄類型(例如A、CNAME、MX、NS和PTR等)

                  的記錄

exit            -退出程式

上面是筆者精簡後的輸出,注意兩點:1) 使用type參數可以設定記錄類型。 2) 使用ls命令,可以列出一個域下麵所有的功能變數名稱。

Hostname選項指定需要査詢的主機名,比如www.lijiejie.com。Server選項指定DNS伺服器。為了查詢結果的準確,可選用幾個常用的公共DNS伺服器:8.8.8.8是Google提供的DNS服務,114.114.114.144和114.114.115.115是114DNS提供的免費DNS服務。

下麵的例子通過114.114.114.114査詢功能變數名稱www.lijiejie.com的IP地址:

d:\>nslookup www.lijiejie.com 114.114.114.114

服務器:  public1.114dns.com

Address:  114.114.114.114

非權威應答:

名稱:    www.lijiejie.com

Address:  106.187.34.156

可以看到,www.lijiejie.com對應的IP主機是106.187.34.156。

下麵的例子査詢jd.com使用的DNS伺服器名稱:

D:\>nslookup -type=ns jd.com

服務器:  public1.114dns.com

Address:  114.114.114.114

非權威應答:

jd.com  nameserver = ns1.jdcache.com

jd.com  nameserver = ns4.jdcache.com

jd.com  nameserver = ns1.jd.com

jd.com  nameserver = ns2.jd.com

jd.com  nameserver = ns3.jd.com

jd.com  nameserver = ns2.jdcache.com

jd.com  nameserver = ns4.jd.com

jd.com  nameserver = ns3.jdcache.com

上述結果顯示,京東商城的外部主DNS伺服器有6個。下麵的例子展示如何査詢taobao.com的郵件交換記錄:

D:\>nslookup -type=mx taobao.com

服務器:  public1.114dns.com

Address:  114.114.114.114

非權威應答:

taobao.com      MX preference = 10,mail exchanger = mx1.alibaba-inc.com

從上錶可看出,淘寶的郵件交換服務器是mx1.alibaba-inc.com。

下例反向査詢一個IP地址對應的功能變數名稱:

D:\>nslookup -type=ptr 8.8.8.8

服務器:  public1.114dns.com

Address:  114.114.114.114

非權威應答:

8.8.8.8.in-addr.arpa    name = google-public-dns-a.google.com

可以得到8.8.8.8對應的功能變數名稱是google-public-dns-a.google.com。

筆者繼續介紹在互動式shell中發現一個DNS伺服器的域傳送漏洞的過程:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

D:\>nslookup

默認服務器:  public1.114dns.com

Address:  114.114.114.114

> server dns.nwpu.edu.cn

默認服務器:  dns.nwpu.edu.cn

Address:  202.117.80.2

> ls nwpu.edu.cn

[dns.nwpu.edu.cn]

nwpu.edu.cn.                  NS    server = dns.nwpu.edu.cn

nwpu.edu.cn.                  NS    server = dns1.nwpu.edu.cn

nwpu.edu.cn.                  NS    server = dns2.nwpu.edu.cn

nwpu.edu.cn.                  NS    server = dns3.nwpu.edu.cn

*                              A      222.24.192.99

(…省略大量的記錄)

npunecas                      NS    server = webcomp.npunecas.nwpu.edu.cn

webcomp.npunecas              A      202.117.85.146

nwpu03                        A      202.117.80.4

nwpudb2                        A      222.24.210.149

poj                            A      192.168.0.248

portal                        A      61.150.43.10

portal1                        A      222.24.192.31

portal2                        A      222.24.192.32

rei                            A      202.117.85.10

saip                          NS    server = saipserver.saip.nwpu.edu.cn

saipserver.saip                A      202.117.85.72

test                          A      222.24.192.29

yzb                            A      202.117.85.3

zsb                            A      202.117.87.130

zygx                          A      202.117.80.9

操作基本的步驟是:

1) 輸入nslookup命令進入互動式shell

2) Server 命令參數設定査詢將要使用的DNS伺服器

3) Ls命令列出某個域中的所有功能變數名稱

4) Exit命令退出程式

攻擊者能獲取的敏感主要包括:

1)網絡的拓撲結構,服務器集中的IP地址段

2)資料庫服務器的IP地址,例如上述nwpudb2.nwpu.edu.cn

3)測試服務器的IP地址,例如test.nwpu.edu.cn

4)VPN伺服器地址洩露

5)其他敏感服務器

以上示例了存在漏洞的DNS伺服器,若是不存在漏洞的主機,則可能提示錯誤Query Refused:

D:\>nslookup

默認服務器:  public1.114dns.com

Address:  114.114.114.114

> server ns.pku.edu.cn

默認服務器:  ns.pku.edu.cn

Address:  202.112.7.13

> ls pku.edu.cn

[ns.pku.edu.cn]

***無法列出域pku.edu.cn: Query refused

DNS伺服器拒絕將區域pku.edu.cn傳送到您的電腦。如果這不正確,

請檢查IP地址202.112.7.13的DNS伺服器上pku.edu.cn的

區域傳送安全設置。

以上是在互動式shell中測試DNS伺服器是否存在域傳送漏洞。為了能够非互動式運行,筆者編寫以下批次檔ls.bat:

echo ls %1 | nslookup – %2

為了測試dns.nwpu.edu.cn服務器,可以執行ls.bat nwpu.edu.cn dns.nwpu.edu.cn。 批次處理中:

1) %1代表第一個參數,也即nwpu.edu.cn

2) %2代表第二個參數,即dns.nwpu.edu.cn

3) Echo是回聲命令,原文輸出傳入的參數內容

4) “|”是筦道符號,作用是把前一個命令執行的結果傳給後一個命令。囙此:執行ls.bat nwpu.edu.cn dns.nwpu.edu.cn,等價於執行echo ls nwpu.edu.cn | nslookup – dns.nwpu.edu.cn。

5) nslookup -dns.nwpu.edu.cn是指定DNS伺服器為dns.nwpu.edu.cn

到此,nslookup命令介紹結束。讀者朋友可反復練習以熟悉它的用法。