A. 2023frida使用教程(1)
1.使用材料:
(Windous10)pc
Python3環境
雷電模擬器
frida16.0.9(hook框架)
vscode
Charles(抓包)
APP(駕培訓創業教練)未加固
jadx4.1
2.逆向目標:hook介面:逆向登錄參數sigin加密
3.詳細逆向過程:
3.1抓包
設置ssl代理,在雷電模擬器WIFI設置代理,下載證書並安裝證書,重啟雷電模擬器
打開 駕培訓創業教練 APP的登錄頁面
打開抓包工具
輸入手機號抓包,抓包結果如下:
vscode note記錄抓包結果,養成好習慣!
3.2反編譯app搜索逆向關鍵詞
APP未加殼,如果加殼需要先破殼,安卓逆向中最重要的就是:演算法分析和脫殼
打開jadx 導入APP後開始反編譯 搜索關鍵詞:getSmscode 雙擊轉到代碼區
代碼審計:
這段代碼就是構造請求體,包括了 類型 手機 時間 簽名 。其中簽名是用了stringMD5toUpperCase函數來生成,
其中stringMD5toUpperCase函數又使用了yyyyMMddHHmmss + i + str + str2這幾個參數生成,我們不知道str是什麼,所有可以使用frida進行hook!!!!!!
3.3編寫hook代碼
目錄如下:
我們直接使用模板frida
python模板
模板介紹:frida兩種模式,我們這里使第二種。他們的區別:
-spawn模式,Frida會自行啟動並注入進目標App,Hook的時機非常早 自動重啟 設置包名
-attach模式,Frida會附加到當前的目標進程中,即需要App處於啟動狀態,這也意味著只能從當前時機往後Hook 手動啟動 設置APP名
js模板:
結合反編譯Java代碼編寫:
補充:java方法的重載
什麼是重載?
幾個相同的函數,參數不相同
該怎麼hook呢?
Java.use('包名.類名').方法.overload('java.lang.String')
例如:
Java.use('com.jx885.library.http.CommAction').getSmscode..overload('int')implementation=function(mi){}
完整代碼:
3.4 連接frida伺服器,對app進行hook
終端命令:
埠轉發
運行
結果如下:
補充:grpc直接調用
B. 抓包工具(如Charles)抓取Https數據包
1、HTTPS 不是單獨的一個協議,它是 HTTP + SSL/TLS 的組合;
2、TLS 是傳輸層安全性協議,它會對傳輸的 HTTP 數據進行加密,使用非對稱加密和對稱加密的混合方式;
3、抓包工具的原理就是「偽裝「,對客戶端偽裝成伺服器,對伺服器偽裝成客戶端;
4、使用抓包工具抓 HTTPS 包必須要將抓包工具的證書安凱襲裝到客戶端本地,並設置信任;
5、HTTPS 數據只是在傳輸時進行了加密,而抓包工具是接收到數據後再重新加密轉發,所以抓包工具抓到的 HTTPS 包可以直接看到明文;
1、HTTPS 的數據是加密的,常規下抓包工具代盯源兄理請求後抓到的包內容是加密狀態,無法直接查看。但是,正如前文所說,瀏覽器只會提示安全風險,如果用戶授權仍然可以繼續訪問網站,完成請求。因此,只要客戶端是我們自己的終端,我們授權的情況下,便可以組建中間人網路,而抓包工具便是作為中間人的代理。
2、通常HTTPS抓包工具的使用方法是會生成一個證書裂塌,用戶需要手動把證書安裝到客戶端中,然後終端發起的所有請求通過該證書完成與抓包工具的交互,然後抓包工具再轉發請求到伺服器,最後把伺服器返回的結果在控制台輸出後再返回給終端,從而完成整個請求的閉環。
HTTPS可以防止用戶在不知情的情況下通信鏈路被監聽,對於主動授信的抓包操作是不提供防護的,因為這個場景用戶是已經對風險知情。要防止被抓包,需要採用應用級的安全防護,例如採用私有的對稱加密,同時做好移動端的防反編譯加固,防止本地演算法被破解。