百萬域名情況下,如何快速獲取域名的 IP 列表
在我們針對某個目標進行信息收集時,獲取二級域名可能是我們最重要的環節,公司越大,使用的多級域名越多,收集到域名之后,想要做端口掃描話,直接針對域名做掃描嗎?
當然不是,因為同一個 IP 可能被配置了多個域名,直接針對域名做端口掃描也不是不可以,就是會做很多重復的工作,所以要先將這些域名解析成 IP 地址,然后進行去重,這樣能夠大大節約端口掃描的時間。
當我們有百萬個域名需要解析 IP 地址,該怎么辦?當然是用工具啦,有代碼編寫能力的,可以自實現批量解析 IP 地址的工作,如果沒有編程基礎,可以使用開源免費的工具,今天就來給大家分享一款解析 DNS 記錄的工具 dnsx:
https://github.com/projectdiscovery/dnsx
該項目由 go 語言編寫,首先你需要安裝好 go 的編譯環境,然后安裝很簡單:
go get -v github.com/projectdiscovery/dnsx/cmd/dnsx
安裝完成之后,會在 go 的目錄下生成一個可以運行的 exe 文件,你可以將該文件放在任意 windows 服務器上使用,使用如下命令查看幫助信息:
dnsx -h

我們可以將域名列表保存在一個文件中,比如 dns.txt,然后使用命令:
dnsx -l dns.txt -resp -a

上面的命令是查詢域名的 A 記錄,你也可以查詢多種記錄,比如 A, AAAA, CNAME, PTR, NS, MX, TXT, SOA 記錄,很簡單,很方便吧?
如果是自己實現域名解析的話,用 python 腳本也比較簡單,核心的代碼如下:
s = socket.gethostbyname(domain)
結合 python 的多線程技術,就可以實現快速針對目標域名列表進行域名解析了。
除了這兩種方式,還可以直接使用 Linux 的命令:
cat domains.txt | xargs -n1 host | grep "has address" | cut -d" " -f4 | sort -u > ips.txt
會寫腳本的情況下,這個目標很容易實現,不會寫也沒關系,會用開源免費的工具一樣可以達到效果。
最后,作為一名專業的滲透測試工作者,編寫腳本的能力是必不可少的,既要會用優秀的安全工具,還要知道工具的實現原理,并且還能自己編寫相關功能,可以在未來實際的工作中,提高工作效率。