溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Frida-brida中如何進(jìn)行hook抓包

發(fā)布時(shí)間:2021-12-27 15:49:20 來源:億速云 閱讀:1247 作者:柒染 欄目:數(shù)據(jù)安全

今天就跟大家聊聊有關(guān)Frida-brida中如何進(jìn)行hook抓包,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

環(huán)境準(zhǔn)備

1、安裝npm

https://nodejs.org/en/download/官網(wǎng)下載后直接安裝

2、安裝frida:

pip install frida

pip install frida-tools

npm install frida-compile@9.3.0

注:Frida-compile較新版本缺少brida編譯參數(shù)會(huì)報(bào)錯(cuò),具體那個(gè)版本后去除參數(shù)的未進(jìn)行測試,有興趣的可自行嘗試。

3、安裝birda和依賴:

Github下載v.0.4導(dǎo)入burp擴(kuò)展中:https://github.com/federicodotta/Brida/releases/tag/v0.4

pip install Pyro4

注:burp商店自帶的也有brida,當(dāng)不介意在商店直接安裝,筆者在burp商店直接安裝brida時(shí)hook的js腳本無法解釋參數(shù),最后換官網(wǎng)的包解決的問題,本萌新也不知道原因,求大佬指點(diǎn)。

4、測試apk環(huán)境搭建

測試apk下載地址:https://pan.baidu.com/s/1r2pKkbsB22FMfu_bD2vhtw

安裝:Adb install -t eseBrida.apk

注:本著最快入手講解使用的原則使用了大佬的測試app。(好吧其實(shí)就是本人菜對加解函數(shù)的查找還不太會(huì),先用測試app練練手,后續(xù)學(xué)會(huì)加密姿勢后可能會(huì)繼續(xù)寫個(gè)學(xué)習(xí)過程)

服務(wù)端環(huán)境搭建:

Frida-brida中如何進(jìn)行hook抓包

如上圖所示,下載后四個(gè)文件,有hook.js腳本和服務(wù)端的處理代碼,還有個(gè)就是開啟frida服務(wù)的腳本,如需使用請參考實(shí)際環(huán)境。

一切為了效率,我們可以直接使用phpstudy搭建服務(wù),將php文件放進(jìn)phpstudy的web根目錄即可。

訪問結(jié)果如下:

Frida-brida中如何進(jìn)行hook抓包

注:如果訪問看到的是源代碼或空白頁可能是php版本問題,更改版本即可,此處我用的是5.4.45

在apk內(nèi)設(shè)置服務(wù)地址:

Frida-brida中如何進(jìn)行hook抓包

開始

下載對應(yīng)的frida-server版本并傳入測試機(jī)中運(yùn)行:

Frida-brida中如何進(jìn)行hook抓包

進(jìn)行端口轉(zhuǎn)發(fā):

Frida-brida中如何進(jìn)行hook抓包

進(jìn)入burp開啟服務(wù)和應(yīng)用:

Frida-brida中如何進(jìn)行hook抓包

Js直接加載默認(rèn)js腳本就好,在默認(rèn)js內(nèi)進(jìn)行修改,兩個(gè)路徑選擇安裝時(shí)的路徑即可,找不到可用everything等工具搜索文件名找到路徑。

包名可通過下圖命令進(jìn)行查找或在打開軟件后使用adb shell dumpsys window w |findstr \/ |findstr name=   進(jìn)行查看

Frida-brida中如何進(jìn)行hook抓包

腳本調(diào)試

查看大佬的js文件:

Frida-brida中如何進(jìn)行hook抓包

對比反編譯的加密算法:

Frida-brida中如何進(jìn)行hook抓包

Key值:

Frida-brida中如何進(jìn)行hook抓包

加載默認(rèn)的brida.js:

Frida-brida中如何進(jìn)行hook抓包

寫入下圖中的js代碼:

Frida-brida中如何進(jìn)行hook抓包

保存并重新編譯js,然后進(jìn)行調(diào)試(每次修改js代碼后都需要進(jìn)行保存編譯操作):

