當前位置:
首頁 > 新聞 > 開源情報搜集技術詳解

開源情報搜集技術詳解

滲透測試幾乎總是需要從一個廣泛的信息收集階段作為開始。這篇文章討論了如何利用互聯網上的開源信息來建立目標的信息檔案。收集的數據可用於識別伺服器、域名、版本號、漏洞、錯誤配置、可利用的端點和敏感信息泄漏。

通過開源情報收集技術,我們可以發現大量的數據,尤其是對於那些擁有大量在線業務的公司。總會有一些很小的代碼片段,或者是一個帶有詳細細節的技術論壇的問題討論,或者是一個長期被遺忘的子域名,甚至可能還有一個 PDF 文檔,其中包含可用於攻擊目標網站的元數據。即使是通過簡單的谷歌搜索通常也會產生有趣的結果。以下是我們在獲得客戶端(域名)名稱後所做的一些事情(排序沒有特定的順序) :

1. 通過 Whois 信息可以查找目標的管理員聯繫人和其他電子郵件地址。這些電子郵件地址通常也作為應用程序上的有效用戶存在。電子郵件地址可以通過資料庫泄露或者通過一個像 HaveIBeenPwned這樣的搜索服務來進行搜索,這個服務會告訴你你的電子郵件是否在泄露的資料庫中。

在https://haveibeenpwned.com上發現某個電子郵件地址已經出現在泄漏的資料庫中。

除了電子郵件地址,whois 查詢還可以返回 IP 地址的歷史信息,域名過期日期,甚至電話號碼,這些信息可用於社會工程學攻擊。

2. 使用谷歌高級搜索中的 site 操作符,可以將搜索結果限制在目標域名,找到 php (或任何伺服器端腳本文件類型) ,txt 或日誌文件

site:*.example.org ext:php | ext:txt | ext:log

在某些情況下,我們使用這樣的搜索查詢找到了一些有趣的文件(例如日誌文件) ,這些文件可能包含敏感信息和應用程序的完整系統路徑。你可以將此查詢與一個減號操作符結合起來使用,以排除特定的搜索結果。

在谷歌搜索中發現通過 phpinfo() 函數泄漏了伺服器信息的鏈接

3.在域名(或子域名)上搜索一些格式較老的文檔。文件類型首先應該包括 PDF、 Excel、 Word 和 PowerPoint。這些文檔可能包含可用於其他攻擊的信息。通常,包含在文件屬性中的文檔元數據(作者名等)也是一個可以登錄 Web 應用程序的有效用戶名。

site:*.example.org ext:pdf | ext:doc| ext:docx | ext:ppt | ext:pptx | ext:xls | ext:xlsx | ext:csv

你可以將這些文件下載到本地,並通過文檔元數據提取器運行這些文件或者通過查看每個文件的屬性檢查泄漏了哪些信息。

要查看所有可用於搜索數據的選項,請參考 https://www.google.co.in/advanced_search。此外,谷歌黑客資料庫(現在可以在exploit-db上找到)允許你使用預先制定的查詢,在互聯網上搜索一些有趣的東西。

exploit-db 上的谷歌黑客資料庫

4.檢查 robots.txt 文件中隱藏的有趣的目錄路徑。大多數購物車、框架和內容管理系統都有定義良好的目錄結構。因此,管理員後台可能是一個 /admin 或一個 /administration 請求。如果管理後台的路徑不是這些常見的路徑,那麼在 robots.txt 中很可能包含你要查找的目錄名。

某個比較流行的網站上的 robots.txt 文件

5. 查看 HTML 源碼來找到購物車、內容管理系統(CMS)、框架等信息。識別應用程序類型有助於你在應用程序中利用脆弱組件拿到許可權(例如插件和主題)。例如,如果你查看頁面源碼並且看到 wp-content,那麼你就可以確定這是一個 WordPress 站點。

許多公開可用的瀏覽器插件也可以用來識別網站框架。Firefox 瀏覽器上的 Wappalyzer 插件在識別不同的伺服器類型、伺服器和客戶端框架以及網站上的第三方插件方面是一個很不錯的工具。

wappalyzer 在 https://www.wordpress.org 上識別的示例

6. 通常情況下,如果你正在查看的站點是由第三方供應商創建的,那麼你很可能會在主頁底部看到「由第三方開發者公司提供」的字樣。

