十二種OSINT資訊收集技巧分享
前言
公開資源情報計劃(Open source intelligence ),簡稱OSINT,是美國中央情報局(CIA)的一種情報蒐集手段,從各種公開的資訊資源中尋找和獲取有價值的情報。
有各種各樣的資料可以被歸類為OSINT資料,但從滲透測試者的角度來看所有這些資料都不重要。作為滲透測試人員,我們更感興趣的是那些可以為我們實際所利用的資料資訊。例如:
可增加攻擊面的資訊(域,網塊等);
憑據(電子郵件地址,使用者名稱,密碼,API金鑰等);
敏感資訊(客戶詳細資訊,財務報告等);
基礎架構詳情(技術棧,使用的硬體裝置等);
12種OSINT資訊收集技巧 1. SSL/TLS證書通常都會包含域名,子域名和電子郵件地址。這使得它成為了攻擊者眼中的一座寶庫。
證書透明度Certificate Transparency是谷歌力推的一項擬在確保證書系統安全的透明審查技術,只有支援CT技術簽發的EV SSL證書,谷歌瀏覽器才會顯示綠色單位名稱,否則chrome瀏覽器不顯示綠色單位名稱。
新的簽發流程規定:證書必須記錄到可公開驗證、不可篡改且只能附加內容的日誌中,使用者的網路瀏覽器才會將其視為有效。通過要求將證書記錄到這些公開的 CT 日誌中,任何感興趣的相關方都可以檢視由授權中心簽發的所有證書。這意味著任何人都可以公開獲取和檢視這些日誌。為此,我專門編寫了一個用於從給定域CT日誌中找到的SSL/TLS證書中提取子域的指令碼。
另外,再推薦大家一款工具SSLScrape。這是一款將網路塊(CIDR)作為輸入,來查詢各個IP地址獲取SSL/TLS證書,並從返回的SSL證書中提取主機名的工具。
sudo python sslScrape.py TARGET_CIDR
2. WHOIS服務在滲透測試期間,通常用於查詢註冊使用者的相關資訊,例如域名或IP地址(塊)。WHOIS列舉對於在網際網路上擁有大量資源的組織尤為有效。
一些公共WHOIS伺服器支援高階查詢,我們可以利用這些查詢來收集目標組織的各種資訊。
下面我以icann.org為例,通過查詢ARIN WHOIS server獲取目標域所有包含email地址的條目,並從中提取email地址。
whois -h whois.arin.net "e @ icann.org" | grep -E -o "\b[a-zA-Z0-9.-]+@[a-zA-Z0–9.-]+\.[a-zA-Z0–9.-]+\b" | uniq
通過查詢RADB WHOIS server獲取屬於自治系統號(ASN)的所有網路塊。
whois -h whois.radb.net -- '-i origin AS111111' | grep -Eo "([0-9.]+){4}/[0-9]+" | uniq
通過查詢ARIN WHOIS server獲取給定關鍵字的所有POC,ASN,組織和終端使用者。
whois -h whois.arin.net "z wikimedia"
3. 自治系統(AS)號可以幫我們識別屬於組織的網路塊,以及發現網路塊中主機上執行的服務。
使用dig或host解析給定域的IP地址:
dig +short google.com
獲取給定IP的ASN:
curl -s https://ip-api.com/json/IP_ADDRESS | jq -r .as
我們可以使用WHOIS服務或NSE指令碼,來識別屬於ASN號碼的所有網路塊:
nmap -- targets-asn ---args targets-asn.asn=15169
4. 如今使用雲端儲存的企業越來越多,尤其是物件/塊儲存服務,如Amazon S3,DigitalOcean Spaces和Azure Blob Storage。但在過去的幾年裡,由於S3 buckets錯誤配置導致的資料洩露事件頻出。
根據我們的經驗,我們看到人們將各種資料儲存在安全性較差的第三方服務上,從純文字中的憑據到他們私人的寵物照片。
這裡有一些工具例如Slurp、AWSBucketDump和Spaces Finder,可用於搜尋可公開訪問的物件儲存例項。Slurp和Bucket Stream等工具將證書透明度日誌資料與基於置換的發現相結合,以識別可公開訪問的S3 buckets。
5. Wayback Machine是一個國外的網站,它是網際網路的一個備份工具,被稱為網際網路時光機,自從1996年以來Wayback Machine已經累計備份了超過4350億個網頁。
你只要在它的網站上輸入一個網站地址,就能看到這個網站在過去的不同時期分別長什麼樣。通過Wayback CDX Server API我們可以輕鬆的搜尋存檔。waybackurls是一個用於搜尋目標站點相關資料的工具。
挖掘Wayback Machine存檔對我們識別給定域的子域,敏感目錄,敏感檔案和應用中的引數非常有用。
go get github.com/tomnomnom/waybackurls waybackurls icann.org
6. Common Crawl網站為我們提供了包含超過50億份的網頁資料,並且任何人都可以免費訪問和分析這些資料。
我們可以通過Common Crawl API在索引的抓取資料中搜索我們感興趣的站點。這裡有一個小指令碼(cc.py)可以幫你完成搜尋任務。
python cc.py -o cc_archive_results_icann.org icann.org
7. Censys是一款用以搜尋聯網裝置資訊的新型搜尋引擎,安全專家可以使用它來評估他們實現方案的安全性,而黑客則可以使用它作為前期偵查攻擊目標、收集目標資訊的強大利器。
Censys將資料集分為三種類型 – IPv4主機,網站和SSL/TLS證書。如果你能熟練的掌握Censys的搜尋技巧,那麼它將發揮與Shodan不相上下的強大作用。
Censys為我們提供了一個API,我們可以用它來查詢資料集。這裡我編寫了一個連線呼叫Censys API的Python指令碼,用於查詢給定域的SSL/TLS證書,並提取屬於該域的子域和電子郵件地址,點此獲取。
8. Censys會從多個數據源來收集SSL/TLS證書。
使用的技術之一是探測443埠上的公共IPv4地址空間上的所有計算機,並聚合它們返回的SSL/TLS證書。Censys提供了一種關聯提供證書的IPv4主機獲取的SSL/TLS證書的方法。
通過關聯SSL/TLS證書和提供證書的IPv4主機,可以找到受Cloudflare等服務保護的域的源伺服器。
9. 原始碼對於安全評估來說是一座資訊寶庫。
通過原始碼我們可以獲取到大量資訊,例如憑據,潛在漏洞,基礎架構等資訊。GitHub是一個非常受歡迎的版本控制和協作平臺,在上面存有大量組織的原始碼。另外,Gitlab和Bitbucket同樣也非常的受歡迎。總之,不要錯過任何可能的地方。
GitHubCloner可以自動化的為我們克隆Github帳戶下所有的儲存庫。
$ python githubcloner.py --org organization -o /tmp/output
除了GitHubCloner之外,你還可以嘗試使用Gitrob,truffleHog,git-all-secrets等工具。
10. Forward DNS dataset是作為Rapid7 Open Data專案的一部分發布的。
資料格式為gzip壓縮的JSON檔案。雖然資料集很大(20+GB壓縮,300+GB未壓縮),但我們仍可以解析資料集並查詢給定域的子域。最近,資料集已根據資料包含的DNS記錄型別被分為了多個檔案。
11. 內容安全策略(CSP)定義Content-Security-Policy HTTP頭,允許我們建立可信內容源的白名單,並指示瀏覽器僅從這些可信源執行或呈現資源。
Content-Security-Policy頭將為我們列出作為攻擊者可能感興趣的一堆源(域)。這裡我編寫了一個用來解析CSP頭中列出域名的簡單指令碼,點此獲取該指令碼。
12. SPF是為了防垃圾郵件的一種DNS記錄型別,是一種TXT型別的記錄。
SPF記錄的本質就是向收件人宣告本域名的郵件從清單上所列IP發出的都是合法郵件,並非冒充的垃圾郵件,可以防止別人偽造你來發郵件,是一個反偽造性郵件的解決方案。
簡而言之,SPF記錄為我們列出了所有授權傳送電子郵件的主機。有時,SPF記錄還會洩漏內部網路塊和域名。
一些服務如Security Trails可以為我們提供DNS記錄的歷史快照。我們可以通過檢視歷史SPF記錄,發現SPF記錄中列出的給定域的內部網路塊和域名。
這裡有一個我們編寫的指令碼,可以幫助你從給定域的SPF記錄中提取網路塊和域名。當使用-a選項執行時,該指令碼還可以為我們返回ASN詳細資訊,點此獲取該指令碼。
python assets_from_spf.py icann.org -a | jq .
總結
在本文中,我為大家介紹了我們在日常安全評估中經常用到的一些資訊收集的方法。雖然涵蓋面很廣,但仍有許多需要補充的地方。因此,如果你有更好的技巧方法,歡迎你在評論中與我分享!
參考文獻:
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/