Frida-brida中如何進(jìn)行hook抓包

添加數(shù)據(jù)運(yùn)行contextcustom1方法,確認(rèn)brida有無問題:

Frida-brida中如何進(jìn)行hook抓包

運(yùn)行contextcustom2方法,對比加解密函數(shù)是否正確:

Frida-brida中如何進(jìn)行hook抓包

Frida-brida中如何進(jìn)行hook抓包

Frida-brida中如何進(jìn)行hook抓包

使用大佬的js代碼進(jìn)行調(diào)試:

Frida-brida中如何進(jìn)行hook抓包

查看輸出,發(fā)現(xiàn)有問題,查看js代碼發(fā)現(xiàn)該js傳輸?shù)臑?6進(jìn)制byte流數(shù)據(jù),更改代碼使之傳輸字符串?dāng)?shù)據(jù)查看結(jié)果:Frida-brida中如何進(jìn)行hook抓包

Frida-brida中如何進(jìn)行hook抓包

同理修改解密腳本:Frida-brida中如何進(jìn)行hook抓包

Frida-brida中如何進(jìn)行hook抓包

按理說大佬的js應(yīng)該是沒有問題的,不清楚是調(diào)用還是brida更新后機(jī)制改變了,有興趣的可以研究下,然后希望有知道原因的大佬指點(diǎn)下本萌新。

插件使用

Bridav0.4直接附帶有幾個(gè)利用腳本的插件,挺方便的,也簡單的用下插件,入個(gè)門。

IHttpListener

IhttpListener插件是根據(jù)條件自動(dòng)調(diào)用js加解的插件:

Frida-brida中如何進(jìn)行hook抓包

下列是該插件各項(xiàng)代表的意義:

插件名稱:BridaEncryptPassword

插件類型:IHttpListener

