白帽Hacker 黑暗兵法 (第一部)— 如何尋找躲藏在Cloudflare背後的真實服務IP
會寫這系列的文章, 主要是希望糾正一些錯誤的觀念, 以及提供規劃資安時的正確思維 — Bearspace Technology. CTO Sk Huang.
說到Cloudflare的服務, 基本上就是透過修改name server的方式, 將網路流量導入Cloudflare 的 CDN網絡內, 進而對封包做調適, 並附加上一些功能, 這可以讓使用CF 的用戶避免被駭客發現到服務的原始IP, 再加上CF有free 方案, 所以受到廣大的用戶的喜愛, 連免費方案都有基本的DDoS防護, 還有什麼好挑剔的?
在台灣最想挑剔的點就是免費方案沒有台灣POP site,大多數的流量都會繞行到其他國家,只有購買最高等級的Enterprise Plan才有,這點就是CF 與 中華之間的恩怨史有關了https://blog.mowd.tw/p/2464
但這種透過 CDN 架構的Anti-DDoS 方式, 最大的弱點就在於原始服務主機上的ip不能被曝露, 一旦暴露了, 那 CDN 上的 Anti-DDoS 就會變得一點用處都沒有.
但是以技術來說,架構其實是長這樣
1、服務主機其實還是在網際網路上, 只要是在網際網路上就一定會有IP.
2、Cloduflare 之所以用name server 的方式導入CDN, 就是要讓DNS 解析request 的IP, 將流量引導到Cloudflare CDN 網絡。
所以一旦原始服務的IP被曝露,事實上駭客可以繞過Cloudflare 的防護,直接針對服務器進行攻擊。
但要怎樣知道, 原始IP 是什麼?
其實方法很多, 這邊提供與架構, 移轉順序有關的方式, 在做規劃時可以避免這方面的麻煩
工具 : 深度搜索引擎 Censys (https://censys.io/)
黑暗兵法1 : SSL
這邊先假設要查的網址 : abc123.com , 他的真實IP是 123.123.123.123
當正常流量的訪問, 會反饋的會是Cloudflare 的SSL, 但是原始IP 上的SSL仍然會曝光在Internet 上 (ex. https://123.123.123.123:443)
Phase1. 這時只要在Censys 搜索( https://censys.io/certificates)上, 進行布爾組合的搜索 “parsed.names: abc123.com and tags.raw: trusted”
Phase2. 搜索完成後, 依序點擊右方的工具
“What’s using this certificate?” > “IPv4 Hosts”
這時就有可能讓原始IP 現形。
黑暗兵法2 : DNS 歷史紀錄
這方法就簡單多了, 網路上有這種專門儲存DNS 歷史紀錄的工具,
使用方式 : 直接輸入FQDN 再按搜索就有可能查出。
黑暗兵法3 : API 內容
現在網站要串的API非常多, Coder 要是沒安全概念的話, 安全漏洞會百出, 這邊提供一個最常串的API — Google Analytics Tracking
Phase1. 開啟網站後查看 Source Code, 找出GA JS Code 的 UA 碼, 這邊舉例為ga('create', 'UA-11583226-1', 'auto');
到 Shodan 網站,透過查詢組合字串
https://www.shodan.io/search?query=http.html%3AUA-11583226-1
如果開發者沒把安全性做好, 原始服務IP 就會被查出來.
黑暗兵法4 : 網址紀錄
這個也是直接透過Censys 對網址做查詢, 就可以查出, 可怕的是有時候一些相關的資訊也會被搜索出來. https://censys.io/domain
後記
其實上述的方式, 都有辦法可以防堵資訊的洩漏, 但這也是為什麼我偏愛使用BGP DDoS 清洗的原因, 從根著手的解決方案才是根絕之道, 只做到半套的資安, 留下一個罩門在實在很難令人安心。