MassDNS DNS子域名查詢枚舉工具

2021-03-02 黑白之道


 

MassDNS是一種簡單的高性能DNS存根解析器,其目標讀者是那些尋求解析數百萬甚至數十億數量級域名的人。無需特殊配置,MassDNS就能使用公開可用的解析器每秒解析超過350,000個名稱。

工具編譯

將git倉庫克隆cd到項目根文件夾中。然後運行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

使用示例

解析目標域名(位於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的文件,其中包含了一套有子項目提供的已過濾的解析器子集。請注意,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

文章來源:

https://github.com/blechschmidt/massdns

相關焦點

  • MassDNS:一款功能強大的高性能DNS子域名查詢枚舉偵察工具
    工具使用Usage: ./bin/massdns [options] [domainlist] -b --bindto Bind to IP address and port.
  • 子域名探測方法大全
    q=domain%3A%22github%22&criteria=cert暴力枚舉Layer子域名爆破機 Layer是windows下的一款子域名探測工具,其工作原理是利用子域名字典進行爆破,使用簡單容易上手。
  • 插件分享 | 可在線查詢子域名和同IP域名的RapidDNS
    前言:https://RapidDNS.io 是一個秒級在線子域名和同IP域名的查詢工具。目前擁有25億條DNS記錄,支持A、AAAA、CNAME、MX4種DNS記錄類型。由於Goby程序對子域名收集方面不是很完善,這裡特編寫此插件作為其拓展。可以方便快速獲取域名和ip地址信息進行偵察,提升探測效率。
  • 如何通過nslookup指令查詢某個域名的域名解析記錄(dns記錄)?
    如何通過nslookup指令查詢某個域名的域名解析記錄(dns記錄)?作為網站站長,時刻要了解自己網站或者是別人的網站的解析有沒有生效,我們可以在本地的電腦上面使用nslookup命令來查詢域名的dns解析記錄。nslookup可以指定查詢的類型,可以查到DNS記錄的生存時間還可以指定使用那個DNS伺服器進行解析。
  • 論二級域名收集的各種姿勢
    全網掃描結果如下:https://scans.io/study/sonar.http枚舉二級域名推薦工具:https://github.com/ring04h/wydomain工具原理: 通過dns解析域名
  • DNS域名系統詳解
    適合本地網絡,遠程網絡或是同網絡下的子網絡不適用。     (3) 源計算機與一個伺服器進行連續;該伺服器中維護著一個大型且動態更新的具有從名字到地址項的資料庫,它為源設備提供查詢服務,發送正確地址映射,並允許發送計算機傳輸數據包。允許計算機為世界上任何相連的設備進行名稱解析功能。
  • DNS隱藏隧道的使用
    迭代查詢     本地域名伺服器向根域名伺服器查詢,根域名伺服器告訴它下一步到哪裡去查詢,然後它在根據結果逐層向下查詢,直到得到最終結果。每次它都是以dns客戶機的身份去各個伺服器查詢,即迭代查詢是本地伺服器進行的操作。
  • 【kali乾貨】 使用Maltego收集子域名信息
    子域名(SubdomainName),凡頂級域名前加前綴的都是該頂級域名的子域名,而子域名根據技術的多少分為二級子域名,三級子域名以及多級子域名。2  挖掘子域名的重要性子域名是某個主域的二級域名或者多級域名,在防禦措施嚴密情況下無法直接拿下主域,那麼就可以採用迂迴戰術拿下子域名,然後無限靠近主域。
  • 理解 OpenShift 網絡之 DNS(域名服務)
    FQDN 是完整域名,它能夠唯一地在DNS名字空間中確定一個記錄。比如最高級別的域名A包括子域名B它又包括子域名C,那麼FQDN 是 C.B.A.,比如cs.widgetopia.edu.。 有時候我們也會使用PQDN,它是不完全的、模糊的。FQDN 能被直接到 DNS 名字伺服器中查詢;而 PQDN 需要先轉化為FQDN 再進行查詢。
  • fast-dns-lookup 一款多線程域名解析查詢工具
    fast-dns-lookup多線程域名解析查詢工具適用場景網站服務提供商需要大批量並且快速的查看域名解析
  • App域名劫持之DNS高可用 - 開源版HttpDNS方案詳解
    URL地址,然後查詢模塊會檢查緩存是否存在,不存在從httpdnsapi接口查詢, 然後經過評估模塊返回。IJsonParser 接口定義了 httpdns api返回數據解析json的方式, 目前使用 android jsonObject實現。 如果需要擴展直接實現該接口即可。log包實現了記錄dnscachelib庫記錄日誌倒文件的工具類IDnsLog約定了寫log和獲取log的方法。 HttpDnsLogManager實現該接口,並管理log模塊。
  • JudasDNS:域名伺服器DNS投毒測試工具
    JudasDNS是一款針對DNS域名伺服器的安全測試工具,在JudasDNS的幫助下
  • Kubernetes 中的 DNS 查詢
    在 Kubernetes 內部可以直接通過 Service 來訪問服務,現在的問題是誰解決了服務的 DNS 查詢問題?DNS 解析是通過 Kubernetes 集群中配置的 CoreDNS 完成的,kubelet 將每個 Pod 的 /etc/resolv.conf 配置為使用 coredns pod 作為 nameserver。
  • 內網滲透-dns隧道應用與防禦
    Dns2tcp是一個通過DNS中繼TCP連接的工具。可以看到大量的dns的txt查詢,同時會帶著域名。所以在藍隊通過流量分析設備就能發現,估計現在流量檢測設備瞬間就報警了。客戶端連接命令不加服務端IP,但是這次需要制定之前配置好的域名。
  • DNS域名解析三問
    來看看吧:說說DNS,以及存在的問題之前看過我說的網絡問題應該知道DNS用來做域名解析工作的,當輸入一個域名後,需要把域名轉化為IP位址,這個轉換過程就是DNS解析。但是傳統的DSN解析會有一些問題,比如:域名緩存問題本地做一個緩存,直接返回緩存數據。
  • DNS Tunneling及相關實現
    DNS的解析過程可以分為兩種類型:迭代查詢和遞歸查詢。通常本機到Local DNS Server的過程屬於遞歸查詢,而Local DNS Server對查詢域名的解析過程屬於迭代查詢。為了減輕Local DNS Server的壓力,提高解析速度,引入了緩存機制。
  • dns解析?瞅瞅這篇文章
    dns域名解析】allow-query     { any; };【表示允許所有人對本服務發送dns查詢的請求】dnssec-validation no;【表示當我們查詢dns時系統不做檢測】3·修改/etc/named.rfc1912.zones文件,新增一個zone,zone "wxl" IN {        type master
  • 小心DNS服務洩露了你的內網基礎設施
    反向解析公共IP - 這裡沒有問題Tl; dr:有些域名名稱伺服器可能會在直接查詢反向解析私有IP時暴露內部的IP位址和域名。用dig -x檢查一下,或者使用privdns.py 檢查一下。 一個簡單的錯誤我最近犯了一個很小且看似不重要的錯誤:我試圖連接某個公司的基礎設施的伺服器,但沒有登錄到他們的VPN。
  • 利用DNS隧道構建隱蔽C&C信道
    【迭代查詢】本地域名伺服器向根域名伺服器查詢,根域名伺服器告訴它下一步到哪裡去查詢,然後它在根據結果逐層向下查詢,直到得到最終結果。每次它都是以DNS客戶機的身份去各個伺服器查詢,即迭代查詢是本地伺服器進行的操作。
  • 網絡安全:DNS域名劫持的幾種解決方法
    ===========================現在國內上網的用戶,大多家用的都是用的網通或者電信的adsl,這中間還分各省地區的撥號伺服器,dns(Domain Name System)就成了上網時,很關鍵的一環,dns的快慢與穩定與否,關係著瀏覽時的正常;更有甚者,dns的健康與否,更會直接影響各個撥號客戶端的健康。