您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關Frida-brida中如何進行hook抓包,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
1、安裝npm
https://nodejs.org/en/download/官網下載后直接安裝
2、安裝frida:
pip install frida
pip install frida-tools
npm install frida-compile@9.3.0
注:Frida-compile較新版本缺少brida編譯參數會報錯,具體那個版本后去除參數的未進行測試,有興趣的可自行嘗試。
3、安裝birda和依賴:
Github下載v.0.4導入burp擴展中:https://github.com/federicodotta/Brida/releases/tag/v0.4
pip install Pyro4
注:burp商店自帶的也有brida,當不介意在商店直接安裝,筆者在burp商店直接安裝brida時hook的js腳本無法解釋參數,最后換官網的包解決的問題,本萌新也不知道原因,求大佬指點。
4、測試apk環境搭建
測試apk下載地址:https://pan.baidu.com/s/1r2pKkbsB22FMfu_bD2vhtw
安裝:Adb install -t eseBrida.apk
注:本著最快入手講解使用的原則使用了大佬的測試app。(好吧其實就是本人菜對加解函數的查找還不太會,先用測試app練練手,后續學會加密姿勢后可能會繼續寫個學習過程)
服務端環境搭建:
如上圖所示,下載后四個文件,有hook.js腳本和服務端的處理代碼,還有個就是開啟frida服務的腳本,如需使用請參考實際環境。
一切為了效率,我們可以直接使用phpstudy搭建服務,將php文件放進phpstudy的web根目錄即可。
訪問結果如下:
注:如果訪問看到的是源代碼或空白頁可能是php版本問題,更改版本即可,此處我用的是5.4.45
在apk內設置服務地址:
下載對應的frida-server版本并傳入測試機中運行:
進行端口轉發:
進入burp開啟服務和應用:
Js直接加載默認js腳本就好,在默認js內進行修改,兩個路徑選擇安裝時的路徑即可,找不到可用everything等工具搜索文件名找到路徑。
包名可通過下圖命令進行查找或在打開軟件后使用adb shell dumpsys window w |findstr \/ |findstr name= 進行查看
查看大佬的js文件:
對比反編譯的加密算法:
Key值:
加載默認的brida.js:
寫入下圖中的js代碼:
保存并重新編譯js,然后進行調試(每次修改js代碼后都需要進行保存編譯操作):
添加數據運行contextcustom1方法,確認brida有無問題:
運行contextcustom2方法,對比加解密函數是否正確:
使用大佬的js代碼進行調試:
查看輸出,發現有問題,查看js代碼發現該js傳輸的為16進制byte流數據,更改代碼使之傳輸字符串數據查看結果:
同理修改解密腳本:
按理說大佬的js應該是沒有問題的,不清楚是調用還是brida更新后機制改變了,有興趣的可以研究下,然后希望有知道原因的大佬指點下本萌新。
Bridav0.4直接附帶有幾個利用腳本的插件,挺方便的,也簡單的用下插件,入個門。
IhttpListener插件是根據條件自動調用js加解的插件:
下列是該插件各項代表的意義:
插件名稱:BridaEncryptPassword
插件類型:IHttpListener
Frida導出函數的名稱:(我們在前面的步驟中定義的JS函數的名稱。請勿在導出的函數名稱中使用大寫字符)
執行于:請求/響應
Burp Suite工具:Repeater,Intruder和Scanner(為了能夠手動測試密碼參數,使用Intruder執行蠻力并使用Scanner進行掃描)
僅處理范圍內的請求/響應:是(為了避免對意外的請求進行加密)
執行:(我們可以給插件一個正則表達式或檢查的所有請求/響應選擇是否插件應該啟用純文本字符串,為了只能在指定的請求/響應上運行我們的插件。在我們的情況下,我們僅對登錄請求感興趣)
參數:正則表達式。(我們可以定義一個正則表達式,可以包括使用正則表達式組參數的任意數量的在我們的插件,我們想要傳遞的參數傳遞給弗里達導出函數只密碼字段并且我們的正則表達式可以完成此任務; Brida提供了許多不同的選項來傳遞參數,例如完整的請求/響應,正文,標頭,帶有彈出窗口的動態Feed,...)
編碼函數參數:無(在將提取的參數發送到Frida導出函數之前,我們可以對其進行編碼,但是在這種情況下沒有必要。這對于二進制輸入非常重要:在這種情況下,最好使用ASCII-HEX編碼參數或Base64并在Frida導出函數中對其進行解碼。單擊時,自定義插件的所有編碼/解碼選項都會打開一個彈出式窗口,您可以在其中選擇一種或多種編碼/壓縮算法,例如Base64,ASCII-HEX,URL, GZIP,...)
解碼函數輸出:無(我們可以解碼Frida返回的輸出。至于參數,如果輸出為二進制形式,則最好使用Frida導出函數對其進行編碼,并使用此選項在插件中對其進行解碼。例如,我們用于插件的iOS函數+ cryptoPassword:返回Base64輸出。后端等待使用相同函數編碼的加密數據,因此我們不需要對其進行解碼)
插件輸出:用正則表達式(帶括號)(我們將Frida返回的加密值替換為他的未加密形式,由我們在Repeater或Burp在“入侵者/掃描儀”中插入。至于參數,我們使用REGEX組來選擇插入點)
插件輸出編碼:(此菜單允許我們在將Frida輸出插入請求/響應之前對其進行編碼。)
正則等規則在這個插件中尤其重要,匹配錯誤的話就會失誤。
IcontextMenu該插件是添加單擊右鍵可以加解密選項功能的插件:
下列是該插件各項代表的意義:
插件名稱:
插件類型:IContextMenu
Frida導出函數的名稱:(我們在前面的步驟中定義的JS函數的名稱。請勿在導出的功能名稱中使用大寫字符)
執行上:右鍵解密功能的名稱
參數:請求/響應中突出顯示的值(通過單擊并拖動鼠標左鍵突出顯示的請求/響應部分,將作為參數提供給Frida導出函數。Brida提供了許多其他不同的選項來傳遞參數,例如完整的請求/響應,帶組的正則表達式,正文,標題,帶彈出窗口的動態Feed,...)
編碼函數參數:無(我們可以在將參數發送到移動應用程序之前對其進行編碼,但是在這種情況下沒有必要。這對于二進制輸入非常重要:在這種情況下,最好使用ASCII-HEX或Base64對參數進行編碼并在Frida導出的函數中對其進行解碼。單擊時,“自定義插件”的所有編碼/解碼選項均會打開一個彈出窗口,您可以在其中選擇一種或多種編碼/壓縮算法,例如Base64,ASCII-HEX,URL,GZIP ...)
解碼函數輸出:無(我們可以解碼Frida返回的輸出。至于參數,如果輸出為二進制形式,則最好使用Frida導出函數對其進行編碼,并使用此選項在插件中對其進行解碼。在我們的插件中,我們用于插件的iOS函數+ cryptoResponse:,以ASCII字符串返回搜索操作的結果,因此我們不需要對其進行解碼)
插件輸出:在請求/響應中替換突出顯示的值(Frida導出功能的輸出將代替作為參數提供的突出顯示的值)
插件輸出編碼:無(此菜單允許我們在將Frida輸出插入所選位置之前對其進行編碼。但是,在我們當前的插件中,這不是必需的,我們將其設置為none)
看完上述內容,你們對Frida-brida中如何進行hook抓包有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。