您好,登錄后才能下訂單哦!
Brida Python3環(huán)境下的不完全折騰手冊,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
最近在測試 Android APP 的時候,發(fā)現(xiàn)目標程序做了HTTPS證書校驗,而因為 APK 混淆過,因此xposed
插件(比如SSL Unpinning
或者Just Trust Me
)就失效了,因為要hook的函數(shù)名被修改了。因此想到用Frida
來進行動態(tài)查看和Hook。
Brida是一款Burp Suite擴展,作為一座橋梁連接著Burp Suite以及Frida,以幫助用戶修改應用程序與后端服務器之間的通信數(shù)據(jù)為己任。
關于Brida
,F(xiàn)reebuf上已有介紹,不再贅述,感興趣的可以看這里。但是,官方的Brida
發(fā)布于2018年,原生支持的是python 2.7
,或者說只在py27
環(huán)境下測試過,而Frida
版本迭代之快,在如今的環(huán)境下已經(jīng)無法再適應py2.7
的環(huán)境了。
嘗試在python3
環(huán)境下安裝的時候,發(fā)現(xiàn)并不能使用,因此才有了本文折騰的全過程,看了無數(shù)遍官方文檔,慢慢領會了其中的精髓,現(xiàn)在記錄下來,與大家分享。
可以說安裝的過程中每一步都是坑,接下來慢慢分享~
第一個坑:Python
環(huán)境。
在安裝Frida
的時候,對于Python
的版本還是有一定要求的。
Step 1: 確定Frida
版本
這一步需要你定下來要用的Frida
是哪個版本,因為這與整個環(huán)境都有著巨大的關系。訪問Github的下載頁面,下載frida-server-xx.xx.xx-android-xx.tar.gz
并在你的機器上(模擬器或者手機均可)運行。
Step2: 確定支持的Python
版本
不同版本的Frida
支持的Python版本是不一樣的。把能用的Frida
版本記下來,比如12.8.17
,此時訪問Pypi
的Frida下載頁,如果你的pip
用了國內(nèi)源,就去訪問該源的頁面,比如我用的清華大學的源,那就訪問https://pypi.tuna.tsinghua.edu.cn/simple/frida/。
在這個列表中找到相應的版本12.8.17
,并查看文件名。比如:
比如你是在Windows 64位平臺使用,就下載frida-12.8.17-py3.7-win-amd64.egg
,Linux平臺就下載相應的egg即可。
根據(jù)上面查看到的egg
文件前標示的Python
版本,選擇安裝。
pyenv
)安裝pyenv。如果選擇在Linux系統(tǒng)下使用Brida
,比如在Kali
里使用,推薦使用pyenv
進行python環(huán)境的版本管理,非常的方便,安裝方法參見pyenv的官方Github。
安裝Python。安裝Python的時候會踩幾個坑:
依賴庫
pyenv
在安裝Python時會從其源碼進行編譯,因此需要有依賴庫的支持,否則即使不報錯的安裝完,在運行的時候也會有問題。以Kali
為例(Ubuntu
、Debian
命令應該是一樣的,其他的Linux系統(tǒng)原理類似),需要安裝的庫可能有:
libbz2-dev librealine-dev zlib1g-dev libffi-dev libsqlite3-dev liblzma-dev
以上庫是我在安裝的過程中報錯信息里提示的,比如ModuleNotFoundError: No module named '_sqlite3'
下載安裝
在使用命令pyenv install 3.6.5
來安裝Python 3.6.5
時,會有如下顯示:
pentest@DESKTOP-2AE07FJ:~$ pyenv install 3.6.5
Downloading Python-3.6.5.tar.xz...
-> https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz
pyenv會去嘗試下載tar.gz
格式的源碼來進行編譯,一般情況下國內(nèi)網(wǎng)絡會非常緩慢,讓pyenv自己去下載會下到天荒地老,而且還有可能等了半小時之后給你彈一個error,非常討厭。
這時候可以拿著這個鏈接手動下載(Linux上可以安裝aria2
,使用方法百度很多)。
下載完畢后,在~/.pyenv/
路徑下新建文件夾cache
,并把下載好的tar.xz
文件放進去,再運行pyenv install 3.6.5
,就會跳過下載直接開始編譯安裝。
安裝完畢后,使用pyenv versions
查看,如果能看到列表,說明安裝成功。使用命令pyenv global 3.6.5
即可全局切換到Python 3.6.5
環(huán)境下。
安裝pyenv-virtualenv。此時就可以安裝Frida
了,但是推薦安裝pyenv
的插件virtualenv
,避免因為依賴組件版本沖突導致工具不能安裝的問題。virtualenv
的安裝參見官方Github。
安裝完畢后,使用命令pyenv virtualenv 3.6.5 frida
來創(chuàng)建一個基于Python 3.6.5
版本的、名為frida
的虛擬環(huán)境,并使用pyenv activate frida
來啟用它。
啟用成功后,命令行開頭會顯示一個括號:
Windows環(huán)境下,因為pyenv-win
支持不好,因此直接安裝即可:直接去官網(wǎng)下載對應版本的.msi
的安裝包,雙擊安裝。要注意的是,在安裝時不要勾選“Add Python 3.x to PATH”的選項,以免對當前系統(tǒng)中的環(huán)境造成影響。
由于不加入PATH,所以相對來說環(huán)境是獨立的,也算是比較方便好用了。
記住Python的安裝路徑,后面需要用到。
Python環(huán)境安裝完畢,可以開始安裝Frida了。此時需要準備階段下載的frida-12.8.17-py3.7-xxx-xxx.egg
文件。
理論上來說可以使用pip命令pip install frida==12.8.17
來進行安裝,但是可能會卡在Running setup.py install for frida ... -
不動,因此需要.egg
文件直接安裝。
Pyro4
是Brida
與Frida
通信的中間件,需要一并安裝。
在使用virtualenv切換環(huán)境后,直接輸入easy_install ~/Downloads/frida-12.8.17-py3.6-linux-x86_64.egg
即可。
使用命令pip install frida-tools
安裝frida-tools
。
使用命令pip install pyro4
安裝Pyro4
。
Windows環(huán)境下需要進入安裝步驟中的安裝路徑,如C:\Users\[用戶名]\AppData\Local\Programs\Python\Python37
,在此處打開命令行,輸入命令:
C:\Users\xx\AppData\Local\Programs\Python\Python37>.\Scripts\easy_install.exe C:\Users\xx\Downloads\frida-12.8.17-py3.7-win-amd64.egg
安裝Frida。安裝成功后,輸入.\Scripts\pip.exe install frida-tools
來安裝Frida-tools。
輸入.\Scripts\pip.exe install pyro4
安裝Pyro4
。
至此,Frida
和Frida-tools
均安裝完畢。
Brida
需要Burpsuite
支持,Community版本和Pro均可。安裝方法很簡單,可以直接在BApp Store
中安裝,也可以進入Brida的Releases頁面下載。這里使用Burpsuite中安裝的方式。
大坑預警!大坑預警!大坑預警!重要的事情說三遍!
由于Brida
編寫的時候支持Python2.7
,因此在3.6
/ 3.7
的環(huán)境下無法直接運行。2019年5月就有人在issues中提出這個問題,作者在2020年3月才進行了回答,并給出了一個解決方案:修改插件中的.py
文件,方法如下:
找到插件Brida_xxx.jar
文件。插件的根目錄:
后面的路徑是一致的:\bapps\2c0def96c5d44e159151b236de766892\build\libs
Windows:C:\Users\xx\AppData\Roaming\BurpSuite
Linux:~/.BurpSuite
用解壓工具打開brida-all.jar
,將/res
文件夾下的兩個文件(bridaServicePyro.py
、scriptBridaDefault.js
)解壓出來備用
編輯bridaServicePyro.py
,將內(nèi)容替換成以下代碼:
(): (, ): . = (, ): ..() ..() (, ): ..() ..() (, ): (., ) . : (, ): . = (,,,): . = . = == : . = .() : . = .() . = ..([.]) . = ..(.) .(., , ) : = .() . = ..() ..() (): ..(.) (): .(., , ) : = .() . = ..() ..() (): ..(.) (, , ): = (.., ) = [] : .() = () . (): () ..() . = (.) = .[] = (.[]) = .(=,=) = () = .(,=) () .()
該代碼出自Brida原作者,參見:https://github.com/federicodotta/Brida/issues/39#issuecomment-596064419
將bridaServicePyro.py
重新放回brida_all.jar
的/res
文件夾下(覆蓋原文件)。
將scriptBridaDefault.js
復制出來,并記住路徑。
至此,Brida
的Python3
適配部分完成。
打開Burpsuite
,切換到Brida
選項卡,頁面功能和用法可以參考[原創(chuàng)]Brida操作指南中的介紹。
“Python binary path”的值填寫“環(huán)境準備”章節(jié)中安裝的Python的位置。
Linux系統(tǒng)中,該路徑為~/.pyenv/versions/xxx/bin/python
Windows系統(tǒng)中,路徑為安裝的路徑,如C:\Users\xx\AppData\Local\Programs\Python\Python
此時,點擊“Start Server”按鈕,會顯示綠色的“Server running”,表示Pyro4
運行成功,可以進行操作了。
對于“Frida JS file path”這個選項,各種教程里都沒有提及它的含義,如果不管用它的默認值,或者指向自定義腳本,都無法“Spawn application”。
如果出現(xiàn)“getplatform”的錯誤,就說明是這個 JS 文件指定的有誤。
在它的官方說明頁面中,有如下說明:
“Frida JS file path” is the path of the Frida instrumentation JavaScript file, containing all Frida and Brida hooks and exports. To properly use Brida you have to insert the path of the JS file supplied with the Brida release (named “scriptBrida.js”) because this file contains Frida functions used by Brida itself. You can add your own Frida hooks and exports directly in this file.
簡單翻譯一下就是,這個Frida JS file path
需要指向一個包含F(xiàn)rida和Brida定義的Hook和Export的 JS 文件。這個文件保存在Brida-all.jar
中,就是上面步驟中保存的scriptBridaDefault.js
文件。
這里將“Frida JS file path”的地址指向之前保存的scriptBridaDefault.js
文件的路徑。
最后一步,在Android設備上啟動frida-server
,在Brida
中填好包名,“Spawn application”成功!
點擊Analyze binary
標簽頁,選中Binary
,點擊Load tree
按鈕,列出加載的.so
文件,成功!
Frida
版本更新很快,因此雖然一兩年前的工具,現(xiàn)在用起來也有諸多麻煩。在Linux平臺上使用pyenv
+ virtualenv
進行環(huán)境的管理配置會使配置簡單很多。
另外,根據(jù)Brida
作者的說法,在2020年6月會出一個支持Python3
的官方版本,可以到時候關注一下Github。
整個過程總結(jié)起來就是:
安裝Python
、Frida
、Pyro4
;
修改Brida-all.jar
,更改bridaServicePyro.py
文件;
提取scriptBridaDefault.js
,修改Frida JS file path
指向到提取的文件;
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。