利用這個跟蹤信息你可以對服務提供商的網站也進行信息收集,這很可能得到令人難以置信的回報。瀏覽服務提供商的網站可能會發現構建客戶網站的框架類型和版本號。服務提供商也很可能會在客戶的站點上創建一個用於測試或者管理站點的帳戶,作為其為客戶端進行網站開發計劃的一部分。

根據我的經驗,許多網站管理員和開發人員經常使用公司名稱(客戶的公司或服務提供商的公司)設置一些變種密碼,以及在最後帶有或者不帶有特殊字元的數字。例如,如果服務提供商公司叫做「示例開發人員(Example Developers)」 ,那麼001Example、 Example001、00example、 example00等就有可能是你在客戶網站的登錄頁面上可以嘗試的密碼。

(請注意本文的後續內容,我們將講解如何使用這種技術來入侵併訪問客戶的伺服器並在伺服器上運行 shell 命令。)

7.瀏覽目標公司的 LinkedIn 資料,找出高級經理、董事會人員和非技術人員。很多時候,使用最脆弱的密碼的人往往屬於許多公司的非技術管理人員。通過搜索公司網站上的「關於我們」頁面也可以找到目標人物。

如果找到了目標公司的電子郵件,可以推導出用戶名的標準格式。一旦你理解了創建用戶名的格式,就可以手工創建電子郵件地址列表和與其等價的用戶名,然後可以用來執行其他攻擊,包括暴力破解登錄頁面,甚至利用弱密碼重置功能。(我們不止一次發現通過搜索電子郵件地址和可能的用戶名是非常有用的,由於目標公司的人員使用了弱密碼從而導致完整的應用程序和伺服器被入侵。)

8.執行 IP 地址的相關檢查。由於承載在同一 IP (共享主機)上的應用程序不同且有些應用程序漏洞比較多,因此應用程序經常會被入侵。使用反向 IP 查找,你可以識別出其他目標。微軟的必應搜索有一個很好的搜索IP 的功能。

必應的 IP 搜索功能可以用來尋找同一個伺服器上的其他網站

You Get Signal 和 IP Address 也提供了反向 IP 查找的功能。

你可以在 You Get Signal 網站輸入一個域名或 IP 地址進行檢索

作為檢查 IP 地址的一部分,你還必須注意目標域名的 A 記錄和 PTR 記錄。有時候由於配置不當,當使用 PTR 記錄或站點的 A 記錄時,可以訪問到不同的站點。這些信息可以通過 nslookup 或 dig 命令獲得。

dig -x 8.8.8.8

nslookup 8.8.8.8

9. 枚舉子域名可以找到容易入侵的目標網站和客戶端託管基礎設施中的脆弱入口點。子域名枚舉是評估和發現客戶在網上公開的資產的最重要的步驟之一,無論是作為他們業務的一部分,還是由於錯誤配置而被意外發現的資產。

使用 dnsrecon 暴力破解子域名

10.請求不同類型的資源,然後檢查 HTTP 狀態碼和響應頭。對於檢查有效的頁面,不存在的頁面或者是重定向的頁面,目錄名等等都很有用。注意響應標頭中的一些細微錯誤、額外空格和冗餘值。

一個非常巧妙的破壞 X-Frame-Options 標頭的例子。標頭開頭的空格使標頭變得無效

另外,注意 CSP 頭。這裡面包含了允許腳本載入的域名和源。有時候,在 CSP 頭中列出的域名中的輸入錯誤或者不安全的 JavaScript 託管 CDN 可能是你執行 XSS 有效載荷的唯一方法:)

11. 通過 Shodan 和 Censys 搜索客戶的域名,查找文件、 IP 地址、公開的服務和錯誤消息。Shodan 和 censys 的開發人員煞費苦心地對互聯網進行了埠掃描,枚舉了各種服務,並對他們的發現進行了分類,使其可以用簡單的關鍵詞進行搜索。這些服務可以用來發現大量有趣的東西,包括開放攝像頭、思科設備、醫院設施管理伺服器、配置脆弱的 telnet 和 snmp 服務以及 SCADA 系統。Censys 過去曾被用於尋找有趣的端點,這些端點託管了完整應用程序的源代碼和整個 docker 映像。

Shodan 可以用來找到有趣的文件和設備

12. 在諸如 github、 gitlab、 bitbucket 等代碼託管服務上查找客戶泄露的源代碼。可以通過在線搜索代碼託管存儲庫找到各種有趣的東西,包括網路漏洞,在網路應用程序中的0day,配置漏洞,AWS 和其他密鑰。

