前言
最近想學習App測試之道,但我常用的是臺式機(沒有配無線網卡),所以“放在一個wifi局域網下開代理”這種最簡單方便的方法無法使用。於是我想到了用安卓模擬器的方式來測試,經過一番翻貼後我選擇了雷電模擬器,但在實際安裝burpsuite證書時碰到點麻煩。
前車之鑑一
我在看雪上找到一篇看着很管用的帖子,戳→https://bbs.pediy.com/thread-252184.htm。裏面介紹了利用frida的方法,這篇帖子寫的較簡潔,我自己在實踐時踩了不少坑。主要記錄以下兩點:
- frida工具在啓動時報錯,即:
frida-ps -U
報各種錯誤
原因:python版本和frida不匹配,如果使用pip安裝的frida和frida-tools,它會默認安裝較新的版本,此時如果python版本太舊,就會出問題。我之前的環境是py3.6.5,frida是12.7.24,後來改成py3.7.5就過了。
- AndroidKiller不會用o(╯□╰)o
大致介紹下用法:
- 啓動雷電模擬器實例,並用androidkiller自帶的adb.exe連接
adb.exe connect 127.0.0.1:5357
- 我這個版本的雷電模擬器監聽的5357端口,和一些帖子裏寫的都不一樣,其實用
netstat
挨個試試也能找到- 建立連接後,可以在“Android”工具欄看到你要的各種功能:
如果你想測試帖子中的方法,我這裏也算幫忙排雷了。
我自己在完成以上步驟後,進入模擬器設置->安全->從SD卡安裝
目錄裏後發現下載好的burpsuite證書依據無法安裝,心累~~
前車之鑑二
本着一顆瞎折騰的心,我又百度了一些別的方法。在v2ex上看到了這樣一篇,戳→https://www.v2ex.com/t/528852,裏面介紹了三種方法。一開始我試了xposed大法,因爲這軟件早有耳聞哈,然後一不小心又踩到了坑。在裝完justtrustme模塊後,我發現xposed總是無法啓動。後來意識到可能和安卓版本有關,於是我在網上找到了這張圖:
對照着圖,我卸載了之前的xposed 89,重新安裝了87版。這回正常了,懷着激動的心情,我打開了app打算瞎測一番,坑爹的事情發生了——鍵盤無法輸入,軟鍵盤也不好使。我回過頭想加一下burp的證書,發現依舊無法添加。WTF???怎麼跟說好的不一樣!
後車之師
再次受挫後,我又嘗試起了帖子中的第二種方法——直接將burp證書導入系統的根信任證書目錄中。聽上去夠狠夠絕,應該會管用。原文如下:
系統證書的目錄是:/system/etc/security/cacerts/
每個證書的命名規則爲:<Certificate_Hash>.<Number>
Certificate_Hash 表示證書文件的 hash 值,Number 是爲了防止證書文件的 hash 值一致而增加的後綴;
證書的 hash 值可以由命令計算出來,在終端輸入 openssl x509 -subject_hash_old -in <Certificate_File>;
其中 Certificate_File 爲證書路徑,將證書重命名爲 hash.0 放入系統證書目錄,之後你就可以正常抓包了。
我將burp的證書導出並放在了一臺ubuntu的vps中,輸入了文中的命令,終端給了我一條這樣的報錯:
root@android-test:~# openssl x509 -subject_hash_old -in cacert.der
unable to load certificate
139914021783192:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:701:Expecting: TRUSTED CERTIFICATE
我也沒搞懂爲什麼會這樣,心想着指明證書類型試試看,於是我又敲了以下命令:
root@android-test:~# openssl x509 -subject_hash_old -in cacert.der -inform DER
9a5ba575
-----BEGIN CERTIFICATE-----
**** SOME base64 code ****
-----END CERTIFICATE-----
hash這就出來了~~看來直覺debug還是有用的。於是按照帖子中說的,我用9a5ba575.0
重命名了證書並放到了/system/etc/security/cacerts/
目錄下。重啓模擬器後,我設置網絡代理爲自己PC上的burpsuite:
在模擬器瀏覽器輸入https://www.baidu.com
後我終於如願看到了明文的https數據:
帖子最後還有用VirtualApp的第三種方法,我沒有試,以後如果碰到SSL Pinning可能還會翻出來試試,先馬克住再說
後記
最近發現雷電更新了新版本,新版本的文件系統變成了read-Only權限,直接移動文件進去會提示錯誤。而chmod
等命令皆被禁止,後來發現這種情況下重新掛載一下根目錄就行:
# 進入adb命令行模式
adb shell
mount -o remount rw /