上一次和大家介紹了手機端https抓包的初級篇,即在手機未root或者未越獄的情況下如何抓取https流量,但是當時分析應用時會發現,好多應用的https的流量還是無法抓取到,這是為什么呢?
主要原因還是客戶端在實現https請求時對於證書的校驗上,如果僅僅校驗是否有證書但是未嚴格校驗證書的有效性時,就可以通過手機客戶端安裝抓包工具的證書來繞過簽名校驗,但是如果客戶端做了嚴格的證書校驗,如果不是受信任證書則無法正常進行https通信,遇到這種情況我們該如何抓取https流量來進行業務分析呢?
接下來就進入我們的第二篇章-進階篇,深層次抓包(淺層次抓包 -> 移動端https抓包那些事--初級篇)。
這一次就會對我們的設備有所要求了,安卓設備要求設備root,iOS設備要求越獄。后續我們依然會分兩個平台來依次介紹如何進行操作。
Android平台
在Android平台上的操作主要是通過hook的方式,將應用及系統中驗證https證書的邏輯全部hook為驗證結果正確,這樣無論安裝的證書是否有效,皆可進行正常的https通信。
這里就需要對手機安裝hook框架,這里用到的hook框架為Xposed,官方下載地址:
http://repo.xposed.info/module/de.robv.android.xposed.installer ,這里需要注意的是,在Android4.0-4.4是可以直接通過安裝apk的方式開刷入Xposed框架,而在Android 5.0以上則需要刷入Xposted的固件包,具體的操作這里就不再贅述了,網上有很多教程已經講的很詳細了。
想要進行https抓包的話需要安裝Xposed的一個開源模塊--JustTrustMe,github鏈接地址為:https://github.com/Fuzion24/JustTrustMe ,下載最新版本的安裝包,安裝進手機,在Xposted中激活並重啟手機,這時就可以隨意抓取手機中的流量了。
iOS平台
iOS上就需要將手機進行越獄了,可以使用目前市面上比較流行的盤古越獄工具,但是目前只支持iOS10之前的版本,所以做移動安全研究或者滲透測試的,准備一台老版本的測試機還是很有必要的,說不定什么時候哪款工具就在最新系統上用不了了。
言歸正傳,在iOS上用到的這款工具叫做SSL Kill Switch 2,該工具使用了Cydia Substrate的鈎子技術,這個鈎子Hook了IOS的驗證證書函數,使得他們接受任何證書。
SSL Kill Switch 2同樣也是一款在Github上開源的軟件:https://github.com/nabla-c0d3/ssl-kill-switch2 ,這里給大家簡單介紹下如何安裝這個工具。
首先在越獄后的Cydia工具中查看以下幾項軟件是否都安裝完成:
Debian Packager
Cydia Substrate
PreferenceLoader
如圖中所示:
如果都安裝完成,那么從Github上下載最新的release包:https://github.com/nabla-c0d3/ssl-kill-switch2/releases ,如現在最新版的為v0.11 安裝包為 com.nablac0d3.SSLKillSwitch2_0.11.deb ,將該文件拷貝到iOS設備中,拷貝文件可用iTools、iFunBox等工具。
如圖所示:
用ssh鏈接iOS設備,找到deb文件傳輸目錄(/User/Media):
執行如下命令進行安裝:
dpkg -i com.nablac0d3.SSLKillSwitch2_0.11.deb killall -HUP SpringBoard
回到Cydia中,查看安裝的軟件,已經在列表中了。
接下來需要在系統設置中打開SSL Kill Switch 2
進入系統設置,找到SSL Kill Switch 2項,點開項目點擊右側按鈕,開啟 Disable Certificate Validation,如圖所示:
這時候就可以抓取https的流量了。
測試
證書安裝完成之后,用手機訪問一個https的網站,這時就發現https的數據包可以抓取到了。