開發人員經常提交帶有產品密碼或 API 訪問密鑰的代碼,只是後來意識到安全問題,刪除了敏感信息並進行了額外的提交。但是,使用 git 提交日誌和檢查特定的 git 提交可以檢索這些敏感的信息片段,然後可以使用這些信息對客戶託管的基礎設施發起全面攻擊。

像 Gitrob 這樣的工具可以用來查詢 Github,並用命令行搜索特定組織的敏感文件。

13. 瀏覽站點的 HTML 源碼,以確定客戶網站是否在雲上託管了任何靜態內容。像圖片、 js 和 css 文件這樣的內容可能託管在客戶擁有的 s3 存儲桶上。如果客戶使用雲端下載靜態或動態內容,也可以在進行標準的信息搜集時識別出來。在這種情況下,如果客戶在存儲桶上配置了錯誤的許可權,那麼查找客戶使用的存儲桶確實是非常有益的。在公開訪問的存儲桶里可以找到大量有趣的信息。

像 DigiNina 編寫的存儲桶搜索器這樣的工具可以通過強行命名 存儲桶來自動化搜索的過程。這個工具需要一個精心構造的存儲桶名稱和潛在的完整 url 列表才能有效。

私有存儲桶桶不會泄露客戶的文件和資源

公共的存儲桶會泄露文件和資源的名稱。然後可以使用完整的 url 下載這些文件。

OSINT 本身就是一個不斷發展和不斷提高的研究領域。使用我上面列出的方法和其他技術,可以建立目標的配置文件並揭示一些目標組織的脆弱點,有些方法甚至不需要從系統中發送出一個數據包就可以獲取到目標的信息。

一般來說,各種各樣的數據都可以歸類為 OSINT 數據,但是從滲透測試人員的角度來看,所有這類數據都沒有什麼意義。從一個滲透測試人員的角度出發,我們或多或少應該對以下列類別的信息產生興趣:

(1)增加攻擊面的信息(域名、網路信息等)

(2)憑證信息(電子郵件地址、用戶名、密碼、 API 密鑰等)

(3)敏感信息(客戶詳細信息、財務報告等)

(4)基礎設施細節信息(技術棧,硬體設備等)

開源情報(OSINT)是從公共可用的數據源收集的數據

12個額外的開源情報搜集技術

1. SSL / TLS 證書中保存了很多有用的信息,這些信息在安全性評估期間非常重要。

一個SSL/ TLS 證書通常包含域名、子域名和電子郵件地址。這使得目標站點的證書成為了攻擊者的信息寶庫

證書透明性(Certificate Transparency,CT)是一個項目。根據該項目,證書頒發機構(Certificate Authority,CA)必須將它們頒發的每個 SSL / TLS 證書發布到公共日誌中。因此,幾乎每個主要的 CA 都會將它們頒發的每個SSL / TLS證書記錄在 CT 日誌中。這些日誌是公開的,任何人都可以查看這些日誌。於是,我們編寫了一個腳本,用來從給定域名的 CT 日誌中找到的 SSL / TLS 證書中提取子域名。你可以在下面的鏈接找到這個腳本。

這個代碼庫中包含了」子域名枚舉技術"一書中的所有補充材料。

如上圖:從 CT 日誌中列出的 SSL/TLS 證書中提取子域名。

SSLScrape 是一個工具,它以 netblock (CIDR)作為輸入,查詢 SSL/TLS 證書的每個 IP 地址,並從返回的 SSL 證書中提取主機名。這個工具可以在下面這個鏈接中找到。

從 SSL 證書中提取主機名的掃描工具。

sudo python sslScrape.py TARGET_CIDR

如上圖:從 IPv4主機返回的 SSL/TLS 證書中提取主機名。

2. WHOIS 查詢服務通常在滲透測試中用於查詢與互聯網資源的註冊用戶相關的信息,如域名或 IP 地址(塊)。用WHOIS查詢那些在互聯網上有大量業務的目標組織尤其有效。

一些公共 的WHOIS 伺服器支持高級查詢,我們可以使用這些查詢收集目標組織的廣泛信息。

下面,讓我們看看一些高級的 WHOIS 查詢來收集信息

·我們可以查詢ARIN WHOIS伺服器返回所有具有給定域名的電子郵件地址的條目,在本例中是icann.org。我們只能從這個結果中提取出電子郵件地址。

如上圖:通過查詢包含特定域名的電子郵件地址的條目從 WHOIS 信息中提取電子郵件地址。

