91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

如何使用Frida框架繞過Android應用程序的SSL Pinning

發布時間:2021-09-04 11:37:52 來源:億速云 閱讀:259 作者:chen 欄目:數據安全

這篇文章主要介紹“如何使用Frida框架繞過Android應用程序的SSL Pinning”,在日常操作中,相信很多人在如何使用Frida框架繞過Android應用程序的SSL Pinning問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何使用Frida框架繞過Android應用程序的SSL Pinning”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

大家好!本文我將詳細為大家解釋如何使用frida框架,繞過Android應用程序的SSL pinning。

以下是本文將涵蓋的內容:

Frida和SSL pinning簡介

要求

設置和安裝

Frida服務器設置

設置BurpSuite

推送代理的CA證書:

腳本注入繞過SSL pinning

步驟概述

疑難解答

Frida 和 SSL pinning 簡介

Frida是什么?

Frida官網上是這么說的:

它是針對本地APP的類似油猴插件的東西,用更專業的術語來說,它是一個動態代碼檢測toolkit。它可以讓你注入JavaScript代碼片段或者你自己的庫到Windows中的APP中,也可以注入到macOS,GNU/Linux,iOS,Android和QNX的APP中。Frida還提供了一些構建在Frida之上的簡單工具。這些工具你可以直接使用,也可以根據自己的需求來調整,或者是作為如何使用API的示例。

簡而言之,Frida就是一個讓你可以注入腳本到本地APP(此案例我們將注入到安卓APP中)中的工具,從而修改APP的行為(在這里例子中,我們可以繞過ssl pinning并執行中間人攻擊,即使APP使用的是HTTPS/SSL連接),并且實時的進行動態測試。

如今,大多數應用程序已在其移動應用中實現了SSL pinning。這是為什么呢?讓我們思考一個問題,假設我們要在設備和服務器之間安全地交換一些數據。SSL傳輸層加密將使數據傳輸安全可靠?在數據傳輸之前,如果服務器的SSL證書與請求的主機名和受信任的根證書匹配,則客戶端會檢查該證書。

如何使用Frida框架繞過Android應用程序的SSL Pinning

它不能確保提供的證書是服務器為請求的主機名提供的實際證書。因此,依賴設備的可信存儲證書不會使數據傳輸“安全”。

證書鎖定(Certificate pinning)是遠程服務器在應用程序本身中信任的硬編碼證書,因此它將忽略設備證書存儲,并將信任自己的硬編碼證書,進一步的應用程序將使用該硬編碼證書“安全地”與遠程服務器通信。

當我們對大多數移動應用程序的HTTP請求進行動態分析時,SSL pinning繞過是需要完成的主要步驟,因為現如今組織對數據隱私和通過網絡的數據安全傳輸變得更加重視,像一些來自中間人攻擊的威脅也成為了他們重點關注的對象。

Frida是一個框架,它將腳本注入到原生應用中,以在運行時操作應用程序的邏輯,這是一種更為動態的方法,可用于移動應用的滲透測試任務。

要求

在開始使用之前我們需要進行一些設置,第一次設置可能需要花點時間,但在此之后就會變得很輕松。如果你在任何一個步驟都出現了問題,都可以參考文章末尾的“疑難解答”部分。建議將所有下載的內容保存在一個文件夾中。

I. 已 root 的設備/模擬器:

我們需要一個已root的設備或模擬器,因為我們需要將腳本注入到設備的根目錄。我使用的是genymotion。Genymotion非常易于設置和使用,你可以在此處下載它。

一旦完成了genymotion的安裝,我們需要安裝一個Android設備(Android 7+)。我將使用具有以下配置的“Google pixel XL”設備。

如何使用Frida框架繞過Android應用程序的SSL Pinning

II. Python frida 包安裝:

從這里安裝Python for Windows。

我們需要為frida服務器安裝一些python包。在終端中輸入以下命令:

python -m pip install Fridapython -m pip install objectionpython -m pip install frida-toolsorpip install Fridapip install objectionpip install frida-tools

III.平臺工具(adb):

從此處下載用于Windows的平臺工具。

如何使用Frida框架繞過Android應用程序的SSL Pinning

IV. 下載注入腳本:

從此處下載我們將推送到設備用于注入目標應用的注入腳本。

或者可以將此代碼另存為fridascript.js,保存在與adb相同的文件夾中。

