在移動應用開發過程中,我們會使用Charles和Fiddler進行抓包。通常要抓取HTTPS加密的數據包,一般使用Charles或者Fiddler4代理HTTP請求,配置證書信任後,便可拿到明文報文。但是由於Charles證書和Fiddler證書並非證書機構頒發的目標站點的合法證書,所以會不被信任。要解決這個問題,我們需要使用到Xposed+JustTrustMe工具來關閉SSL驗證。
一、 Charles使用
1.1 配置Charles
打開Charles,然後點擊【Proxy】 -->取消勾選 【windows proxy 】,如下圖。
1.2 代理https並添加證書
點擊【Proxy】-->【SSL Proxy Settings】彈出SSL代理設置界面 。
然後,選中【Client Certificates】添加域名的證書,如下圖。
然後,選擇 【Help】--> 【ssl proxy 】->【 Install Charles Root Certificate】,
安裝完成之後,再選擇【Install Charles Root Certificate on a Moblie Device or Remote Browser】,如下圖所示。
接下來,打開手機中的wifi設置,將電腦和手機連接在同一個wifi環境下,在手機端中修改當前wifi設置,將代理選擇手動,服務器主機名填入域名,服務器端口輸入8888即可。然後,打開瀏覽器輸入【chls.pro/ssl】回車會進入charles證書下載,加載之後是一個.pem文件,需要重命名更成成.crt後綴,這是手機端的證書安裝包,直接打開安裝即可.
正常來説,步驟到這就算完成了。但是如果手機是安卓7以後的版本,就會失敗 一直是“unknow”,這是因為應用程序不再信任用户或管理員添加的CA用於安全連接。對於這種問題,我們需要在Android應用程序中添加ssl信任配置。
打開Android應用的Mainfest.xml文件,添加如下內容。
<application
...
android:networkSecurityConfig="@xml/network_security_config" >
然後,新建network_security_config.xml文件,添加如下腳本。
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
<domain-config>
<domain includeSubdomains="true">api.xj.mydeertrip.com</domain>//需要抓包的域名
<trust-anchors>
<certificates src="@raw/charles"/>//手機中下載的.pem格式證書文件 名稱
</trust-anchors>
</domain-config>
</network-security-config>
其中,charles是.pem文件名,就是手機中下載的.pem證書文件放入工程的res/raw文件夾中即可。
如何配置Https,可以參考Charles 如何抓取https數據包
二、 Burp Suite
2.1 安裝Burp Suite
2.1.1 下載Burp Suite
如果還沒有下載Burp Suite,可以使用下面的地址下載Burp Suite下載鏈接。然後,我們下載macOS Burpsuite註冊機,解壓註冊機和漢化包,在終端中打開 BP 程序內置的 JAVA 文件路徑。
cd /Applications/Burp\ Suite\ Professional.app/Contents/java/app && open .
然後,將我們下載的macOS Burpsuite.zip的解壓內容拷貝進去,如下圖所示。
2.1.2 自定義啓動參數
然後,我們使用如下的命令打開vmoptions.txt文件自定義啓動參數。
open /Applications/Burp\ Suite\ Professional.app/Contents/vmoptions.txt
默認情況下的啓動配置如下。
-noverify
-javaagent:BurpSuiteLoader.jar
-XX:MaxRAMPercentage=50
-include-options user.vmoptions
然後我們,修改為如下的形式。
-noverify
-javaagent:BurpSuiteLoader.jar
-javaagent:BurpSuiteCn.jar
-Dfile.encoding=utf-8
-XX:MaxRAMPercentage=50
-include-options user.vmoptions
選擇自己想要的啓動方式保存並退出,如下所示。
2.1.3 激活 Burpsuite
如果之前你沒有激活過 Burpsuite 的話,那麼第一次可能需要提示輸入許可證秘鑰,運行如下命令打開註冊機。
chmod +x /Applications/Burp\ Suite\ Professional.app/Contents/java/app/license_key.sh && sh /Applications/Burp\ Suite\ Professional.app/Contents/java/app/license_key.sh
首先將註冊機的【License】複製粘貼到 BP 的許可證秘鑰框中,然後點擊【下一步】,如下圖所示。
接着點擊【手動激活】,如下圖所示。
點擊註冊機裏面的【輔助請求】按鈕,將信息粘貼到註冊機中的 【Activation Request】中,此時註冊機會在【Activation Response】生成返回信息,然後將這個返回信息粘貼到 BP 中,點擊【粘貼響應】按鈕即可,最後點擊【下一個】即可。
啓動成功後,頁面大概是下面這樣子的。
參考文檔鏈接:Burpsuite安裝與激活
Xposed+JustTrustMe使用
首先,下載Xposed+JustTrustMe和安卓模擬器(如夜神、網易木木Android模擬器)。然後我們在Android模擬器上安裝剛才下載的Xposed和JustTrustMe。
為了防止在真機上手機變磚的問題,我們在模擬器上進行實驗。安裝Xposed,初始化界面會有一些警告。
安裝的時候請確保模擬器已經Root。
重啓後打開Xposed發現激活成功,如下圖所示。
點擊桌面的左上角,然後點擊模塊,勾選JustTrustME重啓手機開啓JustTrustME。
最後,在客户端安裝HTTPS安全證書即可。
參考:
Fiddler+夜神模擬器+xposed+justTrustMe手機抓包