·我們可以查詢RADB WHOIS伺服器返回所有屬於Autonomous System Number(ASN) 的網路信息。

如上圖:列舉了使用 RADB WHOIS伺服器查詢出的 ASN 的所有網路信息。

·我們可以查詢 ARIN WHOIS 伺服器返回給定關鍵字的所有 POC、 ASN、組織和最終用戶客戶

如上圖:利用WHOIS 服務查找相關的組織的信息。

3。查找Autonomous System (AS) Numbers 可以幫助我們識別屬於某個組織的網路信息,反過來,這也可能導致其他人發現在網路塊信息中的主機上運行的服務。

·使用dig 或host 命令解析給定域名的 IP 地址

dig short google.com

·有一些工具可以找到給定 IP 地址的 ASN

curl -s //ip-api.com/json/IP_ADDRESS | jq -r .as

我們可以使用 WHOIS 服務或 NSE 腳本來標識所有屬於 ASN 號碼的網路塊信息。

nmap --script targets-asn --script-args targets-asn.asn=15169

如上圖:使用 targets-asn NSE 腳本來查找屬於 ASN 的網路信息。

4.雲存儲的使用已經變得非常普遍,尤其是對象和信息塊的存儲服務,如 Amazon S3、 DigitalOcean Spaces 和 Azure Blob Storage。在過去幾年中,由於配置錯誤的 S3存儲桶,出現了一些引人擔心的數據泄露。

根據我們的經驗,我們已經看到人們在安全性較差的第三方服務上存儲各種各樣的數據,大到他們的憑證文本文件小到他們的寵物照片片。

Slurp、 AWSBucketDump 和 Spaces Finder 等工具可以搜索特定服務的公共可訪問對象存儲實例。像 Slurp 和 Bucket Stream 這樣的工具將證書透明日誌數據與基於排列的信息搜集掃描技術結合起來,以識別可公開訪問的 S3存儲桶。

如上圖:使用關鍵詞和排列掃描發現 亞馬遜 S3 存儲桶。

如上圖:利用 CT 日誌數據和排列掃描發現亞馬遜 S3 存儲桶。

5. Wayback Machine 是互聯網上關於萬維網和其他信息的海量數字檔案。Wayback Machine 還包含網站的歷史快照。有了Wayback CDX 服務 API 使得查找存檔變得非常容易。waybackurls 是一個簡潔的工具,可用於搜索與感興趣的網站相關的數據。

挖掘 Wayback Machine的 檔案對於確定給定域名的子域名、敏感目錄、敏感文件和應用程序參數非常有用。

go get github.com/tomnomnom/waybackurls waybackurls icann.org

"waybackurls"提取屬於"Way back machine archive"中列出的域名的 url示例

6. Common Crawl 是一個構建和維護 web 爬蟲數據倉庫的項目,任何人都可以訪問和分析這些數據。Common Crawl包含網站的歷史快照,以及關於網站和提供服務的元數據。我們可以使用Common Crawl API 搜索該爬蟲索引感興趣的數據網站。cc.py 是一個簡潔的小工具,可用於搜索感興趣的站點的爬蟲數據。

python cc.py -o cc_archive_results_icann.org icann.org

如上圖:在Common Crawl中通過cc.py 來抓取屬於某個域名的URLs。

7. Censys 是一個聚合大量互聯網掃描數據的平台,並提供一個通過數據集進行搜索的界面。Censys 將數據集分為三種類型: IPv4主機、網站和 SSL/ TLS 證書。我們需要知道我們要尋找的是什麼信息以及如何尋找這些信息,Censys 擁有與 Shodan 相當的有用信息。

Censys 有一個 API,我們可以用它對數據集執行查詢。我們編寫了一個連接到 Censys API 的 Python 腳本,查詢給定域名的 SSL/ TLS 證書,並提取屬於該域名的子域名和電子郵件地址。腳本可以在下面的鏈接中找到。

在 Censys 上對給定域名執行提取子域名和電子郵件的腳本。

如上圖:「Censys-enumeration」使用 Censys API 提取子域名和電子郵件地址。

如上圖:通過"Censys-enumeration"使用 Censys API 來提取子域名和電子郵件地址。

8. Censys 項目從多個來源收集 SSL/TLS 證書。使用的技術之一是探測公共 IPv4 地址空間上的所有機器的 443 埠,並聚合它們返回的SSL/TLS證書。Censys 提供了一種將收集到的SSL/TLS 證書與提供證書的 IPv4主機相關聯的方法。

