MassDNS:一款功能強大的高性能DNS子域名查詢枚舉偵察工具

2021-02-14 FreeBuf

MassDNS是一款功能強大的高性能DNS stub解析工具,它可以幫助研究人員解析數百萬甚至上億個域名。在沒有特殊配置的情況下,MassDNS可以利用公共可用的解析器每秒鐘解析超過350000個域名。

項目編譯

首先,使用下列命令將MassDNS源碼克隆至本地目錄中:

git clone https://github.com/blechschmidt/massdns.git

使用cd命令切換到本地項目目錄中:

cd massdns

接下來,運行」make」命令構建源碼。

如果你使用的不是Linux作業系統,那麼則需要運行下列命令:

make nolinux

在Windows平臺下,你還需要安裝Cygwin包、gcc-core、git和make。

工具使用

Usage: ./bin/massdns [options] [domainlist] -b --bindto Bind to IP address and port. (Default: 0.0.0.0:0) --busy-poll Use busy-wait polling instead of epoll. -c --resolve-count Number of resolves for a name before giving up. (Default: 50) --drop-group Group to drop privileges to when running as root. (Default: nogroup) --drop-user User to drop privileges to when running as root. (Default: nobody) --flush Flush the output file whenever a response was received. -h --help Show this help. -i --interval Interval in milliseconds to wait between multiple resolves of the same domain. (Default: 500) -l --error-log Error log file path. (Default: /dev/stderr) --norecurse Use non-recursive queries. Useful for DNS cache snooping. -o --output Flags for output formatting. --predictable Use resolvers incrementally. Useful for resolver tests. --processes Number of processes to be used for resolving. (Default: 1) -q --quiet Quiet mode. --rcvbuf Size of the receive buffer in bytes. --retry Unacceptable DNS response codes. (Default: REFUSED) -r --resolvers Text file containing DNS resolvers. --root Do not drop privileges when running as root. Not recommended. -s --hashmap-size Number of concurrent lookups. (Default: 10000) --sndbuf Size of the send buffer in bytes. --sticky Do not switch the resolver when retrying. --socket-count Socket count per process. (Default: 1) -t --type Record type to be resolved. (Default: A) --verify-ip Verify IP addresses of incoming replies. -w --outfile Write to the specified output file instead of standard output. Output flags: S - simple text output F - full text output B - binary output J - ndjson output

如果你需要查看更詳細的操作選項以及幫助手冊(尤其是輸出格式),你可以使用「—help」命令。

工具使用樣例

解析目標域名(位於lists的resolvers.txt中)的AAAA記錄,並將結果存儲至result.txt中:

$ ./bin/massdns -r lists/resolvers.txt -t AAAA domains.txt > results.txt

或者運行下列命令:

$ ./bin/massdns -r lists/resolvers.txt -t AAAA -w results.txt domains.txt

樣本輸出

默認配置下,MassDNS將會輸出響應數據包,格式為文本格式,輸出樣例如下:

;; Server: 77.41.229.2:53 ;; Size: 93 ;; Unix time: 1513458347 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51298 ;; flags: qr rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0 ;; QUESTION SECTION: example.com. IN A ;; ANSWER SECTION: example.com. 45929 IN A 93.184.216.34 ;; AUTHORITY SECTION: example.com. 24852 IN NS b.iana-servers.net. example.com. 24852 IN NS a.iana-servers.net. 輸出結果包含了解析的IP位址,可以幫助我們輕鬆對輸出結果進行過濾。

數據解析

代碼庫中包含了一個名為resolvers.txt的文件,其中包含了一套有subbrute項目提供的已過濾的解析器子集。請注意,MassDNS的使用可能會提升系統/網絡負載,因為需要加載大量解析器,具體將取決於你的ISP。

MassDNS的DNS解析實現目前還不完整,只支持最常見的一些記錄類型。歡迎您通過代碼貢獻來幫助改變這種狀況。

PTR記錄

MassDNS包含了一個Python腳本,允許我們解析所有的IPv4 PTR記錄:

$ ./scripts/ptr.py | ./bin/massdns -r lists/resolvers.txt -t PTR -w ptr.txt

請注意,in-addr.arpa中的標籤會被反轉。為了解析域名為1.2.3.4的地址,MassDNS將需要以「4.3.2.1.in-addr.arpa」的方式來作為輸入查詢名稱。此時,Python腳本並不會按升序解析記錄,這樣可以避免在IP v4子網的域名伺服器上突然出現的負載激增。

網絡偵察&爆破子域名

注意:請不要隨意使用該工具,適當調整-s參數以避免給權威域名伺服器造成負載壓力。

跟subbrute類似,MassDNS允許我們使用subbrute.py腳本來對子域名進行爆破枚舉:

$ ./scripts/subbrute.py lists/names.txt example.com | ./bin/massdns -r lists/resolvers.txt -t A -o S -w results.txt

作為一種額外的網絡偵察手段,ct.py腳本可以從crt.sh中抓取數據,並從證書透明日誌中提取子域名:

$ ./scripts/ct.py example.com | ./bin/massdns -r lists/resolvers.txt -t A -o S -w results.txt

工具運行截圖

安全性

MassDNS的運行不需要Root權限, 我們建議用戶以非特權用戶的身份運行MassDNS。除此之外,我們不建議大家使用「—root」參數來運行。另外,除了Master以外的其他分支不適用於生產環境。

項目地址

MassDNS:【點擊底部閱讀原文查看】

