為鋼筆測試者構建自己的OSINT api

由Forrest Kasler撰寫

作為滲透測試儀,任何外部評估的第一步是偵察階段,在那裏我們傾向於嚴重依賴開源智能(OSINT)數據源和API。此博客帖子都是關於挖掘索引數據的價值我們自己,並展示了如何為快速搜索索引非常大的數據集。我們將介紹如何使用NodeJS和MongoDB將數據從Rapid7的“Project Sonar”轉換為強大的oveSint API,以便我們允許我們以基本搜索條件搜索目標域和子域。

雖然有一些偉大的osint API可用於查找我們目標的子域,但這些工具的空閑層通常按照每天的API呼叫數量,返回的結果數或限製。我們也受到每個API的搜索功能的限製。例如,WHOxy搜索區分大小寫,而Hackertarget僅允許基於目標域的搜索,並且不支持基本字符串搜索。為了解決這些限製,我們可以構建自己的oveInt API並索引我們的數據以滿足我們的搜索需求。畢竟,這是開源數據:如果有人挖掘它,我們可以做同樣的事情!

以下是我們嚐試使用簡單字符串搜索hackertarget時獲取的錯誤:

通過構建我們自己的OSINT API,我們可以創建一個允許簡單字符串搜索的數據庫,並得到如下結果:

甚至一些我們無法從其他oveint API獲取的相關數據:

首先,我們需要一些開源數據。獲取開源數據的傳統方式是自己挖掘。利用當前的技術,在合理的時間內,使用合適的設備和互聯網連接,對互聯網上的每個公共IPv4地址進行基本掃描實際上是可行的。這種方法的主要缺點是需要額外的步驟來獲得ISP的許可,與濫用記錄者和網絡維護人員協調掃描,記錄掃描的原因,為組織提供一個退出選項,並管理包速率以避免拒絕服務(DoS)問題。在DIY數據挖掘方法方麵,Rapid7有一些很棒的工具和資源:

https://blog.rapid7.com/2013/10/30/legal-considerations-for-widespread-scanning/

https://github.com/zmap/zmap/wiki/Scanning-Best-Practices

https://en.wikipedia.org/wiki/Reserved_IP_addresses

作為替代方案,RAPID7不斷掃描互聯網並為研究人員免費提供他們的掃描結果此開源計劃是呼叫項目聲納:

https://opendata.rapid7.com/

每個月,他們更新大量的數據集,包括DNS轉發記錄、反向DNS記錄、服務橫幅、TCP和UDP的公共端口掃描、http/s響應、證書信息和關鍵漏洞掃描。它到底有多大呢?僅IPv4的轉發DNS記錄就有33 gb的gzip數據,並擴展到大約200 gb的文本數據。為了快速搜索這些數據,我們需要用一些有用的搜索詞對其進行索引。我們將使用MongoDB,因為它是專門為非常大的數據集設計的。此外,以下是MongoDB為什麼要構建自己的OSINT api的其他一些原因:

  • 它是免費的!
  • MongoDB的水平、擴展架構可以支持大量的數據和流量。”——www.mongodb.com/why-use-mongodb
  • 非常簡單的查詢語言 - 快速原型!
  • 用靈活的對象表示數據
  • 您無需定義表結構即可開始
  • 內置強大的索引功能

要開始,我們首先需要下載數據集。鑒於數據的大小,您可能希望為此步驟拾取外部硬盤驅動器。Terabyte Drive應該足以滿足我們的需求,並且您可以在這些天中挑選一個約50美元的時間。為了節省時間下載和解包數據,我們可以使用管道運算符將這兩個步驟組合到Gunzip:

獲得數據後,我們需要在將其加載到MongoDB實例之前對其進行一些處理。我們將需要刪除一個無關的時間戳,並為每個記錄計算一些搜索詞。Project Sonar的原始數據是這樣的:

處理之後,我們的數據將被轉換成JSON對象,看起來像這樣:

MongoDB將由MongoDB作為“多田指數”的“術語”屬性。我們可以使用此功能來預先定義數據集上的搜索條件類型的樣式。在我們的情況下,我們將每個DNS記錄切成單獨的單詞,刪除小單詞(例如COM,NET,EDU,GOV,Club等),並使用這些記錄的可搜索條款。NodeJS具有數據管道功能,可以允許我們有效地處理此類大型數據集。我們將使用稱為“變換流”的特殊管道來修改每個記錄並將其寫入中間文件:

一旦我們處理了數據,我們可以使用Monodb的“Mongoimport”工具將其拉到我們的數據庫中:

接下來,我們需要應用索引,以便我們能夠快速搜索記錄。對於這個大的數據集,我們將始終希望持續執行此步驟。索引數據所需的額外處理將縮短到從不在標準硬件上完成的點的過程。

雖然我們索引數據庫,但重要的是要為打開文件開辟終端的正常限製非常重要。MongoDB使用許多鏈接文件構建其數據,並且可能需要在導入和索引步驟期間的一段時間打開。要增加此限製,請使用“ulimit”命令然後運行mongodb守護程序:

最後,我們需要使用簡單的API公開我們的MongoDB實例。我們可以隻使用幾行節點來實現前進和反向查找:

最後的結果是:

反向查找也是如此

通過對Project Sonar中的其他數據集采用相同的方法,您可以創建一個OSINT API,該API類似於Shodan的核心特性,但沒有速率限製。您還可以將此技術應用於其他數據集,如ASN數據、密碼泄露和whois數據。

但如果我們隻是得到一堆平麵列表,這些數據又有什麼用呢?如果我們能夠可視化數據點之間的連接,並與我們的數據進行交互,不是更好嗎?在後續的文章中,我們將使用一個名為ScopeCreep的工具來實現這一點!如果你想跳過這個博客,直接使用這個工具,你可以在GitHub上查看:https://github.com/fkasler/scope_creep.

  • 704-816-8470

哈維爾是CLA網絡安全服務集團的一名經理。在加入CLA之前,Javier在國防部和一家金融服務公司工作了10年,領域包括內部威脅、事件響應、分析和係統工程。

留下一個回複

您的電子郵件地址不會被公開。

*

*

通過電子郵件接收CLA的網絡安全博客

*表示必要

Baidu
map