記一次 DNS 劫持攻擊

一直在使用某娛樂軟件,可是這個軟件的會員費貴的離譜,實在是買不起。因此就想着怎麼搞一下,繞過會員檢測機制。其實就是針對這款軟件作一個註冊機nginx

前期準備

根據抓包還有查看源碼,初步肯定了軟件的鑑權機制,詳細過程不談,只說結論:鑑權部分由單獨的服務器負責,經過 HTTPS 進行設備註冊密鑰鑑權等操做。瀏覽器

經過代碼逆向已經確認鑑權的具體協議安全

制定方案

瞭解軟件的鑑權機制後,就能夠制定方案了。兩個方案:服務器

  1. 中間人攻擊,創建中間人服務器,篡改鑑權會話
  2. DNS 劫持,僞造鑑權網站,無腦返回鑑權成功。

因爲該軟件的鑑權部分爲單獨服務器,因此採用方案二會簡單不少。markdown

開始實施

僞造服務

隨便寫一個 Web 服務,實現全部的鑑權接口,並沒有腦返回成功。網絡

而後在該機器上運行 nginx,配置監聽鑑權服務器域名並轉發給冒牌 Web 服務。工具

劫持 DNS

直接在路由器上使用 DNS 工具修改,或者直接更改 hosts 文件,將鑑權服務器域名指向冒牌服務的 ip。網站

僞造域名證書

事情到這裏僅僅走過一半,剩下的纔是重要的部分。spa

雖然咱們已經擁有了冒牌鑑權服務,也能夠將請求劫持到冒牌服務上,可是由於咱們沒有證書,不知道交接的暗號是什麼,因此交易仍是沒法達成。而經過正常途徑咱們是沒有可能弄到別人域名的 HTTPS 證書的。因此咱們須要懂點歪腦筋code

首先咱們生成本身的根證書,而後用該根證書籤發須要僞造的域名證書。將咱們的根證書安裝信任到須要破解的設備上,再將僞造的域名證書配置到服務器上,這樣一整個認證體系都是由咱們發起的,天然能夠通行無阻。

這樣,整個劫持計劃就大功告成了。

反思

這麼輕鬆就繞過了鑑權機制,說實話仍是有點後背發涼。

雖然目前 Web 愈來愈安全,鑑權愈來愈複雜,可是隻要稍微不注意,仍是會落入陷阱。再加上一些開發者的不負責任,致使互聯網更加危險。

關於開發者

首先開發者應該重視證書。以這款軟件爲例,我嘗試了下配置錯誤的證書,軟件界面也只是提示了下證書錯誤,用戶確認後就會忽視證書,直接被劫持,HTTPS 就是個擺設。

更有甚者,有的 App 直接忽略了證書錯誤,壓根就不提示。這不管是對用戶仍是對本身都是不負責任的。

在網上看到說,以安全著稱的 360 安全瀏覽器,做爲一款瀏覽器都忽視了 HTTPS 證書錯誤,實在是不知道腦子怎麼長的。

圖源自網絡

關於用戶

做爲用戶,爲了在信息時代保護本身,應該注意如下幾點:

  1. 不鏈接不清楚底細的網絡
  2. Wi-Fi 要設置密碼
  3. 不要安裝不清楚的證書
  4. 不要使用不在乎安全的應用
  5. 不要隨便給應用管理員權限
相關文章
相關標籤/搜索