0x01 前言
在平常的安全測試過程中宴霸,我們都會攔截應用程序的HTTPS流量笆搓。通過向Android添加自定義CA,可以直接完成此操作玄柏。但是襟衰,從Android 7.0以上開始,應用程序不再信任客戶端證書粪摘,除非App應用程序自身明確啟用此功能瀑晒。
在下面這篇文章中绍坝,介紹一個新的 Magisk模塊,通過Magisk模塊自動將客戶端證書添加到系統(tǒng)范圍的信任存儲區(qū)苔悦,這樣就可以完成對App應用程序的Https抓包了轩褐。
0x02 常規(guī)的HTTPS攔截方式
攔截Android上的HTTPS,只需以下幾步:
下面這些步驟做完后玖详,就可以查看瀏覽器與服務器之間發(fā)送的HTTPS流量了把介。
- 將Burp設置為您的代理
- 手機訪問http:// burp
- 將Burp證書安裝為用戶證書
- 開始抓包
這種方法同樣適用于應用程序的Https流量,因為在默認情況下應用程序會信任所有已安裝的用戶證書蟋座。
補充說明
廠商阻止Https抓包的方式:
阻止應用程序流量被截獲的一種方法就是為應用程序本身安裝專有證書拗踢。這就意味著在每個SSL連接上,服務器提供的證書將與本地存儲的證書進行比較蜈七。只有服務器可以提供正確的標識秒拔,SSL連接才會成功。這是一個很好的安全功能飒硅,但實現(xiàn)起來是比較麻煩的砂缩,
0x03 Android7.0+的抓包方式
我們知道從Android7.0開始,默認情況下三娩,應用程序已經(jīng)不再信任用戶證書庵芭。
在開發(fā)階段,開發(fā)人員可以通過更改應用程序中的AndroidManifest.xml文件雀监,來配置networkSecurityConfig屬性双吆,選擇接受用戶證書,即可完成對應用程序的Https抓包分析測試会前。
還有一種方法是反編譯App好乐,修改和重新編譯應用程序,如果該App應用程序有加殼瓦宜,加密蔚万,等配置,那反編譯的過程將非常困難临庇》戳В可以在warroom.securestate.com上找到App的反編譯教程。
還有另一種方法是將用戶證書添加到系統(tǒng)存儲中假夺。存儲目錄位于:/system/etc/security/cacerts淮蜈,包含每個已安裝根證書的文件。但這是需要對/system/etc/security/cacerts目錄有讀已卷、寫的權限梧田,正常的手機沒有Root,是不具備此項功能的。如果把手機Root柿扣,并且這是一項非常危險的操作肖方。
0x04 使用Magisk 系統(tǒng)接口
Magisk是一個“通用無系統(tǒng)接口“闺魏,可以在不改變系統(tǒng)本身的情況下創(chuàng)建系統(tǒng)的修改掩碼未状。”Magisk不修改/ system分區(qū)目錄析桥,所以這是一個非常好的抓包解決方式司草,其中應用程序已經(jīng)增強了root檢測。通過目標應用程序來激活“Magisk Hide”泡仗,使Magisk變得完全不可見埋虹。
Magisk還支持相當容易創(chuàng)建的自定義模塊。為了將任何用戶證書識別為系統(tǒng)證書娩怎,我們制作了一個簡單的Magisk模塊搔课,可以在我們的github上找到:https://github.com/NVISO-BE/MagiskTrustUserCerts
該模塊的功能如下,非辰匾啵基礎:
- 查找已安裝的用戶證書
- 將它們添加到 / system / etc / security / cacerts目錄
安裝完后爬泥,Magisk模塊的內容安裝在/magisk/trustusercerts/上。此文件夾包含多個文件崩瓤,但最重要的是系統(tǒng)目錄袍啡。此目錄自動與real/ system目錄合并,實際上不會觸及到/system分區(qū)目錄却桶。因此境输,/magisk/trusteusercerts/etc/security/中的所有證書都將以/system/etc/ security結尾。
該模塊使用如下:
- 安裝模塊
- 通過正常流程安裝證書
- 重啟您的設備
安裝后颖系,證書將顯示在系統(tǒng)范圍的信任存儲中嗅剖,并受應用程序信任:
當然,如果應用程序自身已做了專用SSL連接嘁扼,仍然無法攔截HTTPS流量信粮,但這個小模塊使Android7.0+應用程序的運行方式與Android之前的7.0以下應用程序相同。