DNSLOG平臺搭建及其原理分析

一、DNS基本概念

0x1:DNS中不同域名類型概念

DNS的全稱是Domain Name System(網絡名稱系統),它作爲將域名和IP地址相互映射,使人更方便地訪問互聯網。當用戶輸入某一網址如littlehann.com,網絡上的DNS Server會將該域名解析,並找到對應的真實IP如101.37.97.51,使用戶可以訪問這臺服務器上相應的服務。

DNSlog就是存儲在DNS Server上的域名訪問信息,它記錄着用戶對域名littlehann.com等的訪問信息,類似日誌文件。

按照解析類型分類,DNS域名有如下幾種:

  • A記錄:A (Address) 記錄是用來指定主機名(或域名)對應的IP地址記錄。就是說:通過A記錄,大家可以設置自己的不同域名轉到不同的IP上去。如:
    • www.dns.la轉到IP 116.255.202.1
    • web.dns.la 轉到IP 116.255.202.11
    • mail.dns.la 轉到IP 116.255.202.111
  • MX記錄(Mail Exchange):郵件交換記錄,用戶可以將該域名下的郵件服務器指向到自己的Mail Server上,然後即可自行操作控制所有的郵箱設置。
  • CNAME(Canonical Name)記錄:通常稱別名解析,可以將註冊的不同域名都轉到一個域名記錄上,由這個域名記錄統一解析管理,與A記錄不同的是,CNAME別名記錄設置的可以是一個域名的描述而不一定是IP地址。
  • URL(Uniform Resource Locator)轉發:網址轉發功能,如果您沒有一臺獨立的服務器(也就是沒有一個獨立的IP地址)或者您還有一個域名B,您想訪問A域名時訪問到B域名的內容,這時您就可以通過URL轉發來實現。URL轉發可以轉發到某一個目錄下,甚至某一個文件上。而CNAME是不可以,這就是URL轉發和CNAME的主要區別所在。
  • NS(Name Server):NS記錄是域名服務解析記錄,NS用來指定該域名由哪個DNS服務器來進行解析,可以把一個域名的不同二級域名分別指向到不同的DNS系統來解析。
  • AAAA記錄:IPV6解析記錄,該記錄是將域名解析到一個指定的IPV6的IP上。

0x2:DNS解析順序 

當客戶端對域名發起訪問時,會將解析請求發送給遞歸解析服務器,遞歸服務器會代替客戶端進行全球遞歸查詢。

  • 首先遞歸服務器會請求根域名服務器,根域名服務器根據域名後綴,告知對應的頂級域名服務器
  • 遞歸服務器再向頂級服務器發起請求,頂級域名服務器告知對應的權威服務器
  • 遞歸服務器向權威服務器發起請求,權威服務器告知解析結果
  • 遞歸服務器將結果告知客戶端,客戶端完成訪問

以上是DNS解析的標準流程,但是由於各種DNS緩存的存在,導致DNS解析環節更爲複雜。

所謂DNS緩存是指DNS返回正確的IP地址之後,系統會將這個結果臨時儲存起來,併爲緩存設定一個失效時間(TTL值),在TTL失效前,當再次訪問這個網站,系統就會直接從DNS 緩存中將結果返回,而不必再次委託遞歸服務器進行全球解析查詢,加快了DNS解析的流程。

當然TTL值失效後,系統還會自動再次詢問DNS服務器以獲取最新的解析結果。

按照緩存位置的不同,DNS緩存可以分爲以下幾類:

  • (1)瀏覽器DNS緩存:瀏覽器會根據一定頻率緩存DNS記錄
  • (2)本地DNS緩存:如果瀏覽器緩存中找不到解析記錄,就會去詢問操作系統中的緩存
  • (3)本地HOSTS文件:HOSTS是記錄域名與IP地址一一映射關係的本地文件,Windows系統中位於C:\Windows\System32\drivers\etc
  • (4)路由器DNS緩存:我們常用的路由器也帶有自動緩存功能,路由器DNS被篡改會造成域名劫持,將訪問網址定位到另外一個服務器
  • (5)遞歸服務器緩存:遞歸服務器在將解析結果告知客戶端的同時,將記錄緩存下來,當下次請求同一個域名時,直接會將記錄返回,而無需再進行全球查詢

DNS解析順序是“先查緩存,再遞歸解析”,查詢順序爲:瀏覽器緩存—系統緩存—路由器緩存—遞歸服務器緩存—遞歸查詢。

參考鏈接:

https://developer.aliyun.com/article/331012 

 

二、DNSlog安全風險分析

0x1:爲什麼需要DNSlog平臺

在某些情況下,無法利用漏洞獲得回顯。但是,如果目標可以發送DNS請求,則可以通過DNS log方式將想獲得的數據外帶出來(oob)。

DNS log常用於以下情況:

  • SQL盲注
  • 無回顯的命令執行
  • 無回顯的SSRF

0x2:爲什麼能夠出現DNSlog平臺這種技術

首先,DNS服務是互聯網核心基礎設施之一,DNS query外連端口和外連請求幾乎在整個互聯網上都是默認開放的,這對攻擊者來說就是一個絕佳地穩定oob通道。

其次,因爲DNS解析服務整體上看是一個分佈式地架構,NS server則是這個分佈式架構的基礎設施,同時攻擊者可以很容易地創建自己的NS server,從而給攻擊者利用DNS遞歸查詢流程作爲oob信息收集提供了極大地便利。

攻擊者劫持受害機器的執行流後,發起DNS query查詢,查詢的域名是攻擊者自有的A記錄域名,同時由於攻擊者聲明瞭該A記錄的NS記錄,該NS記錄指向的是攻擊者控制的一臺域名服務器,所以根路由會將該DNS query查詢發送到攻擊者控制的域名服務器上(也就是運行了dnslog程序的機器上),至此完成了oob信道傳遞過程。

 

三、DNSlog平臺搭建

0x1:前期準備

  • 一臺公網可訪問機器:運行DNS解析服務程序,作爲DNS域名服務器,接受來自53端口的DNS解析請求,並將DNS query繼續遞歸查詢,完成最終查詢,相當於一個DNS query proxy的作用。
  • 一個有效域名

注意,上述公網可訪問機器必須開放UDP 53端口,以確保該機器可以接受DNS查詢以及進行DNS遞歸查詢。

0x2:域名解析準備

  • 添加一個A記錄,將域名xxx指向公網可訪問機器xx。
  • 添加一個NS記錄,將NS記錄指向A記錄。

通過制定NS記錄,便指定了解析對應A記錄的DNS域名服務器,以此完成了DNS oob的信道搭建。

0x3:搭建充當NS Server的DNSlog Server

下載地址: https://github.com/lanyi1998/DNSlog-GO/releases

下載對應版本並解壓,

wget https://github.com/lanyi1998/DNSlog-GO/releases/download/1.5.6/dnslog-linux.zip

編輯配置文件,

啓動服務,

./dnslog-linux

參考鏈接:

https://github.com/aboul3la/Sublist3r 
https://blog.csdn.net/m0_51468027/article/details/125734951
https://cloud.tencent.com/developer/article/1948254
https://www.f12bug.com/archives/dnslog%E5%B9%B3%E5%8F%B0%E6%90%AD%E5%BB%BA
https://github.com/lanyi1998/DNSlog-GO/releases/tag/1.5.6

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章