/*Android SSL Re-pinning frida script v0.2 030417-pier$ adb push burpca-cert-der.crt /data/local/tmp/cert-der.crt$ frida -U -f it.app.mobile -l frida-android-repinning.js --no-pausehttps://techblog.mediaservice.net/2017/07/universal-android-ssl-pinning-bypass-with-frida/UPDATE 20191605: Fixed undeclared var. Thanks to @oleavr and @ehsanpc9999 !*/setTimeout(function(){Java.perform(function (){console.log("");console.log("[.] Cert Pinning Bypass/Re-Pinning");var CertificateFactory = Java.use("java.security.cert.CertificateFactory");var FileInputStream = Java.use("java.io.FileInputStream");var BufferedInputStream = Java.use("java.io.BufferedInputStream");var X509Certificate = Java.use("java.security.cert.X509Certificate");var KeyStore = Java.use("java.security.KeyStore");var TrustManagerFactory = Java.use("javax.net.ssl.TrustManagerFactory");var SSLContext = Java.use("javax.net.ssl.SSLContext");// Load CAs from an InputStreamconsole.log("[+] Loading our CA...")var cf = CertificateFactory.getInstance("X.509");try {var fileInputStream = FileInputStream.$new("/data/local/tmp/cert-der.crt");}catch(err) {console.log("[o] " + err);}var bufferedInputStream = BufferedInputStream.$new(fileInputStream);var ca = cf.generateCertificate(bufferedInputStream);bufferedInputStream.close();var certInfo = Java.cast(ca, X509Certificate);console.log("[o] Our CA Info: " + certInfo.getSubjectDN());// Create a KeyStore containing our trusted CAsconsole.log("[+] Creating a KeyStore for our CA...");var keyStoreType = KeyStore.getDefaultType();var keyStore = KeyStore.getInstance(keyStoreType);keyStore.load(null, null);keyStore.setCertificateEntry("ca", ca);// Create a TrustManager that trusts the CAs in our KeyStoreconsole.log("[+] Creating a TrustManager that trusts the CA in our KeyStore...");var tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();var tmf = TrustManagerFactory.getInstance(tmfAlgorithm);tmf.init(keyStore);console.log("[+] Our TrustManager is ready...");console.log("[+] Hijacking SSLContext methods now...")console.log("[-] Waiting for the app to invoke SSLContext.init()...")SSLContext.init.overload("[Ljavax.net.ssl.KeyManager;", "[Ljavax.net.ssl.TrustManager;", "java.security.SecureRandom").implementation = function(a,b,c) {console.log("[o] App invoked javax.net.ssl.SSLContext.init...");SSLContext.init.overload("[Ljavax.net.ssl.KeyManager;", "[Ljavax.net.ssl.TrustManager;", "java.security.SecureRandom").call(this, a, tmf.getTrustManagers(), c);console.log("[+] SSLContext initialized with our custom TrustManager!");}});},0);

設置和安裝:

I. 將設備連接到 adb:

我們需要將設備連接到adb以在設備上運行命令。但首先轉到settings >> Developer options,并在設備中啟用調試模式,以便adb可以與設備通信。

轉到已提取平臺工具的文件夾,然后運行以下命令將設備連接到adb

//adb connect <ip of device:port>adb connect 192.168.1.190:5555

如果設備中出現彈出窗口,請單擊“允許Allow”。

如何使用Frida框架繞過Android應用程序的SSL Pinning

檢查設備是否已連接到adb:

adb devices

你應該能夠看到設備的IP以及名稱。

II.下載 frida 服務器以獲取支持 Android 設備的 arch 版本:

我們需要根據我們設備的arch版本,為我們的Android設備下載frida服務器包。

要查找設備的arch版本,請運行以下命令。

adb shell getprop ro.product.cpu.abi

如果設備配置與上面提到的相同,請下載:

frida-server-12.4.7-android-x86.xzfrida-server-12.4.7-android-x86_64.xz

IV. 在設備中安裝目標應用程序。

在我們的設備中安裝需要繞過SSL pinning的應用程序。打開應用程序并使其在后臺運行。

Frida 服務器設置:

在注入腳本之前,我們需要在設備中運行frida服務器。請按照以下步驟操作:

I. 將 frida-server 推送到設備:

現在,我們需要將我們的frida-server文件推送到設備中。復制adb文件夾中的“frida-server-12.4.7-android-x86.xz”文件并運行以下命令。

//adb push <path_of_frida_server_folder><space></data/local/tmp>adb push C:\ADB\frida-server /data/local/tmp

II. 授予 frida-server 權限:

adb shell chmod 777 /data/local/tmp/frida-server

設置 BurpSuite:

請遵循本指南為android設備在burp中設置代理。

推送代理的 CA 證書:

為了能夠攔截流量,frida需要訪問我們的Burpsuite CA證書。我們將在BurpSuite Setup中推送在步驟5中下載的相同證書。

將證書推送到設備并放置在與frida-server相同的位置,將其命名為cert-der.crt(因為此名稱和路徑已在fridascript.js中提到,這樣可以避免一些不必要的問題)

// adb push <path to cacert.der> /data/local/tmp/cert-der.crtadb push cacert.der /data/local/tmp/cert-der.crt

腳本注入繞過SSL pinning:

現在,讓我們將fridascript.js注入目標應用程序。

I. 將 fridascript.js 腳本推送到設備:

將fridascript.js復制到adb文件夾,并運行以下命令將fridascript.js推送到設備中。

//adb push <path_to_fridascript.js_folder> /data/local/tmpadb push C:\ADB\fridascript.js /data/local/tmp

II. 檢查并運行設備中的 frida 服務器

adb shell /data/local/tmp/frida-server &

III. 列出設備上所有正在運行的進程

現在,我們需要找出目標應用程序的ID。我們將列出設備上所有正在運行的服務,包括你的應用程序進程。

打開一個新的終端,并鍵入以下命令。

frida-ps -U

IV. 找到你應用程序的包名稱。

如何使用Frida框架繞過Android應用程序的SSL Pinning

V. 將 fridascript.js hook 到目標應用程序中:

最后,我們將使用以下命令將fridascript.js hook到原生應用程序中:

//frida -U -f <your_application_package_name> -l <path_to_fridascript.js_on_your_computer> --no-pausfrida -U -f com.twitter.android -l D:\frida\fridascript.js --no-paus

如何使用Frida框架繞過Android應用程序的SSL Pinning

VI. 繞過!

如果一切順利,那么目標應用程序的所有流量都將被BurpSuite攔截。

如何使用Frida框架繞過Android應用程序的SSL Pinning

簡而言之:

1. 在genymotion上下載并安裝設備

2. 安裝frida和objection工具

python -m pip install Frida python -m pip install frida-tools python -m pip install objection or pip install Frida pip install frida-tools pip install objection

3. 下載adb平臺工具

4. 下載frida注入腳本

5. 將設備連接到adb

//adb connect <ip of device:port>

6. 下載frida服務器以獲取支持Android設備的arch版本

7. 找出設備的arch版本

adb shell getprop ro.product.cpu.abi

8. 在設備中安裝目標應用程序。

9. 將frida-server推送到設備:

//adb push <path of frida-server folder><space></data/local/tmp>

10. 授予frida-server權限:

adb shell chmod 777 /data/local/tmp/frida-server

11. 設置burpsuite

12. 推送代理的CA證書

// adb push <path to cacert.der> /data/local/tmp/cert-der.crt

13. 將fridascript.js推送到設備:

//adb push <path to fridascript.js folder> /data/local/tmp

14. 檢查并運行設備中的frida服務器

adb shell /data/local/tmp/frida-server &

15. 列出設備上所有正在運行的進程:

frida-ps -U

16. 找到你應用程序的包名稱

17. 將fridascript.js hook到目標應用程序中

//frida -U -f <your_application_package_name> -l <path_to_fridascript.js_on_your_computer> --no-paus

18. 在BurpSuite中攔截流量。

疑難解答

1. ADB 守護程序無法連接

如果發生如下錯誤:

adb devicesadb server is out of date. killing...cannot bind 'tcp:5037'ADB server didn't ACK*failed to start daemon*error:

i. 打開 environment System properties>>Advanced>>Environment Variables

ii. 單擊路徑并刪除C:/Android條目或指向adb工具的路徑

iii. 將所有平臺工具復制到genymotion>>tools文件夾中

iv. 創建新路徑并添加genymotion>>tools文件夾的路徑。

2. frida/ pip 不被識別為內部或外部命令

i. 打開 environment System properties>>Advanced>>Environment Variables

ii. 創建新路徑并添加Python>>script文件夾的路徑

3. 將應用程序安裝到設備時出現 Arm translation error。

i. 從此處下載arm translation文件

ii. 將文件拖放到設備模擬器中,或是在使用物理設備時從恢復中刷新此文件

iii. 重啟設備后,你將能夠拖放安裝目標應用程序

4.Failed to spawn:spawn Android apps 時不支持 argv 選項

檢查計算機上的fridascript.js路徑。路徑可能不正確。你必須給出fridascript.js文件的絕對路徑。

5. frida 服務器已啟動但無法列出服務

斷開并重新連接設備中的wifi。

到此,關于“如何使用Frida框架繞過Android應用程序的SSL Pinning”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

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

AI

四平市| 汉源县| 佛学| 都昌县| 伊川县| 宜城市| 图木舒克市| 民勤县| 德令哈市| 丘北县| 盐城市| 泽州县| 重庆市| 华坪县| 漾濞| 永康市| 屯门区| 顺平县| 通许县| 嘉峪关市| 临江市| 政和县| 香格里拉县| 娱乐| 嘉定区| 保德县| 普陀区| 奈曼旗| 鞍山市| 大连市| 新平| 楚雄市| 将乐县| 本溪市| 伊宁县| 林周县| 乌海市| 福贡县| 新绛县| 犍为县| 新晃|