* 參考來源:blechschmidt,FB小編Alpha_h4ck編譯,轉載請註明來自FreeBuf.COM

相關焦點

  • MassDNS DNS子域名查詢枚舉工具
    工具編譯將git倉庫克隆cd到項目根文件夾中。然後運行make從原始碼構建。工具用法Usage: ./bin/massdns [options] [domainlist]  -b  --bindto           Bind to IP address and port.
  • 子域名枚舉&收集
    Sub-domain enumeration can reveal a lot of domains/sub-domains that are in scope of a security assessment which in turn increases the chances of finding vulnerabilities
  • 子域名探測方法大全
    q=domain%3A%22github%22&criteria=cert暴力枚舉Layer子域名爆破機 Layer是windows下的一款子域名探測工具,其工作原理是利用子域名字典進行爆破,使用簡單容易上手。
  • 從代碼角度看各類子域名收集工具
    'threatcrowd': ThreatCrowd, 'ssl': CrtSearch, 'passivedns': PassiveDNS }#Using a 32 char string every
  • 插件分享 | 可在線查詢子域名和同IP域名的RapidDNS
    前言:https://RapidDNS.io 是一個秒級在線子域名和同IP域名的查詢工具。目前擁有25億條DNS記錄,支持A、AAAA、CNAME、MX4種DNS記錄類型。由於Goby程序對子域名收集方面不是很完善,這裡特編寫此插件作為其拓展。可以方便快速獲取域名和ip地址信息進行偵察,提升探測效率。
  • DNSX:一款功能強大的多用途DNS工具包
    DNSXDNSX是一款功能強大的多用途DNS工具包,該工具運行速度非常快,它不僅允許研究人員使用retryabledns庫來運行多個探測器
  • 開源項目 | OneForAll - 一款強大的子域名收集工具
    👊OneForAll是一款功能強大的子域收集工具 📝English Document
  • fast-dns-lookup 一款多線程域名解析查詢工具
    fast-dns-lookup多線程域名解析查詢工具適用場景網站服務提供商需要大批量並且快速的查看域名解析
  • 論二級域名收集的各種姿勢
    全網掃描結果如下:https://scans.io/study/sonar.http枚舉二級域名推薦工具:https://github.com/ring04h/wydomain工具原理: 通過dns解析域名
  • 滲透測試工具集
    的命令行IPSEC VPN暴力破解工具,允許組名/ ID枚舉和XAUTH暴力破解功能Intercepter-NG - 多功能網絡工具包Legion - 基於Python 3並從SPARTA分叉的圖形化半自動發現和偵察框架Network-Tools.com
  • 【kali乾貨】 使用Maltego收集子域名信息
    子域名(SubdomainName),凡頂級域名前加前綴的都是該頂級域名的子域名,而子域名根據技術的多少分為二級子域名,三級子域名以及多級子域名。2  挖掘子域名的重要性子域名是某個主域的二級域名或者多級域名,在防禦措施嚴密情況下無法直接拿下主域,那麼就可以採用迂迴戰術拿下子域名,然後無限靠近主域。
  • FestIN:一款功能強大的S3 Buckets數據內容搜索工具
    FestINFestIN是一款功能強大的S3 Bucket數據內容搜索工具,該工具可以幫助研究人員發送公開S3 Buckets中的數據
  • DNS域名系統詳解
    表象看起來,輸入域名也能夠起到網絡連接通信效果,但實際上,這背後卻有一個服務默默地位我們做了許多的操作,它就是DNS。(Hostname Lookup Tools 工具根據提供域名來尋址對應IP)。     DNS(Domain Name System, DNS)域名系統,它實現了將符號域名轉換為對應IP位址的功能。
  • 使用nslookup進行DNS查詢及wirekhark抓取DNS數據包
    nslookup 是一個查詢 Internet 域名伺服器的程序。我們通常使用nslookup工具來測試DNS解析,獲取DNS報文的詳細數據,這也是我們想要使用協議分析工具nslookup來分析DNS流量進行分析。只要你上網,都會涉及DNS解析。
  • PureDNS –具有精確通配符過濾功能的快速域解析器和子域暴力破解
    puredns是一種快速的域解析器和子域暴力破解工具,可以準確地過濾出通配符子域和DNS中毒條目。它使用功能強大的存根DNS解析器massdns來執行批量查找。有了適當的帶寬,並有大量的公共解析器,它可以在幾分鐘之內解決數百萬個查詢。不幸的是,massdns的結果僅與公共解決者提供的答案一樣好。錯誤的DNS答案和來自通配符子域的誤報通常會汙染結果。puredns通過其通配符檢測算法解決了這一問題。它可以根據從一組可信解析器獲得的DNS答案過濾出通配符。
  • DNS隱藏隧道的使用
    迭代查詢     本地域名伺服器向根域名伺服器查詢,根域名伺服器告訴它下一步到哪裡去查詢,然後它在根據結果逐層向下查詢,直到得到最終結果。每次它都是以dns客戶機的身份去各個伺服器查詢,即迭代查詢是本地伺服器進行的操作。
  • 如何通過nslookup指令查詢某個域名的域名解析記錄(dns記錄)?
    如何通過nslookup指令查詢某個域名的域名解析記錄(dns記錄)?作為網站站長,時刻要了解自己網站或者是別人的網站的解析有沒有生效,我們可以在本地的電腦上面使用nslookup命令來查詢域名的dns解析記錄。nslookup可以指定查詢的類型,可以查到DNS記錄的生存時間還可以指定使用那個DNS伺服器進行解析。