Frida導(dǎo)出函數(shù)的名稱:(我們在前面的步驟中定義的JS函數(shù)的名稱。請勿在導(dǎo)出的函數(shù)名稱中使用大寫字符

執(zhí)行于:請求/響應(yīng)

Burp Suite工具:Repeater,IntruderScanner(為了能夠手動(dòng)測試密碼參數(shù),使用Intruder執(zhí)行蠻力并使用Scanner進(jìn)行掃描)

僅處理范圍內(nèi)的請求/響應(yīng):(為了避免對意外的請求進(jìn)行加密)

執(zhí)行:(我們可以給插件一個(gè)正則表達(dá)式或檢查的所有請求/響應(yīng)選擇是否插件應(yīng)該啟用純文本字符串,為了只能在指定的請求/響應(yīng)上運(yùn)行我們的插件。在我們的情況下,我們僅對登錄請求感興趣)

參數(shù):正則表達(dá)式。(我們可以定義一個(gè)正則表達(dá)式,可以包括使用正則表達(dá)式組參數(shù)的任意數(shù)量的在我們的插件,我們想要傳遞的參數(shù)傳遞給弗里達(dá)導(dǎo)出函數(shù)只密碼字段并且我們的正則表達(dá)式可以完成此任務(wù); Brida提供了許多不同的選項(xiàng)來傳遞參數(shù),例如完整的請求/響應(yīng),正文,標(biāo)頭,帶有彈出窗口的動(dòng)態(tài)Feed,...)

編碼函數(shù)參數(shù):(在將提取的參數(shù)發(fā)送到Frida導(dǎo)出函數(shù)之前,我們可以對其進(jìn)行編碼,但是在這種情況下沒有必要。這對于二進(jìn)制輸入非常重要:在這種情況下,最好使用ASCII-HEX編碼參數(shù)或Base64并在Frida導(dǎo)出函數(shù)中對其進(jìn)行解碼。單擊時(shí),自定義插件的所有編碼/解碼選項(xiàng)都會(huì)打開一個(gè)彈出式窗口,您可以在其中選擇一種或多種編碼/壓縮算法,例如Base64,ASCII-HEX,URL, GZIP,...)

解碼函數(shù)輸出:(我們可以解碼Frida返回的輸出。至于參數(shù),如果輸出為二進(jìn)制形式,則最好使用Frida導(dǎo)出函數(shù)對其進(jìn)行編碼,并使用此選項(xiàng)在插件中對其進(jìn)行解碼。例如,我們用于插件的iOS函數(shù)+ cryptoPassword:返回Base64輸出。后端等待使用相同函數(shù)編碼的加密數(shù)據(jù),因此我們不需要對其進(jìn)行解碼)

插件輸出:用正則表達(dá)式(帶括號(hào))(我們將Frida返回的加密值替換為他的未加密形式,由我們在Repeater或Burp在“入侵者/掃描儀”中插入。至于參數(shù),我們使用REGEX組來選擇插入點(diǎn))

插件輸出編碼:(此菜單允許我們在將Frida輸出插入請求/響應(yīng)之前對其進(jìn)行編碼。)

Frida-brida中如何進(jìn)行hook抓包Frida-brida中如何進(jìn)行hook抓包

Frida-brida中如何進(jìn)行hook抓包

正則等規(guī)則在這個(gè)插件中尤其重要,匹配錯(cuò)誤的話就會(huì)失誤。

IcontextMenu

IcontextMenu該插件是添加單擊右鍵可以加解密選項(xiàng)功能的插件:

Frida-brida中如何進(jìn)行hook抓包

下列是該插件各項(xiàng)代表的意義:

插件名稱:

插件類型:IContextMenu

Frida導(dǎo)出函數(shù)的名稱:(我們在前面的步驟中定義的JS函數(shù)的名稱。請勿在導(dǎo)出的功能名稱中使用大寫字符

執(zhí)行上:右鍵解密功能的名稱

參數(shù):請求/響應(yīng)中突出顯示的值(通過單擊并拖動(dòng)鼠標(biāo)左鍵突出顯示的請求/響應(yīng)部分,將作為參數(shù)提供給Frida導(dǎo)出函數(shù)。Brida提供了許多其他不同的選項(xiàng)來傳遞參數(shù),例如完整的請求/響應(yīng),帶組的正則表達(dá)式,正文,標(biāo)題,帶彈出窗口的動(dòng)態(tài)Feed,...)

編碼函數(shù)參數(shù):(我們可以在將參數(shù)發(fā)送到移動(dòng)應(yīng)用程序之前對其進(jìn)行編碼,但是在這種情況下沒有必要。這對于二進(jìn)制輸入非常重要:在這種情況下,最好使用ASCII-HEX或Base64對參數(shù)進(jìn)行編碼并在Frida導(dǎo)出的函數(shù)中對其進(jìn)行解碼。單擊時(shí),“自定義插件”的所有編碼/解碼選項(xiàng)均會(huì)打開一個(gè)彈出窗口,您可以在其中選擇一種或多種編碼/壓縮算法,例如Base64,ASCII-HEX,URL,GZIP ...)

解碼函數(shù)輸出:(我們可以解碼Frida返回的輸出。至于參數(shù),如果輸出為二進(jìn)制形式,則最好使用Frida導(dǎo)出函數(shù)對其進(jìn)行編碼,并使用此選項(xiàng)在插件中對其進(jìn)行解碼。在我們的插件中,我們用于插件的iOS函數(shù)+ cryptoResponse:,以ASCII字符串返回搜索操作的結(jié)果,因此我們不需要對其進(jìn)行解碼)

插件輸出:在請求/響應(yīng)中替換突出顯示的值(Frida導(dǎo)出功能的輸出將代替作為參數(shù)提供的突出顯示的值)

插件輸出編碼:(此菜單允許我們在將Frida輸出插入所選位置之前對其進(jìn)行編碼。但是,在我們當(dāng)前的插件中,這不是必需的,我們將其設(shè)置為none)

看完上述內(nèi)容,你們對Frida-brida中如何進(jìn)行hook抓包有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI