一直在使用某娛樂軟件,可是這個軟件的會員費貴的離譜,實在是買不起。因此就想着怎麼搞一下,繞過會員檢測機制。其實就是針對這款軟件作一個註冊機。nginx
根據抓包還有查看源碼,初步肯定了軟件的鑑權機制,詳細過程不談,只說結論:鑑權部分由單獨的服務器負責,經過 HTTPS 進行設備註冊,密鑰鑑權等操做。瀏覽器
經過代碼逆向已經確認鑑權的具體協議。安全
瞭解軟件的鑑權機制後,就能夠制定方案了。兩個方案:服務器
因爲該軟件的鑑權部分爲單獨服務器,因此採用方案二會簡單不少。markdown
隨便寫一個 Web 服務,實現全部的鑑權接口,並沒有腦返回成功。網絡
而後在該機器上運行 nginx,配置監聽鑑權服務器域名並轉發給冒牌 Web 服務。工具
直接在路由器上使用 DNS 工具修改,或者直接更改 hosts 文件,將鑑權服務器域名指向冒牌服務的 ip。網站
事情到這裏僅僅走過一半,剩下的纔是重要的部分。spa
雖然咱們已經擁有了冒牌鑑權服務,也能夠將請求劫持到冒牌服務上,可是由於咱們沒有證書,不知道交接的暗號是什麼,因此交易仍是沒法達成。而經過正常途徑咱們是沒有可能弄到別人域名的 HTTPS 證書的。因此咱們須要懂點歪腦筋。code
首先咱們生成本身的根證書,而後用該根證書籤發須要僞造的域名證書。將咱們的根證書安裝信任到須要破解的設備上,再將僞造的域名證書配置到服務器上,這樣一整個認證體系都是由咱們發起的,天然能夠通行無阻。
這樣,整個劫持計劃就大功告成了。
這麼輕鬆就繞過了鑑權機制,說實話仍是有點後背發涼。
雖然目前 Web 愈來愈安全,鑑權愈來愈複雜,可是隻要稍微不注意,仍是會落入陷阱。再加上一些開發者的不負責任,致使互聯網更加危險。
首先開發者應該重視證書。以這款軟件爲例,我嘗試了下配置錯誤的證書,軟件界面也只是提示了下證書錯誤,用戶確認後就會忽視證書,直接被劫持,HTTPS 就是個擺設。
更有甚者,有的 App 直接忽略了證書錯誤,壓根就不提示。這不管是對用戶仍是對本身都是不負責任的。
在網上看到說,以安全著稱的 360 安全瀏覽器,做爲一款瀏覽器都忽視了 HTTPS 證書錯誤,實在是不知道腦子怎麼長的。
做爲用戶,爲了在信息時代保護本身,應該注意如下幾點: