MassDNS:跨域DNS枚舉工具
simeon
原文地址:http://offsecbyautomation.com/Use-MassDNS/
工具地址:https://github.com/blechschmidt/massdns
使用Massdns
唯一大量枚舉跨域的工具搅窿。
TLDR
MassDNS可以在幾秒鐘內(nèi)可靠地解析100K子域良姆,可以使用AltDNS的功能捍歪,并為用戶提供超過超乎想象的結(jié)果。可以使用它來連續(xù)暴力破解大量的域名。
譯者注:
Altdns -通過更改和排列進(jìn)行子域發(fā)現(xiàn),Altdns是一種DNS偵察工具践付,允許發(fā)現(xiàn)符合模式的子域名。Altdns接受可能存在于域下的子域中的單詞(例如測試缺厉,開發(fā)永高,分期),以及獲取您知道的子域列表提针。工具傳送門:https://github.com/infosec-au/altdns
靈感
進(jìn)攻安全的第一步是偵察命爬。獲取目標(biāo)的全部范圍是偵查階段的目標(biāo)。主要是辐脖,這篇文章將重點放在如何有效地發(fā)現(xiàn)子域名饲宛,在大量的目標(biāo)中使用MassDNS。此外嗜价,關(guān)于這個空白我已經(jīng)研究了很長一段時間艇抠,并沒有找到一個運行在許多目標(biāo)上的比較好的工具。
工具
有很多腳本和程序可以處理子域名枚舉久锥。我將主要討論以下工具(我基于他們的受歡迎程度來選擇):
1.Passive sources(https://github.com/rondilley/passivedns)
2.Subbrute(https://github.com/TheRook/subbrute)
3.Sublist3r(https://github.com/aboul3la/Sublist3r)
4.Enumall(https://github.com/jhaddix/domain)
5.Brutesubs(https://github.com/anshumanbh/brutesubs)
6.DNS-Parallel-Prober(https://github.com/lorenzog/dns-parallel-prober)
Passive sources
我想手動處理被動源家淤,因為我已經(jīng)有一個自動化框架,很難將其集成到預(yù)構(gòu)建的工具中瑟由。被動來源是可以的絮重,但是他們永遠(yuǎn)不會暴力破解一樣好。原因很簡單:如果它是被動來源歹苦,它已經(jīng)在別處找到并被索引了青伤。然而,如果你是暴力破解的話殴瘦,就有一定的幾率導(dǎo)致一些被動渠道沒有選擇這些子域名狠角。
在我看來,被動來源永遠(yuǎn)都是有益于痴施,你得到你的子域擎厢,但不應(yīng)該是主要來源究流,這使得我們使用其他工具辣吃。
Subbrute
許多人都知道如何利用一個經(jīng)過很長時間測試的工具。在我看來芬探,該工具的最大特點是內(nèi)置的遞歸神得,檢查子域中的子域。當(dāng)我為每個公開范圍漏洞獎勵目標(biāo)啟動子域枚舉時偷仿,我首先選擇了這個工具哩簿。
當(dāng)您有很多域要掃描時宵蕉,時間和可靠性是一個工具擁有的最重要的功能。當(dāng)我嘗試將Subbrute整合到我的進(jìn)程中時节榜,我發(fā)現(xiàn)了一些事情:
1.運行很多次
2.腳本不會停止
3.遞延延長運行時間
列出了大約100K子域名羡玛,使用超過15分鐘才完成了單個域的掃描。由于完成掃描所需的時間宗苍,您的自動化忽略了其它域名稼稿,這里新的子域名可能剛剛出現(xiàn)。當(dāng)subbrute運行時讳窟,我有點想阻止這個運行在我的被動模塊中让歼。這樣一來,當(dāng)域被掃描時丽啡,我會從其它域名中獲取被動DNS信息谋右。
在漏洞獎勵挖掘中,在其他人之前找到易受攻擊的服務(wù)是非常重要的补箍,而subbrute完成任務(wù)所需的時間成本對我來說太高了(我的機器)改执。另外,當(dāng)跑完我所有的目標(biāo)時馏予,subbrute會偶爾掛起天梧。這使得偵測的結(jié)束是一場噩夢,最終有太多的工作需要跟上霞丧,我開始尋找其他的工具呢岗。
Sublist3r
Sublist3r更側(cè)重于被動來源信息收集。這些被動源通常提供一個API蛹尝,使用戶的搜索變得更加容易后豫。然而,對他們往往有速率限制突那,使許多領(lǐng)域的自動化困擾挫酿。很多時候,源會阻止我的實例的IP地址愕难,因為請求數(shù)量(可以理解)早龟。
注意Sublist3r可以為您運行subbrute,但由于上述原因我不會建議猫缭。此外葱弟,Sublist3r必須在目標(biāo)上運行,然后依次運行subbrute猜丹,從而增加每個域的運行時間芝加。
因此,我創(chuàng)建了一個腳本來為域運行Sublist3r射窒,然后單獨為一個域運行subbrute藏杖。這樣将塑,一旦其中一個進(jìn)程完成,它就可以開始在另一個域上運行蝌麸,從而提高了自動化的效率点寥。這種方法在正確的軌道上,非常類似于我如何手動處理subbrute和被動源来吩。主要的缺點是完成掃描的時間开财。
Enumall
Enumall依靠Recon-NG(https://bitbucket.org/LaNMaSteR53/recon-ng)進(jìn)行被動信息收集和暴力破解。Enumall是一個方便的小腳本误褪,我認(rèn)為它以聰明的一種方式利用多種其他工具來完成任務(wù)责鳍。通過使用Recon-NG來發(fā)現(xiàn)主機,它將自動將您列舉的子域存儲在其內(nèi)置的表中兽间。
但是历葛,為了能在多個域中運行并且效率高,對我來說是不可能的嘀略。Recon-NG將按順序運行每個測試恤溶,嚴(yán)重影響其性能。
另外帜羊,由于它將在工作空間中創(chuàng)建表咒程,我遇到了內(nèi)存問題($ 20在box中)。完成運行后讼育,我必須刪除域的每個工作區(qū)帐姻,然后為下一個域創(chuàng)建一個新的工作區(qū)。如果有一個大的域奶段,它會導(dǎo)致我的實例耗盡內(nèi)存饥瓷。
由于這些原因,我無法使用枚舉痹籍。
Brutesubs
另一個運行一些其他提及工具的工具呢铆。就個人而言,我沒有玩的特別好蹲缠,作為枚舉子域名的簡單方法而獲得青睞棺克。
DNS-Parallel-Prober
在這個時候,它是無限的线定,但可能是MassDNS的競爭對手娜谊。沒有使用它,但可能值得研究渔肩,如果MassDNS導(dǎo)致你太多的麻煩因俐。
絕望
在這一點上我沒有希望拇惋。在有效性方面周偎,我認(rèn)為被動來源和subbrute是最好的方法抹剩。但是,我不想創(chuàng)建處理容錯程序的維護(hù)蓉坎。正是在這一點上澳眷,我遇到了MassDNS,我的救世主蛉艾。
優(yōu)點(你也可以認(rèn)為我是一個“托”)
認(rèn)真地運行MassDNS钳踊。如果我遇到這個工具,我將節(jié)省大量的時間勿侯,將其他子域暴力破解應(yīng)用程序并入拓瞪。
首先,可靠性和速度是無與倫比的助琐。100K子域在10秒以內(nèi)暴力破解祭埂。以前,如果我很幸運兵钮,許多子域名蛆橡,僅僅需要5-10分鐘。我連續(xù)運行2-3個月掘譬,在可靠性方面本身并沒有遇到任何問題泰演。
以前,我通過subbrute收集子域名葱轩,并利用我的腳本來解析被動源睦焕。之后,我沒有想到會發(fā)現(xiàn)很多子域名靴拱,但是運行MassDNS時使用大字典复亏,它給了我太多子域來調(diào)查每個子域。(提示:有些人正在使用EyeWitness:https://github.com/ChrisTruncer/EyeWitness缭嫡,我想知道為什么缔御?)
此外,對我來說妇蛀,似乎AltDNS被創(chuàng)建用于此工具(即使AltDNS包含一種解決域本身的方式)耕突。AltDNS將創(chuàng)建一個字典,您可以將其添加到MassDNS中评架,以便為您解決問題眷茁。這是偉大的,因為當(dāng)你有一個域下面有很多子域和一個大的前綴列表纵诞,排列列表是巨大的上祈。到目前為止,我還沒有找到比MassDNS更快的DNS解析器。
最后登刺,解析輸出效率籽腕。如果允許它輸出,MassDNS絕對是啰嗦的纸俭。無論響應(yīng)如何皇耗,您絕對不會缺少大多數(shù)記錄的關(guān)鍵輸出。這一點在下面的缺點中得到了擴(kuò)展揍很。
除此之外郎楼,我認(rèn)為大多數(shù)(數(shù)據(jù))賞金獵人都在使用MassDNS,但顯然這不是我可以肯定的一點窒悔。
缺點
我還沒有討論massdns有一個主要的缺點:它是一個非常簡單的工具呜袁,具有復(fù)雜的輸出。
所討論的其他許多工具都提供了一個方便使用的界面和易于理解的輸出简珠。不過傅寡,您只需要看看Frans Rosen在AppSec歐盟的演講,在那里他解決了其他工具有北救,而MassDNS沒有的問題(https://www.youtube.com/watch?v=FXCzdWm2qDg)荐操。MassDNS不會保留其他工具所做的信息。例如珍策,如果沒有找到子域托启,許多工具將不會顯示(因為它是NXDOMAIN)。但是攘宙,F(xiàn)rans顯示屯耸,這里有一個CNAME沒有一個子域的A記錄。使用該host命令將返回NXDOMAIN蹭劈,因為它找不到CNAME的地址疗绣。但是,如果有人注冊了CNAME铺韧,則會有一個A地址多矮。一些工具錯過了這一點,所以接收被忽略了哈打。但是塔逃,MassDNS不會隱藏信息(除非您提供標(biāo)志)。
下一個缺點是解析器料仗。
為了加快枚舉湾盗,MassDNS會為每個主機聯(lián)系多個解析器。這樣一個DNS服務(wù)器不會減慢進(jìn)程立轧,您可以有效地擴(kuò)展枚舉(subbrute也是這樣)格粪。但是躏吊,有時候還有錯誤的解析。
錯誤的解析器返回舊的和過期的記錄(或只是錯誤的)帐萎。因為一些不存在的子域名信息比伏,你會疼恨,這嚴(yán)重妨礙了您的枚舉吓肋。
解決這個問題的一種方法是解析“找到”的子域,然后使用Google的DNS(8.8.8.8)來解析每個域瑰艘。如果Google沒有解決是鬼,我可以從解析器列表中刪除返回該記錄的原始DNS服務(wù)器。這樣紫新,我已經(jīng)刪除了大多數(shù)的壞解決方案均蜜,給我留下了好的結(jié)果。
然而這里CPU吃緊芒率。每次我運行這個囤耳,我花$20沒有做的盒子,每次運行都讓我心靈很受傷偶芍!但是充择,結(jié)果非常好,所以我可以用它(并考慮一個更強大的盒子來支持它)匪蟀。
最后椎麦,MassDNS要求用戶解析其輸出。這意味著對于自動化系統(tǒng)材彪,必須創(chuàng)建一個腳本來從輸出中提取有意義的信息观挎。需要基本的腳本/編程知識才能獲得良好的自動化和覆蓋。
最后的想法
總的來說段化,為了使用MassDNS提供的信息嘁捷,您必須編寫一個腳本來解析它,并與輸出結(jié)果進(jìn)行交互显熏。在我看來雄嚣,這是每個人使用MassDNS的最大障礙。有了這個說法喘蟆,如果你具備足夠的編程能力來解析輸出并將其傳遞到自動化中现诀,那么你將有一個很好的子域枚舉過程。嘗試一下履肃,與以前的枚舉方法進(jìn)行比較仔沿,考慮結(jié)果,可靠性和速度尺棋。
寫于2017年6月2日