通過分析 SSL/TLS 證書和提供證書的 IPv4主機之間的相關性,可以暴露出那些受 Cloudflare 等服務商保護的域名的原始伺服器。

Cloudflair 是一個使用 Censys 公開域的起源伺服器的工具。這個工具可以在下面鏈接找到。

使用 Censys 的全網掃描數據,通過 CloudFlare 查找網站背後的原始伺服器。

如上圖:用「Cloud Flair」發現medium.com的IP地址對應的原始伺服器。

9. 在安全評估期間,源代碼倉庫也是一個信息寶庫。源代碼可以揭示許多信息,從證書、潛在的漏洞到基礎設施的細節等等。GitHub 是一個非常流行的版本控制和協作平台。Gitlab 和 Bitbucket 也是很受歡迎的服務,你可以在那裡找到目標組織的源代碼。

像 GitHubCloner 這樣的工具使用起來非常方便,可以自動克隆 Github 帳戶下的所有代碼倉庫。

$ python githubcloner.py --org organization -o /tmp/output

GithubCloner——克隆指定用戶和組織的 Github 代碼倉庫的腳本。

有各種各樣的工具,可以自動化的發現代碼倉庫中的秘密,如 Gitrob,truffleHog,git-all-secrets 等。

10. 前向 DNS 數據集作為 Rapid7 公開數據項目的一部分發布。這些數據是對 DNS 請求的響應,用於 Rapid7的 Project Sonar 已知的所有轉發的 DNS 名稱。數據格式是 gzip 壓縮的 JSON 文件。我們可以解析數據集來查找給定域名的子域名。數據集非常大(20 多GB 的壓縮包,解壓後約 300 多 GB)。最近,數據集已經根據數據包含的 DNS 記錄類型被分解成多個文件。

如上圖:從 FDNS 數據集中提取域名和子域名。

11. 內容安全策略(CSP)定義了 Content-Security-Policy HTTP 頭,它允許我們創建可信內容源的白名單,並指示瀏覽器只執行或呈現來自這些源的資源。

Content-Security-Policy 標頭將列出一組攻擊者可能感興趣的源(域名)。我們編寫了一個簡單的腳本來解析 CSP 頭中列出的域名。腳本可以在下面鏈接里找到。

從 Content Security Policy (CSP) HTTP 報頭中提取域名的腳本。

12. 發件人策略框架記錄(Sender Policy Framework)簡稱SPF,用來指示接收郵件交換的主機被授權對給定的域名發送郵件。

簡單地說,SPF 記錄可以列出所有被授權為某個域名發送電子郵件的主機。有時候 SPF 記錄會泄露內部的網路信息和域名。

像 Security Trails 這樣的服務可以提供 DNS 記錄的歷史快照。我們可以看看歷史的 SPF 記錄,來發現列在 SPF 記錄中的域名的內部網路信息和子域名。

如上圖:通過 Security Trails顯示icann.org域名的歷史 SPF 記錄。

我們編寫了一個快速腳本,從給定域名的 SPF 記錄中提取網路信息和域名。當腳本使用 -a 選項運行時,它還可以返回每個資產的 ASN 詳細信息。腳本可以在下面鏈接內找到。

一個從 SPF 記錄中解析網路信息和域名的 Python 腳本。

python assets_from_spf.py icann.org -a | jq .

總結

在本文中,我們講解了在日常安全評估中使用到的各種 OSINT 技術。儘管這篇文章內容很廣泛,但它並不是最全的。OSINT技術是不斷變化的,沒有放之四海皆準的標準。我們儘力闡述在滲透測試階段中可以提高覆蓋率的OSINT技術。

參考資料

·https://blog.appsecco.com/open-source-intelligence-gathering-101-d2861d4429e3

·https://blog.appsecco.com/certificate-transparency-part-3-the-dark-side-9d401809b025

·https://blog.appsecco.com/a-penetration-testers-guide-to-sub-domain-enumeration-7d842d5570f6

·https://www.certificate-transparency.org

·https://www.arin.net/resources/services/whois_guide.html

·https://index.commoncrawl.org/

·https://www.upguard.com/breaches/cloud-leak-accenture

·https://www.0xpatrik.com/censys-guide/

·https://www.0xpatrik.com/osint-domains/

·https://opendata.rapid7.com/sonar.fdns_v2/

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

CVE-2019-13354:Ruby strong
iPhone藍牙流量泄露手機號碼等重要信息

TAG:嘶吼RoarTalk |