滲透測試之我是如何做信息收集
搞滲透的人應該都清楚,給一個目標站點做測試,第一步就是信息收集,通過各種渠道和手段盡可能收集到多的關于這個站點的信息,幫助我們更多的去找到滲透點。而信息收集的方式有很多,大致有搜索引擎、域名注冊網站、shodan、github信息收集工具、網站公告等等,甚至還有社工的方式。網上關于信息收集也有很多相關的文章介紹,其實方式方法都大同小異。今天我主要介紹一下我在做信息收集的時候用到的一些工具和自己寫的一些腳本,幫助我在滲透過程中更加方便的做好這一步。
拿到一個目標站點,首先肯定是利用搜索引擎,去搜索跟站點相關的內容。首當其沖的當然是谷歌,功能強大,各種信息收集的命令,方便準確,但國內訪問受限,我這里總結了一些利用谷歌去做站點信息收集時常用的場景和命令。
除了Google之外,百度和微軟的bing都可以作為信息收集的好幫手,可以與Google作為互補,有時候通過這兩款搜索引擎收集信息時也能有意想不到的收獲,但對于信息收集命令的支持就沒有Google這么強大了。
信息收集另一種常用的方式就是通過一級域名去收集該域名下的子域名,通過站長之家的whois、域名備案查詢、IP/域名查詢工具就能搜索到一些相關域名和IP,針對這些方式我就不做詳細介紹了,今天我介紹一下我常用的一款子域名探測工具—aquatone,下載地址:https://github.com/michenriksen/aquatone;
這款工具包含三個命令:
- aquatone-discover:使用被動收集或字典爆破的方式去收集子域名;
- aquatone-scan:完成子域名掃描后,可掃描域名開放端口、HTTP header、HTML body、截圖等信息生成報告;
- aquatone-gather:對掃描結果中的IP進行訪問請求和網頁截圖,搜集信息;
這三個命令使用起來也非常方便,aquatone-discover跟上參數 -d 或–domain加上需要搜索的一級域名就可以了,這里有一點需要注意,在檢索子域名的時候,會去shodan、censys、virustotal進行檢索,需要在這些站點注冊,并將各站點的key和secret配置在aquatone上。
Aquatone-discover探測子域名花費的時間會稍微有點長,檢索完成之后會在目錄下生成一個以一級域名命名的目錄,檢索的結果會存儲在該目錄下的hosts.txt和hosts.json文件中,內容包括發現的子域名及其對應IP:
子域名探測完成之后,就可以使用利用aquatone-scan探測域名開放的端口等內容,使用也很簡單aquatone-scan–d/–domain 帶上搜索的子域名,這時工具會自動去找到該子域名搜索結果的文件hosts.json,對檢索到的域名進行探測。
在前面提到,我們查用搜索引擎去收集信息,但是如果通過一級域名搜索時,搜索到的結果會比較多,人工進行過濾的方式會耗費時間,這是我們可以利用上面檢索到的子域名作進一步搜索引擎信息收集,縮小了結果范圍,還可以利用工具進一步對搜索結果進行過濾,這里我以bing搜索引擎為例。
將需要搜索的站點做為參數傳入,解析搜索結果頁面,獲取搜索到的域名URL,搜索結果比較多時還需要遍歷搜索結果獲取所有的URL:
運行后的結果大致如下:
這里可以發現有很多重復的URL,可以在檢索完成之后做一次去重,有很多去重的方式,可以寫入文件然后遍歷去重,也可以寫入redis中然后遍歷去重,代價更大一點的方式是,在檢索的過程中,存入list中,每次檢索遍歷list中的內容,如果已經存在則不寫入,大家可以自己去實現。
信息收集的方式有很多,主要在于如何更有效的去收集信息,如何正確利用搜集到的信息,更多的收集到有效的信息能夠幫助在站點滲透過程中有更多的突破點,發現站點中更多隱藏的問題。