您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)Frida-brida中如何進(jìn)行hook抓包,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
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)境搭建:
如上圖所示,下載后四個(gè)文件,有hook.js腳本和服務(wù)端的處理代碼,還有個(gè)就是開啟frida服務(wù)的腳本,如需使用請參考實(shí)際環(huán)境。
一切為了效率,我們可以直接使用phpstudy搭建服務(wù),將php文件放進(jìn)phpstudy的web根目錄即可。
訪問結(jié)果如下:
注:如果訪問看到的是源代碼或空白頁可能是php版本問題,更改版本即可,此處我用的是5.4.45
在apk內(nèi)設(shè)置服務(wù)地址:
下載對應(yīng)的frida-server版本并傳入測試機(jī)中運(yùn)行:
進(jìn)行端口轉(zhuǎn)發(fā):
進(jìn)入burp開啟服務(wù)和應(yīng)用:
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)行查看
查看大佬的js文件:
對比反編譯的加密算法:
Key值:
加載默認(rèn)的brida.js:
寫入下圖中的js代碼:
保存并重新編譯js,然后進(jìn)行調(diào)試(每次修改js代碼后都需要進(jìn)行保存編譯操作):
添加數(shù)據(jù)運(yùn)行contextcustom1方法,確認(rèn)brida有無問題:
運(yùn)行contextcustom2方法,對比加解密函數(shù)是否正確:
使用大佬的js代碼進(jìn)行調(diào)試:
查看輸出,發(fā)現(xiàn)有問題,查看js代碼發(fā)現(xiàn)該js傳輸?shù)臑?6進(jìn)制byte流數(shù)據(jù),更改代碼使之傳輸字符串?dāng)?shù)據(jù)查看結(jié)果:
同理修改解密腳本:
按理說大佬的js應(yīng)該是沒有問題的,不清楚是調(diào)用還是brida更新后機(jī)制改變了,有興趣的可以研究下,然后希望有知道原因的大佬指點(diǎn)下本萌新。
Bridav0.4直接附帶有幾個(gè)利用腳本的插件,挺方便的,也簡單的用下插件,入個(gè)門。
IhttpListener插件是根據(jù)條件自動(dòng)調(diào)用js加解的插件:
下列是該插件各項(xiàng)代表的意義:
插件名稱:BridaEncryptPassword
插件類型:IHttpListener
Frida導(dǎo)出函數(shù)的名稱:(我們在前面的步驟中定義的JS函數(shù)的名稱。請勿在導(dǎo)出的函數(shù)名稱中使用大寫字符)
執(zhí)行于:請求/響應(yīng)
Burp Suite工具:Repeater,Intruder和Scanner(為了能夠手動(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)行編碼。)
正則等規(guī)則在這個(gè)插件中尤其重要,匹配錯(cuò)誤的話就會(huì)失誤。
IcontextMenu該插件是添加單擊右鍵可以加解密選項(xiàng)功能的插件:
下列是該插件各項(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è)資訊頻道,感謝大家的支持。
免責(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)容。