MassDNS:跨域DNS枚舉工具
譯文【51CTO.com快譯】
一、使用MassDNS
唯一大量枚舉跨域的工具。
TLDR
MassDNS可以在幾秒鐘內(nèi)可靠地解析100K子域,可以使用AltDNS的功能,并為用戶提供超過超乎想象的結(jié)果。可以使用它來連續(xù)暴力破解大量的域名。
譯者注:AltDNS - 通過更改和排列進(jìn)行子域發(fā)現(xiàn),AltDNSs是一種DNS偵察工具,允許發(fā)現(xiàn)符合模式的子域名。AltDNS接受可能存在于域下的子域中的單詞(例如測(cè)試,開發(fā),分期),以及獲取您知道的子域列表。工具傳送門:https://github.com/infosec-au/altdns
二、靈感
進(jìn)攻安全的第一步是偵察。獲取目標(biāo)的全部范圍是偵查階段的目標(biāo)。主要是,這篇文章將重點(diǎn)放在如何有效地發(fā)現(xiàn)子域名,在大量的目標(biāo)中使用MassDNS。此外,關(guān)于這個(gè)空白我已經(jīng)研究了很長(zhǎng)一段時(shí)間,并沒有找到一個(gè)運(yùn)行在許多目標(biāo)上的比較好的工具。
三、工具
有很多腳本和程序可以處理子域名枚舉。我將主要討論以下工具(我基于他們的受歡迎程度來選擇):
- Passive sources(https://github.com/rondilley/passivedns)
- Subbrute(https://github.com/TheRook/subbrute)
- Sublist3r(https://github.com/aboul3la/Sublist3r)
- Enumall(https://github.com/jhaddix/domain)
- Brutesubs(https://github.com/anshumanbh/brutesubs)
- DNS-Parallel-Prober(https://github.com/lorenzog/dns-parallel-prober)
1. Passive sources
我想手動(dòng)處理被動(dòng)源,因?yàn)槲乙呀?jīng)有一個(gè)自動(dòng)化框架,很難將其集成到預(yù)構(gòu)建的工具中。被動(dòng)來源是可以的,但是他們永遠(yuǎn)不會(huì)暴力破解一樣好。原因很簡(jiǎn)單:如果它是被動(dòng)來源,它已經(jīng)在別處找到并被索引了。然而,如果你是暴力破解的話,就有一定的幾率導(dǎo)致一些被動(dòng)渠道沒有選擇這些子域名。
在我看來,被動(dòng)來源永遠(yuǎn)都是有益于,你得到你的子域,但不應(yīng)該是主要來源,這使得我們使用其他工具。
2. Subbrute
許多人都知道如何利用一個(gè)經(jīng)過很長(zhǎng)時(shí)間測(cè)試的工具。在我看來,該工具的最大特點(diǎn)是內(nèi)置的遞歸,檢查子域中的子域。當(dāng)我為每個(gè)公開范圍漏洞獎(jiǎng)勵(lì)目標(biāo)啟動(dòng)子域枚舉時(shí),我首先選擇了這個(gè)工具。
當(dāng)您有很多域要掃描時(shí),時(shí)間和可靠性是一個(gè)工具擁有的最重要的功能。當(dāng)我嘗試將Subbrute整合到我的進(jìn)程中時(shí),我發(fā)現(xiàn)了一些事情:
- 運(yùn)行很多次
- 腳本不會(huì)停止
- 遞延延長(zhǎng)運(yùn)行時(shí)間
列出了大約100K子域名,使用超過15分鐘才完成了單個(gè)域的掃描。由于完成掃描所需的時(shí)間,您的自動(dòng)化忽略了其它域名,這里新的子域名可能剛剛出現(xiàn)。當(dāng)Subbrute運(yùn)行時(shí),我有點(diǎn)想阻止這個(gè)運(yùn)行在我的被動(dòng)模塊中。這樣一來,當(dāng)域被掃描時(shí),我會(huì)從其它域名中獲取被動(dòng)DNS信息。
在漏洞獎(jiǎng)勵(lì)挖掘中,在其他人之前找到易受攻擊的服務(wù)是非常重要的,而Subbrute完成任務(wù)所需的時(shí)間成本對(duì)我來說太高了(我的機(jī)器)。另外,當(dāng)跑完我所有的目標(biāo)時(shí),Subbrute會(huì)偶爾掛起。這使得偵測(cè)的結(jié)束是一場(chǎng)噩夢(mèng),最終有太多的工作需要跟上,我開始尋找其他的工具。
3. Sublist3r
Sublist3r更側(cè)重于被動(dòng)來源信息收集。這些被動(dòng)源通常提供一個(gè)API,使用戶的搜索變得更加容易。然而,對(duì)他們往往有速率限制,使許多領(lǐng)域的自動(dòng)化困擾。很多時(shí)候,源會(huì)阻止我的實(shí)例的IP地址,因?yàn)檎?qǐng)求數(shù)量(可以理解)。
注意Sublist3r可以為您運(yùn)行Subbrute,但由于上述原因我不會(huì)建議。此外,Sublist3r必須在目標(biāo)上運(yùn)行,然后依次運(yùn)行Subbrute,從而增加每個(gè)域的運(yùn)行時(shí)間。
因此,我創(chuàng)建了一個(gè)腳本來為域運(yùn)行Sublist3r,然后單獨(dú)為一個(gè)域運(yùn)行Subbrute。這樣,一旦其中一個(gè)進(jìn)程完成,它就可以開始在另一個(gè)域上運(yùn)行,從而提高了自動(dòng)化的效率。這種方法在正確的軌道上,非常類似于我如何手動(dòng)處理Subbrute和被動(dòng)源。主要的缺點(diǎn)是完成掃描的時(shí)間。
4. Enumall
Enumall依靠Recon-NG(https://bitbucket.org/LaNMaSteR53/recon-ng)進(jìn)行被動(dòng)信息收集和暴力破解。Enumall是一個(gè)方便的小腳本,我認(rèn)為它以聰明的一種方式利用多種其他工具來完成任務(wù)。通過使用Recon-NG來發(fā)現(xiàn)主機(jī),它將自動(dòng)將您列舉的子域存儲(chǔ)在其內(nèi)置的表中。
但是,為了能在多個(gè)域中運(yùn)行并且效率高,對(duì)我來說是不可能的。Recon-NG將按順序運(yùn)行每個(gè)測(cè)試,嚴(yán)重影響其性能。
另外,由于它將在工作空間中創(chuàng)建表,我遇到了內(nèi)存問題($ 20在box中)。完成運(yùn)行后,我必須刪除域的每個(gè)工作區(qū),然后為下一個(gè)域創(chuàng)建一個(gè)新的工作區(qū)。如果有一個(gè)大的域,它會(huì)導(dǎo)致我的實(shí)例耗盡內(nèi)存。
由于這些原因,我無法使用枚舉。
5. Brutesubs
另一個(gè)運(yùn)行一些其他提及工具的工具。就個(gè)人而言,我沒有玩的特別好,作為枚舉子域名的簡(jiǎn)單方法而獲得青睞。
6. DNS-Parallel-Prober
在這個(gè)時(shí)候,它是無限的,但可能是MassDNS的競(jìng)爭(zhēng)對(duì)手。沒有使用它,但可能值得研究,如果MassDNS導(dǎo)致你太多的麻煩。
工具地址:https://github.com/blechschmidt/massdns
四、絕望
在這一點(diǎn)上我沒有希望。在有效性方面,我認(rèn)為被動(dòng)來源和Subbrute是最好的方法。但是,我不想創(chuàng)建處理容錯(cuò)程序的維護(hù)。正是在這一點(diǎn)上,我遇到了MassDNS,我的救世主 。
優(yōu)點(diǎn)(你也可以認(rèn)為我是一個(gè)“托”)
認(rèn)真地運(yùn)行MassDNS。如果我遇到這個(gè)工具,我將節(jié)省大量的時(shí)間,將其他子域暴力破解應(yīng)用程序并入。
首先,可靠性和速度是無與倫比的。100K子域在10秒以內(nèi)暴力破解。以前,如果我很幸運(yùn),許多子域名,僅僅需要5-10分鐘。我連續(xù)運(yùn)行2-3個(gè)月,在可靠性方面本身并沒有遇到任何問題。
以前,我通過Subbrute收集子域名,并利用我的腳本來解析被動(dòng)源。之后,我沒有想到會(huì)發(fā)現(xiàn)很多子域名,但是運(yùn)行MassDNS時(shí)使用大字典,它給了我太多子域來調(diào)查每個(gè)子域。(提示:有些人正在使用EyeWitness:https://github.com/ChrisTruncer/EyeWitness,我想知道為什么?)
此外,對(duì)我來說,似乎AltDNS被創(chuàng)建用于此工具(即使AltDNS包含一種解決域本身的方式)。AltDNS將創(chuàng)建一個(gè)字典,您可以將其添加到MassDNS中,以便為您解決問題。這是偉大的,因?yàn)楫?dāng)你有一個(gè)域下面有很多子域和一個(gè)大的前綴列表,排列列表是巨大的。到目前為止,我還沒有找到比MassDNS更快的DNS解析器。
最后,解析輸出效率。如果允許它輸出,MassDNS絕對(duì)是啰嗦的。無論響應(yīng)如何,您絕對(duì)不會(huì)缺少大多數(shù)記錄的關(guān)鍵輸出。這一點(diǎn)在下面的缺點(diǎn)中得到了擴(kuò)展。
除此之外,我認(rèn)為大多數(shù)(數(shù)據(jù))賞金獵人都在使用MassDNS,但顯然這不是我可以肯定的一點(diǎn)。
五、缺點(diǎn)
我還沒有討論MassDNS有一個(gè)主要的缺點(diǎn):它是一個(gè)非常簡(jiǎn)單的工具,具有復(fù)雜的輸出。
所討論的其他許多工具都提供了一個(gè)方便使用的界面和易于理解的輸出。不過,您只需要看看Frans Rosen在AppSec歐盟的演講,在那里他解決了其他工具有,而MassDNS沒有的問題(https://www.youtube.com/watch?v=FXCzdWm2qDg)。MassDNS不會(huì)保留其他工具所做的信息。例如,如果沒有找到子域,許多工具將不會(huì)顯示(因?yàn)樗荖XDOMAIN)。但是,F(xiàn)rans顯示,這里有一個(gè)CNAME沒有一個(gè)子域的A記錄。使用該host命令將返回NXDOMAIN,因?yàn)樗也坏紺NAME的地址。但是,如果有人注冊(cè)了CNAME,則會(huì)有一個(gè)A地址。一些工具錯(cuò)過了這一點(diǎn),所以接收被忽略了。但是,MassDNS不會(huì)隱藏信息(除非您提供標(biāo)志)。
下一個(gè)缺點(diǎn)是解析器。
為了加快枚舉,MassDNS會(huì)為每個(gè)主機(jī)聯(lián)系多個(gè)解析器。這樣一個(gè)DNS服務(wù)器不會(huì)減慢進(jìn)程,您可以有效地?cái)U(kuò)展枚舉(Subbrute也是這樣)。但是,有時(shí)候還有錯(cuò)誤的解析。
錯(cuò)誤的解析器返回舊的和過期的記錄(或只是錯(cuò)誤的)。因?yàn)橐恍┎淮嬖诘淖佑蛎畔ⅲ銜?huì)疼恨,這嚴(yán)重妨礙了您的枚舉。
解決這個(gè)問題的一種方法是解析“找到”的子域,然后使用Google的DNS(8.8.8.8)來解析每個(gè)域。如果Google沒有解決,我可以從解析器列表中刪除返回該記錄的原始DNS服務(wù)器。這樣,我已經(jīng)刪除了大多數(shù)的壞解決方案,給我留下了好的結(jié)果。
然而這里CPU吃緊。每次我運(yùn)行這個(gè),我花$20沒有做的盒子,每次運(yùn)行都讓我心靈很受傷!但是,結(jié)果非常好,所以我可以用它(并考慮一個(gè)更強(qiáng)大的盒子來支持它)。
最后,MassDNS 要求用戶解析其輸出。這意味著對(duì)于自動(dòng)化系統(tǒng),必須創(chuàng)建一個(gè)腳本來從輸出中提取有意義的信息。需要基本的腳本/編程知識(shí)才能獲得良好的自動(dòng)化和覆蓋。
最后的想法
總的來說,為了使用MassDNS提供的信息,您必須編寫一個(gè)腳本來解析它,并與輸出結(jié)果進(jìn)行交互。在我看來,這是每個(gè)人使用MassDNS的最大障礙。有了這個(gè)說法,如果你具備足夠的編程能力來解析輸出并將其傳遞到自動(dòng)化中,那么,你將有一個(gè)很好的子域枚舉過程。嘗試一下,與以前的枚舉方法進(jìn)行比較,考慮結(jié)果,可靠性和速度。
原文標(biāo)題:Offensive Security by Automation
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】