Sublert:自動化監控子域名變化的工具
漏洞賞金(Bug bounty)行業在近年來可以說是發展迅速,幾乎每天都有一些新的賞金專案推出,這也帶來了白帽黑客間激烈的競爭。這是一種貨幣化的競賽,圍繞著第一個報告漏洞的競爭,先到先得。因此,想要佔得先機並保持領先,學習和擴充套件你的技能將是一個必不可少的過程。另外,測試方法的改進也是至關重要的,例如優化你的偵察工作,這肯定會給你帶來巨大的幫助。
在這方面,我已構建了一個安全和偵察工具,我自己已經用了很長一段時間。這款工具可以自動化的監控特定組織的子域,並在找到新內容時向你傳送通知。
該工具由 OWASP Seasides 釋出於 NullCon 2019 期間。
Sublert 簡介
證書透明度(CT)是一種新的網際網路標準,使TLS/SSL證書頒發過程更加透明和公開。其旨在允許域所有者瞭解公共證書頒發機構(CA)頒發給域的TLS/SSL證書。
Sublert 是一個由Python編寫的安全和偵察工具,其主要用途是監控特定組織部署的新子域並頒發TLS/SSL證書。該工具支援定時任務,你可以設定固定的時間,日期或間隔(理想情況是每天)定期執行它。新的已識別子域將通過通知推送,傳送到Slack工作區。此外,該工具會通過DNS解析來確定工作子域。
Sublert主要是為漏洞賞金獵人而定製的,以加強他們的偵察能力,並通過獲取的新子域來擊敗競爭對手。但Sublert也可在內部使用,用以監控工程團隊部署的各種子域。
Sublert 的優勢
雖然市面上已有開源的監控工具,如 Cert Spotter 或 Facebook monitoring tool ,但這些工具主要是為組織監控網路釣魚活動而構建的,因此每當有以欺詐手段或錯誤方式向域名頒發證書時都會收到通知。這意味著如果你正在監控擁有大量資產的組織,你將被不相關的結果(包括網路釣魚域名、無意義的超範圍資產以及每天數百封電子郵件)所困擾。
設定
環境要求
在Unix上執行的VPS。(我用的是 digitalOcean )
Python 2.x or 3.x.
Free Slack workplace
首先,我們從Github將工具克隆到你的Web伺服器:
$ git clone https://github.com/yassineaboukir/sublert.git && cd sublert
現在,我們使用以下命令安裝所需的模組:
Python 2:
$ sudo pip install -r requirements.txt
Python 3:
$ sudo pip3 install -r requirements.txt
下一步是建立一個Slack工作區,以便將新子域傳送到該工作區。開啟瀏覽器訪問 https://slack.com/ ,並建立一個免費帳戶即可。
然後,建立兩個channel:一個用於子域,另一個用於錯誤記錄,如下所示:
接下來,我們需要為每個channel生成Webhook URL,以便我們可以利用Slack API。
訪問 https://api.slack.com/apps ,並建立一個新應用。
瀏覽到Incoming Webhooks建立兩個Webhook,並將每個Webhook連結到之前建立的兩個channel。
並將每個webhook與相應的Slack channel連結。
你將獲取到一個如下格式的連結:
https://hooks.slack.com/services/XXXXXXX/BF0XXXXME/XXXXXXXXXXXXX
複製兩個webhook連結並編輯config.py檔案:
完成以上操作後,現在我們就可以新增域來監控新子域了。我們新增PayPal看看:
$ python sublert.py -u paypal.com
如果你想監控其它域名,只需以相同的方式進行操作即可。完成目標新增後,下一步是設定定時任務,以在固定的時間定期執行Sublert。
建立一個Sublert.py可執行檔案:
$ chmod u+x sublert.py
現在,我們來新增一個新的定時任務,輸入命令:
$ Crontab -e
在Cron檔案的末尾新增以下行:
0 */12 * * * cd /root/sublert/ && /usr/bin/python /root/sublert/sublert.py -r -l >> /var/log/sublert.log 2>&1
你需要將/root/sublert/更改為Sublert的所在目錄。
如果你使用的是python3,請將/usr/bin/python更改為/usr/bin/python3
0 */12 * * *→ 表示每12小時執行一次Sublert。你可以使用 https://crontab.guru/ ,來自定義你所希望的固定執行時間。
-r→ 執行DNS解析。這是可選的,但建議使用。
- l → 記錄錯誤並將其推送到Slack channel。這是可選的,但建議使用。
/var/log/sublert.log 2>&1→ 將輸出儲存到/var/log/sublert.log。
你可以通過執行以下命令,來驗證它是否已被正確配置並順利執行。你應該會收到關於Slack的通知推送:
$ python sublert.py -l -r
Sublert將每12小時執行一次,如果你監控的域名列表部署了一個新的子域名,那麼你將收到有關以下內容的Slack通知:
如果Sublert被執行但未找到任何內容,你會收到未發現任何新子域的通知推送。如下:
建議你在手機上安裝Slack移動版,並禁用“Do Not Disturb”模式,以便隨時隨地獲取通知。
你可以隨時新增新的監控域名或刪除其中一些不必要的內容。以下是支援的各種引數:
將yahoo.com新增到受監控列表中。
$ python sublert.py -u yahoo.com
從列表中刪除yahoo.com。
$ python sublert.py -d yahoo.com
顯示當前正在監控的所有域名。
$ python sublert.py -a
指定要使用的併發執行緒數(預設值為:20)。如有必要,你還可以將引數新增到定時任務中。
$ python sublert.py -t 30
執行DNS解析。
$ python sublert.py -r
啟用基於Slack的錯誤記錄。如有必要,你還可以將引數新增到定時任務中。
$ python sublert.py -l
重置所有內容:將清理受控的列表並刪除所有本地儲存的檔案。建議僅在出現問題時使用。
$ python sublert.py -m
注意:你所監控的物件必須為開放範圍內的漏洞賞金程式,以避免未經授權的監控和違反程式的安全策略。
Sublert 的弱勢
Sublert利用證書透明度,這意味著它只會監控為其頒發SSL/TLS證書的子域,無法識別在HTTP/80上執行的子域。但你可以使用其它開源工具(如Massdns,Aquatone,Sublist3r等)。
未來計劃
使用關係資料庫而不是文字檔案進行儲存。
提取儘可能多的資訊,包括:標題,狀態碼,螢幕截圖和檢查潛在的子域接管。
整合Telegram用於通知推送。
反饋和問題
如果你有任何反饋意見,請隨時在 https://github.com/yassineaboukir/sublert/issues 頁面提交你的問題。也歡迎大家關注我的Twitter: @yassineaboukir 。感謝閱讀!
*參考來源: medium ,FB小編secist編譯,轉載請註明來自FreeBuf.COM