資產(chǎn)提取
AppinfoScanner
首先還是我們經(jīng)常使用的AppinfoScanner,AppinfoScanner是一款適用于以HW行動/紅隊/滲透測試團隊為場景的移動端(Android、iOS、WEB、H5、靜態(tài)網(wǎng)站)信息收集掃描工具,可以幫助滲透測試工程師、攻擊隊成員、紅隊成員快速收集到移動端或者靜態(tài)WEB站點中關(guān)鍵的資產(chǎn)信息并提供基本的信息輸出,如:Title、Domain、CDN、指紋信息、狀態(tài)信息等。
cd AppInfoScanner
python-m pip install -r requirements.txt
安裝依賴庫之后,直接將APK放到該工具的文件夾中,使用該腳本去掃描該APK文件中所含的鏈接信息
這里運行命令為
1.掃描Android應(yīng)用的APK文件、DEX文件
pythonapp.pyandroid-ixxx.apk
2.掃描IOS應(yīng)用的IPA文件、Machine-o文件
pythonapp.pyios-ixxx.ipa
3.掃描web站點的文件、目錄、需要緩存的站點URL
pythonapp.pyweb-iwww.xxx.com
這里我們的目標是APK文件,所以我們直接使用第一條命令即可
pythonapp.pyandroid-i 123.apk
這時,AppinfoScanner就會將該APK中所涉及到的鏈接全部都提取出來,在掃描后會在AppinfoScanner中輸出一個以當前時間命名的xls文件,其中就包含了對該APP中所提取的一些資產(chǎn)信息,但是該xls中的資產(chǎn)提取的并不完整,可能是我APK的原因吧
在out文件夾中還會有一個以該APK名所命名的文件夾,里面存放這該APK所逆向出來的源代碼,這里我們可以將該源代碼導(dǎo)入到IDEA中
打開IEDA,然后選擇打開,選擇所輸出的文件夾,單擊確定
使用快捷鍵ctrl+shift+F全局搜索,去搜索該代碼中的一些關(guān)鍵信息,如http://、https://等也可以獲得一些關(guān)鍵信息
MonSF
移動安全框架 (MobSF) 是一種自動化的一體化移動應(yīng)用程序 (Android/iOS/Windows) 滲透測試、惡意軟件分析和安全評估框架,能夠執(zhí)行靜態(tài)和動態(tài)分析。MobSF 支持移動應(yīng)用程序二進制文件(APK、XAPK、IPA 和 APPX)以及壓縮源代碼,并提供 REST API 以與您的 CI/CD 或 DevSecOps 管道無縫集成。動態(tài)分析器可幫助您執(zhí)行運行時安全評估和交互式儀器測試。
MonSF是基于docker運行的,我們只需要找來一臺安裝docker的主機運行如下兩條命令即可
dockerpull opensecurity/mobile-security-framework-mobsfdockerrun -it -p 8008:8000 opensecurity/mobile-security-framework-mobsf:late
這里拉取環(huán)境之后直接運行即可,由于我之前已經(jīng)拉取了環(huán)境,所以比較快一些,如果剛開始的話會需要等待一段拉取時間,如果已經(jīng)拉取成功環(huán)境之后,下次啟動只需要
docker run -it -p 8008:8000 opensecurity/mobile-security-framework-mobsf:latest
命令即可
啟動好之后,直接訪問docker主機的8008端口
這里就是我們搭建好的MobSF界面,為web圖形化界面,這里我們直接將APK拖到或者上傳MobSF中之后,它就會對當前APK進行一個掃描,掃描完成之后即可看到這個APK的一些安全信息
也可以去將該APK的java源代碼、Smali源代碼等
一些易受攻擊的點
和網(wǎng)址、電子郵件等信息
還可以對目標生成一份報告等等其他功能,這里不再闡述
突破抓包限制
在測試APP中,經(jīng)常會遇到一種情況,就是當我們打開代理之后,或者經(jīng)常會出現(xiàn)抓不到包、一直檢測失敗
等各種情況,這里大概情況分為兩點
APK做了防抓包機制,如反代理或反證書校驗的檢測
該APK沒有走http/S協(xié)議,走了其他協(xié)議
首先讓我們先了解一下什么是反代理和反證書校驗
反代理,當該APK在啟動時會判斷客戶端是否啟動代理,如果啟動代理則無法進行通信
反證書檢測,抓包時,無法連接網(wǎng)絡(luò)并且也接收不到任何數(shù)據(jù),將APP代碼內(nèi)置僅接受指定域名的證書,而不接收操作系統(tǒng)或瀏覽器內(nèi)置的CA根證書
突破反代理
首先當我們的APK的檢測機制為反代理時,我們該如何去進行一個繞過,這里他的判斷機制是當檢測到客戶端啟動代理時,不發(fā)送數(shù)據(jù),那我們可以不使用模擬器的代理,而使用本機的代理工具去包含安卓模擬器去啟動,再將代理工具的流量轉(zhuǎn)發(fā)到我們的burp上,哪這樣我們的流量走向就成了下圖,模擬器中并沒有設(shè)置代理,但是他的整個流量都會走proxifier,proxifier會將流量都轉(zhuǎn)發(fā)到burp上面,從而達到繞過反代理的效果。
首先打開我們在內(nèi)網(wǎng)滲透測試中經(jīng)常使用的代理工具Proxifier,到配置文件中的代理服務(wù)器選項–>添加代理服務(wù)器–>服務(wù)器ip地址與端口為burp所監(jiān)聽的端口–>協(xié)議選擇HTTPS,點擊確定
在設(shè)置好代理之后,我們再來設(shè)置規(guī)則
點擊確定之后,我們將夜神模擬器重啟,可以看到數(shù)據(jù)包已經(jīng)在傳遞了
這時我們再打開反代理的APK時,就可以看到我們的burp已經(jīng)成功接收到了數(shù)據(jù)
突破證書校驗進行抓包
那么如果APK是基于證書校驗或者走了其他的比如SSL等協(xié)議,那這時候我們該如何去抓取該APK的數(shù)據(jù)包呢?
這里我們就可以嘗試使用frida+r0capture+wireshark組合,使用frida和r0capture聯(lián)動去抓取該APK的所有數(shù)據(jù)包,然后使用wireshark去進行分析該APK的流量詳情。
首先各工具的下載地址為
https://github.com/r0ysue/r0capture
https://github.com/frida/frida/releases
https://www.wireshark.org/#download
首先安裝Frida
本地安裝firdra和firdra-tools,使用pip進行安裝
pipinstall frida
pipinstall frida-tool
模擬器安裝frida-server
這里在安裝的時候需要注意以下兩點
1、根據(jù)模擬器的位數(shù)去下載其相對應(yīng)的frida-server腳本
在這里可以調(diào)用夜神模擬器路徑下的nox_adb.exe去調(diào)用命令
nox_adb.exe shell //進入到模擬器bash視圖
getprop ro.product.cpu.abi //查看位數(shù)信息
這里可以看到我們的模擬器系統(tǒng)為x86操作系統(tǒng)
2、frida-server的版本要與本機pip安裝的版本一致
可以使用pip list來查看我們所安裝的frida的版本信息,這里我們本地所安裝的frida版本為15.1.22,那么我們的模擬器也下載15.1.22版本的frida-server就可以了
通過剛剛的基本信息之后,我們了解到,我們要下載版本為15.1.22,x86的frida,這里我們直接打開下載界面找到該版本進行下載即可,這里arm為真機使用版本,x86和x86_64為模擬器使用版本,這里我們下載frida-server-15.1.22-android-x86.xz文件即可
下載完成之后,我們將其放到夜神模擬器的bin目錄下,使用Nox_adb.exe將其上傳到模擬器中
nox_adb.exe push frida-server-15.1.22-android-x86 /data/local/frida-server
運行frida
OK,上傳成功,接下來進入到模擬器的bash視圖下,執(zhí)行frida-server即可
nox_adb.exe shellcd /data/local/frida-server
ls -lh
chmod u+x frida-server
好,這里我們成功運行了frida-server,接下來就檢查一下他是否正常運行并是否和我們本機的frida正常連接
模擬器中ps | grep frida-server,可以看到進程
本機中frida-ps -U or frida-ps -R可以正常返回
這里frida-ps -R報錯,則使用adb forward tcp:27042 tcp:27042將流量轉(zhuǎn)發(fā)出去
然后就是我們的最后一步,獲取我們要抓取的APK包名,這里有兩種查看方式,一種是在/data/data目錄中存放這所有文件的包名,還有就是可以使用APK資源提取器去查看APK的包名,這里我習慣用第二種方式比較可視化一些
然后就可以啟動我們的r0capture工具進行抓包分析,命令為
python r0capture.py -U -f 包名 -v -p 文件名.pcap
這時,r0capture就會自動啟動該APK文件,并將我們在進行操作時的流量進行保存為pacp,當我們停止運行該APK后,就會在r0capture中看到命名的pacp文件
這里我們直接打開分析即可
這里就成功抓取到了我在進行驗證時的數(shù)據(jù)包,成功繞過證書檢測等機制,但是該方法有些弊端,就是所導(dǎo)出的數(shù)據(jù)包我們并不能將其進行修改,后續(xù)最佳的辦法為frida+r0capture聯(lián)動fillder和XPosed框架去繞過限制,但這里由于篇幅原因,下一篇再來說一說以下方法吧!