主要講述APP與Web滲透的區別、如何開展APP滲透、會用到哪些工具,如何使用、有哪些常見漏洞以及危害。
#0x00 APP滲透與Web滲透的區別
APP滲透分爲逆向、接口滲透。接口滲透和常規的Web滲透是一樣的流程,不多介紹,主要講逆向方面帶來的影響。
1、攻擊面不同
以下是APP滲透所涉及到的攻擊面。
對圖中的三個方面進行細分
客戶端:
- 反編譯
- 調試
- 加密/簽名破解
- 輸入記錄
- 導出組件
- 進程注入
數據傳輸
- 信息泄露
- 傳輸數據篡改
- 重放攻擊
服務端
- 心血
- ST2
- 注入
- 跨站
- 越權執行
- 上傳下載
- 弱口令
我們可以看出來,數據傳輸和服務端的攻擊內容,其實就是我們平時測試Web都會涉及到的。APP滲透除了數據傳輸和服務端之外,還涉及到了一個客戶端的內容。
2、攻擊對象不同
攻擊面覆蓋有不同,攻擊的對象也會有所不同。除了獲取服務器數據和權限之外,客戶端的攻擊對象還包括了大量的使用用戶。
舉個已經上新聞的例子:
可以看出來,攻擊者是對APP進行破解植入後門,通過非法渠道發佈給其他使用者,從而達到牟利的目的。
還有很多看不見的灰黑產業,目前也將注意力轉移至客戶端,比如外掛,各大平臺輔助軟件等。
就不一一舉例子了。
總之,攻擊的對象不單單是公司的數據和服務器,開始轉向大量的客戶端使用者。
#0x01 APP滲透工具
開展工作需要工具,我們從常用幾個工具的使用或原理方面來介紹。
1、逆向工具
Apktool
Apktool是Google提供的APK編譯工具,能夠反編譯及回編譯apk,同時安裝反編譯系統apk所需要的framework-res框架,清理上次反編譯文件夾等功能,需要java支持。
根據介紹可以看到,apktool主要分爲d[decode]、b[build]兩部分。
d就是拆解apk包,b是把拆解後的apk包重新打包成apk。
使用也非常簡單
apktool d source.apk -o dst_uncrack
apktool b dst_uncrack -o source.apk
IDA
IDA是一款功能強大的逆向工程軟件,集成了的靜態分析、動態分析,進程監聽調用以及代碼分析流程圖等功能,支持.so .exe .o等格式。
IDA基本逆向必備,功能很豐富,下載和使用暫且不說,後面我會逐漸根據不同實際情況來一一介紹。
Jeb
Jeb是一個功能強大的爲安全專業人士設計的Android應用程序的反編譯工具。用於逆向工程或審計APK文件,可以提高效率減少許多工程師的分析時間。無需額外的工具,就可以將smali彙編轉成Java代碼。
它的功能比較全,和強大。有分包合併、動態調試、smali彙編轉Java僞代碼功能。
Jeb基於Java開發,使用之前需要有java環境,支持跨平臺運行。
選擇不同平臺的腳本,直接跟上目標APK即可。
按tab可以將jeb反編譯的smali代碼轉成Java僞代碼。
2、抓包工具
-
Charles
-
Wireshark
-
Burpsuit
這三個工具用的比較多,這裏就不做過多展開了。
3、滲透框架:
Xpose
Xposed是基於Android的Hook工具,和Frida相比,它是一款靜態的Hook框架,不影響程序運行。
原理:
爲方便理解Xposed原理先簡單瞭解下我們平時用的Android手機體系是啥樣子的。
Xpose直接替換了Zygote進程,所有的應用程序都需要Zygote開闢進程運行,所以Xpose就相當於控制了運行的APP,所以手機必須得root,才能拿到Zygote替換權限。使用Xpose得先root。
Xpose是在虛擬器啓動之前
Frida
簡介:Frida是個輕量級別的hook框架。
1、什麼是hook?
可以簡單理解爲鉤子,鉤住目標函數,當函數被執行時,我們可以通過鉤子來修改函數傳入參數和函數執行結果。
2、hook有什麼作用?
當我們找到了關鍵函數,就可以通過hook,控制其輸入輸出,達到破解的目的。
這在實際場景中作用非常廣泛,比如外掛修改內存參數、繞過安全檢測、繞過驗證令牌等等。
frida分爲客戶端和服務端,服務端可通過以下地址進行下載,根據系統平臺不同選擇對應版本:
https://github.com/frida/frida/releases
工作原理
是一種動態插樁工具,可以插入一些代碼到原生app的內存空間去,(動態地監視和修改其行爲),這些原生平臺可以是Win、Mac、Linux、Android或者iOS。
動靜態修改內存實現作弊一直是剛需,比如各種外掛。Frida的強大之處是如何在無源碼,不可調試的純黑盒情況下修改內存數據。
Frida基於編譯型語言的特性,機器碼在CPU和內存上執行的過程中,控制其內部數據的交互和跳轉。
使用
需要將對應平臺和版本的frida-server推送至目標載體。然後執行./frida-server
frida客戶端可以在命令中查看
#0x02 常見漏洞以及危害
1、Java代碼保護
使用Jeb直接反編譯,如果沒有經過加固,直接可以拿到可讀性較高的源代碼,可以閱讀代碼邏輯。
2、防止二次打包
apktool可以直接重新打包。
當程序被篡改需要重新安裝時,二次打包是必經的過程。如果有加密算法阻止二次打包,那麼破解者必須花費更大精力來進行對抗。
3、反調試保護
1、準備一臺Root手機,連接至PC;
2、使用adb向目標手機推送IDA Pro的Android調試器;
3、在手機上運行android_server;
4、端口轉發adb forward tcp:23946 tcp:23946
5、打開IDA Pro進行Remote debug,在進程列表中選擇目標進程的包名;嘗試Attach該進程,並進行調試。
遠程調試成功界面,顯示的是彙編代碼。
進一步下斷點,按F5將ARM彙編轉成僞C代碼,就可以透明地監視、修改、控制程序的運行了。
危害:所有的軟件在彙編層面上來說都是開源的,靜態分析配合動態調試,爲破解、植入後門、惡意代碼等提供了基礎。增加反調試機制,給破解者帶來阻力。
4、Native代碼注入檢測
可以讀APP的運行內存、以及接收api相關數據,或者注入代碼。
危害:App沒有使用反調試技術對運行時的程序進行保護。攻擊者可以通過動態調試的方法,對App進行逆向、跟蹤等。同時,攻擊者還可以利用調試技術,在運行時的App內存中注入惡意代碼,達到截獲運行時數據的目的。