溫馨提示×

溫馨提示×

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

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

Brida Python3環(huán)境下的不完全折騰手冊

發(fā)布時間:2021-12-04 10:47:32 來源:億速云 閱讀:228 作者:柒染 欄目:網(wǎng)絡安全

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)在記錄下來,與大家分享。

可以說安裝的過程中每一步都是坑,接下來慢慢分享~

環(huá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/。

Brida Python3環(huán)境下的不完全折騰手冊

在這個列表中找到相應的版本12.8.17,并查看文件名。比如:

Brida Python3環(huán)境下的不完全折騰手冊

比如你是在Windows 64位平臺使用,就下載frida-12.8.17-py3.7-win-amd64.egg,Linux平臺就下載相應的egg即可。

安裝Python

根據(jù)上面查看到的egg文件前標示的Python版本,選擇安裝。

Linux系統(tǒng)(基于pyenv

安裝pyenv。如果選擇在Linux系統(tǒng)下使用Brida,比如在Kali里使用,推薦使用pyenv進行python環(huán)境的版本管理,非常的方便,安裝方法參見pyenv的官方Github。

安裝Python。安裝Python的時候會踩幾個坑:

  1. 依賴庫

    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'

  2. 下載安裝

    在使用命令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來啟用它。

啟用成功后,命令行開頭會顯示一個括號:

Brida Python3環(huán)境下的不完全折騰手冊

Windows環(huán)境

Windows環(huán)境下,因為pyenv-win支持不好,因此直接安裝即可:直接去官網(wǎng)下載對應版本的.msi的安裝包,雙擊安裝。要注意的是,在安裝時不要勾選“Add Python 3.x to PATH”的選項,以免對當前系統(tǒng)中的環(huán)境造成影響。

Brida Python3環(huán)境下的不完全折騰手冊

由于不加入PATH,所以相對來說環(huán)境是獨立的,也算是比較方便好用了。

記住Python的安裝路徑,后面需要用到。

安裝Frida、Frida-tools和Pyro4

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文件直接安裝。

Pyro4BridaFrida通信的中間件,需要一并安裝。

Linux環(huán)境

在使用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

Brida Python3環(huán)境下的不完全折騰手冊

Windows環(huán)境

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。

至此,FridaFrida-tools均安裝完畢。

配置Brida

Brida需要Burpsuite支持,Community版本和Pro均可。安裝方法很簡單,可以直接在BApp Store中安裝,也可以進入Brida的Releases頁面下載。這里使用Burpsuite中安裝的方式。

適配Python3

大坑預警!大坑預警!大坑預警!重要的事情說三遍!

由于Brida編寫的時候支持Python2.7,因此在3.6 / 3.7的環(huán)境下無法直接運行。2019年5月就有人在issues中提出這個問題,作者在2020年3月才進行了回答,并給出了一個解決方案:修改插件中的.py文件,方法如下:

  1. 找到插件Brida_xxx.jar文件。插件的根目錄:

    后面的路徑是一致的:\bapps\2c0def96c5d44e159151b236de766892\build\libs

    • Windows:C:\Users\xx\AppData\Roaming\BurpSuite

    • Linux:~/.BurpSuite

  2. 用解壓工具打開brida-all.jar,將/res文件夾下的兩個文件(bridaServicePyro.py、scriptBridaDefault.js)解壓出來備用

  3. 編輯bridaServicePyro.py,將內(nèi)容替換成以下代碼:

     
     
     
     
    
    
    
    
     ():
        (, ):
           . = 
        (, ):
           ..()
           ..()
        (, ):
           ..()
           ..()
        (, ):
            (., )
    
    .
     :
         (, ):
            . = 
         (,,,):
    
            . = 
            . = 
    
              == :
                . = .()
            :
                . = .()
    
            . = ..([.])
    
            . = ..(.)
    
             .(., , )  :
                 = .()
    
            . = ..()
            ..()
    
            
    
         ():
    
            ..(.)
    
            
    
         ():
    
             .(., , )  :
                 = .()
    
            . = ..()
            ..()
    
            
    
         ():
    
            ..(.)
            
    
         (, , ):
             = (.., )
    
            
            
             = []
               :
                .()
    
             = ()
             
    
        .
         ():
            ()
            ..()
    
    
    . = (.)
    
     = .[]
     = (.[])
     = .(=,=)
    
    
     = ()
     = .(,=)
    
    ()
    .()

    該代碼出自Brida原作者,參見:https://github.com/federicodotta/Brida/issues/39#issuecomment-596064419

  4. bridaServicePyro.py重新放回brida_all.jar/res文件夾下(覆蓋原文件)。

  5. scriptBridaDefault.js復制出來,并記住路徑。

至此,BridaPython3適配部分完成。

Brida配置

打開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”。

Brida Python3環(huán)境下的不完全折騰手冊

如果出現(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設備并Spawn application

最后一步,在Android設備上啟動frida-server,在Brida中填好包名,“Spawn application”成功!

Brida Python3環(huán)境下的不完全折騰手冊

點擊Analyze binary標簽頁,選中Binary,點擊Load tree按鈕,列出加載的.so文件,成功!

Brida Python3環(huán)境下的不完全折騰手冊

總結(jié)

Frida版本更新很快,因此雖然一兩年前的工具,現(xiàn)在用起來也有諸多麻煩。在Linux平臺上使用pyenv + virtualenv進行環(huán)境的管理配置會使配置簡單很多。

另外,根據(jù)Brida作者的說法,在2020年6月會出一個支持Python3的官方版本,可以到時候關注一下Github。

整個過程總結(jié)起來就是:

  1. 安裝Python、FridaPyro4;

  2. 修改Brida-all.jar,更改bridaServicePyro.py文件;

  3. 提取scriptBridaDefault.js,修改Frida JS file path指向到提取的文件;

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

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

AI