滲透基礎——選擇一個合適的C2域名
安全脈搏獨家發文,如需轉載,請先聯繫授權。
0x00 前言
在滲透測試中,常常需要選擇一個合適的域名作為c2伺服器,那麼什麼樣的域名才能稱之為"合適"呢?
expireddomains.net也許能夠給你一些思路。
通過expireddomains.net能夠查詢到最近過期或刪除的域名,更重要的是它提供了關鍵詞搜索功能。
本文將要測試過期域名自動化搜索工具CatMyFish,分析原理,修正其中的bug,使用python編寫一個爬蟲,獲得所有搜索結果。
0x01 簡介
本文將要介紹以下內容:
測試過期域名自動化搜索工具CatMyFish
分析原理修正CatMyFish中的bug
爬蟲開發思路和實現細節
開源python實現的爬蟲代碼
0x02 測試過期域名自動化搜索工具CatMyFish
下載地址:
https://github.com/Mr-Un1k0d3r/CatMyFish
主要實現流程
用戶輸入關鍵詞
腳本將搜索請求發送到expireddomains.net進行查詢
獲得域名列表
腳本將域名發送到Symantec BlueCoat進行查詢
獲取每個域名的類別
expireddomains.net地址:
https://www.expireddomains.net/
Symantec BlueCoat地址:
https://sitereview.bluecoat.com/
實際測試
需要安裝python庫beautifulsoup4
嘗試搜索關鍵詞microsoft,腳本報錯,如下圖
腳本對結果的解析出現了問題
於是,按照CatMyFish的實現思路自己編寫腳本測試一下
訪問expireddomains.net查詢關鍵詞,代碼如下:
共獲得15個結果,如下圖
通過瀏覽器訪問,共獲得25個結果,如下圖
經過對比發現通過腳本獲得的數目相比瀏覽器要少,應該是腳本在篩選的時候出現了問題
註:
初學者建議掌握一下beautifulsoup4的基本使用技巧,本文暫略
0x03 查找bug原因
1、根據response查看域名標籤,對篩選規則進行判斷
需要獲取到接收到的response數據,通過查看各個域名對應的標籤,判斷是否在標籤篩選的時候出現了問題
查看response數據的兩種方法:
(1) 使用Chrome瀏覽器查看
重新載入網頁,選擇->
如下圖
(2) 使用python腳本
代碼如下:
分析response數據,發現出錯原因:
使用原測試腳本能夠提取出如下數據中的域名:
但是response數據中還包含另一種類型的數據:
原測試腳本沒有提取該標籤中保存的域名信息
0x04 bug修復
篩選思路:
獲得標籤中第一個title的內容
原因:
這樣能同時獲得兩組數據中保存的域名信息,過濾無效信息(如第二個title中的域名GoDaddy.com)
實現代碼:
因此,獲得完整查詢結果的測試代碼如下:
成功獲得第一頁的所有結果,測試如下圖
0x05 獲得所有查詢結果
expireddomains.net每頁保存25個結果,想要獲得所有結果,需要發送多個請求,遍歷所有查詢頁面的結果
首先需要獲得所有結果的數目,除以25獲得需要查詢的頁面個數
1、統計所有結果
查看Response,找到表示搜索結果數目的位置,內容如下:
Chrome瀏覽器顯示如下圖
為了簡化代碼長度,使用直接傳入CSS選擇器進行篩選,在對標籤進行篩選後,第1個標籤表示結果數目,對應查詢代碼為:
輸出結果為
提取其中的數字:
輸出結果為
去掉中間的",":
輸出結果為
除以25即可獲得需要查詢的頁面個數,這裡需要注意需要將字元串類型的"20213"轉換為整型
2、猜測查詢規律
第二頁查詢的url:
https://www.expireddomains.net/domain-name-search/?start=25&q=microsoft
第三頁查詢的url:
https://www.expireddomains.net/domain-name-search/?start=50&q=microsoft
找到查詢規律,第i頁查詢的url:
https://www.expireddomains.net/domain-name-search/?start=&q=microsoft
註:
經測試,expireddomains.net對未登錄用戶最多提供550個的結果,共21頁
3、對結果進行判斷
在腳本實現上,需要對結果進行判斷,如果結果大於550,只輸出21頁,如果小於550,輸出頁
4、模擬瀏覽器訪問(備選)
當我們使用腳本嘗試自動查詢多個頁面時,如果網站使用了反爬蟲機制,無法獲得真實數據
經測試,expireddomains.net並未開啟反爬蟲機制
如果在將來,expireddomains.net開啟了反爬蟲機制,腳本需要模擬瀏覽器發送請求,在頭部附加User-Agent等信息
查看Chrome瀏覽器獲得發送請求的信息,如下圖
對照請求,添加頭部信息即可繞過
示例代碼:
完整代碼實現地址:
https://github.com/3gstudent/GetExpiredDomains
實際測試:
搜索關鍵詞,結果少於550,如下圖
搜索關鍵詞,結果大於550,只顯示21頁,如圖
同Web訪問的內容對比,結果相同,測試成功
0x06 小結
本文測試了過期域名自動化搜索工具CatMyFish,分析原理,修正其中的bug,使用python編寫爬蟲獲得所有搜集結果,分享開發思路,開源代碼。


※某cms任意賬戶密碼重置漏洞分析和利用
※挖礦軟體自帶清除競爭對手功能
TAG:SecPulse安全脈搏 |