之前說過一些信息搜集相關的東西(漏了APP沒講),按照滲透測試的完整流程,我作為測試,測個APP,也很合理吧
既然能用burpsuite測試web,那就能用burpsuite測試APP(有大佬自稱用burpsuite行走江湖多年,靠插件和經驗打遍天下無敵手)
本次演示采用夜神模擬器+burpsuite v2020.11 (啊當然不是因為夜神最niubility,而是我手頭就有它了 ,如果要抓的APP不能在夜神上運行、或者框架安不了,確定是模擬器的問題,就換一個模擬器,什么mumu、雷電、天天、逍遙...)
系統為安卓7 (版本太低的不予討論)
為了抓HTTPS的包,沒安裝證書的,自行下載、導入、安裝(簡單說一下,比如瀏覽器安裝證書,如果burpsuite監聽的是本機的8080端口,那就瀏覽器訪問http://localhost:8080,下載CA證書,然后在瀏覽器中導入cacert.der,安到受信任的根證書頒發機構,直到看到PortSwigger CA,證明導入成功)
在模擬器配置,長按網絡修改網絡,采用代理,IP為本地主機IP,端口也設一個,啥都行比如8081
然后在burpsuite中新建一個綁定代理,選擇本機IP和剛剛寫的端口
最終變成
然后在夜神模擬器中用瀏覽器訪問192.168.25.203:8081下載證書(嫌安全警告彈得煩,也可以在本地機器設代理后上訪問http://192.168.25.203:8081,下載證書后再共享到模擬器中安裝)
下載CA證書,然后打開模擬器中“下載”可以看到證書
別忘了把后綴從.der改成.cer(der安不了),然后拖到SD卡的路徑中,到設置-》安全-》從SD卡安裝,選擇這個證書
為證書起個名字,設置PIN碼,隨便搞一個記得住的,安裝成功之后會提示安裝成功
完活兒,然后正常來說就可以用burpsuite抓一些模擬器中APP或者其他什么的數據包了
but,這只是比較理想的情況
實際上會出現各種問題:
1.本機不允許設置網絡代理
像我最初做的例子,就屬於開了模擬器本機的代理,那有些APP就是會檢測代理,你設置了本機代理我干脆就不讓你正常運行!怎么搞嘛
常見的一種方法是在模擬器外部抓包來規避檢測,比較常規的辦法就是利用proxifier(當然,先要按照之前的步驟安證書,區別在於這回不用手動修改模擬器網絡代理配置)
配置代理服務器,選本機IP,端口8080(burpsuite怎么寫,這里就怎么寫,burpsuite默認監聽8080),HTTPS
再配置規則,名字隨便起,把夜神模擬器進程Nox.exe(不一定就是這個,看你機器上顯示的是什么就寫什么)導入規則,代理選之前配的
啟用此規則
然后用burpsuite即可繞過限制抓包(吧)
模擬器-》proxifier-》burpsuite
2.APP認證機制
有一個問題:HTTPS抓包一個朴素的思想是什么?
答:MITM,對客戶端偽裝成服務端,對服務端偽裝成客戶端
這里有一篇介紹HTTPS認證原理(單向認證、雙向認證)的文章,總結了一下 https://www.cnblogs.com/yaphetsfang/articles/12858356.html
但是有些APP會采用SSL-Pinning 機制來進行抵抗抓包
那么,如何繞過SSL-Pinning機制呢?(很多東西,模擬器上是用不了的,必須真實手機環境)
(1)老版本安卓系統(7以下)可能會沒有針對第三方證書的限制,無此機制限制,可按照常規辦法抓包(但前提是APP能在上面正常運行)
(2)或者有root權限,能把這些個第三方證書安到系統默認預置的證書區里面
(3)再或者 Xposed+JustTrustMe、VitualXposed+JustTrustMe
VitualXposed可以在不需要設備root的情況下,修改App的行為 https://vxposed.com/
Xpose框架是一款可以在不修改APK的情況下影響程序運行或修改系統的框架服務 https://github.com/rovo89/Xposed
JustTrustMe是Github上面的一個開源項目,是xposed中的一個模塊,用於禁止SSL證書驗證 https://github.com/Fuzion24/JustTrustMe?utm_source=testingpai.com
使用較為復雜,請參考:
https://blog.csdn.net/u011215939/article/details/95461286
http://www.yxssp.com/23278.html
(4)frida,仍然是比較復雜,參考:
https://xz.aliyun.com/t/6102
https://www.cnblogs.com/Eeyhan/p/12916162.html
(5)反編譯APK
有殼先脫殼,我等渣渣脫殼只能用大佬寫的工具
之后用工具反編譯,之后。。。之后我就不會了(理直氣壯),安卓一竅不通,正常來說需要修改內容
哪位大佬給條明路
3.root檢測問題
很多模擬器默認root(先不討論這玩意有沒有實際效果),這可能導致部分APP被限制。。。功能,打不開、閃退,更沒法抓包
要么關掉root
要么繞過root檢測,檢測可能會通過檢測系統版本、看看有沒有安什么root管理器啊、需要root的框架啦什么的
相關軟件有很多,但本菜雞安卓逆向玩的不好,所以這里就只是提一下,具體方法參考其他師傅們的文章吧
剩下的,就基本上和web測試一樣了,該用代理池用代理池,該用掃描器用掃描器
未經允許,禁止轉載