在Android手機上安裝Frida框架,篡改 SSLContext
本文我會向你展示一個相當簡單的方法,該方法能繞過所有Android移動設備的「證書鎖定」(certificate pinning)。本文描述的方法是基於Piergiovanni Cipolloni的研究文章和他開發的腳本。如果需要在Android手機上繞過認證,都要涉及SSLContext。本文會講解一種通過調用Frida並操縱SSLContext來構建一個能夠在Android上普遍繞過證書鎖定的腳本。
簡單地說,腳本的運行分以下3步:
1.它會從文件系統(Burpsuite的CA證書)中載入一個流氓證書;
2.它會創建一個包含用戶信任的CA密鑰庫(Keystore);3.最後,它會創建一個TrustManager,它會信任用戶的密鑰庫中的CA。
每當應用程序初始化其SSL Contex時,Frida腳本都會劫持sslcontext.init()方法,當它被調用時,第二個參數即應用程序TrustManager會出現。在Android上,SSLContext函數調用又被稱為SSLContext.init(KeyManager,TrustManager,SecuRandom)。
對於初學者來說,要理解Piergiovanni Cipolloni的方法會顯得很困難。因此,為了讓這部分讀者能讀懂,我特意加了一些基本知識在裡面。
本文會包含以下7方面內容:
1.如何將Burp證書安裝到你的設備上;
2.如何為移動設備配置Burpsuite;3.如何在你的Android設備上安裝Frida;4.如何遠程運行Frida伺服器;5.如何在你的伺服器上安裝Frida;6.如何使用應用程序調用腳本;7.為什麼要進行證書鎖定。
通過證書鎖定,開發人員可以確保其應用程序不接受實際由官方認證機構簽名的假證書。 由於Android系統本身只檢查證書的層次結構是否正確以及是否在所謂的「信任證書存儲庫」中體現CA的標識,所以如果攻擊者將偽造的CA標識嵌入到信任存儲庫,那後果不堪設想。如果發生以上的攻擊,攻擊者基本上就能夠攔截應用程序的整個HTTPS傳輸。為此,開發人員才會進一步,在應用程序中編譯真實證書,並確保應用程序只使用該證書。
構建運行環境:
1.你需要一台Android虛擬機或真實設備;
2.一些空閑時間;3.安裝並配置ADB / Android 工具。
安裝Burp證書
使用Burpsuite運行瀏覽器(默認值:127.0.0.1:8080),然後單擊CA認證。
這時一個名為cacert.der的文件會被下載,不過下載後該文件會被重命名為cacert.cer,關於cacert.der和cacert.cer的區別,簡而言之,就是一種替代關係,如要詳細了解,請點此。
如果你的運行設備是Mac,而且默認下載目錄就是「下載」,就可以執行以下操作:
1.cd / Downloads,將你的目錄更改為「下載」;
2.mv cacert.der cacert.cer,重命名證書;3.adb push cacert.cer / mnt / sdcard / DCIM /,將證書複製到設備的SD卡。
接著,在設備上(無論是虛擬的還是實際的),你必須安裝證書才能將其放入Android的信任證書存儲庫中。
具體操作步驟是這樣的:點擊菜單按鈕→進入設置→一直向下滾動到安全→選擇從SD卡安裝。
點擊cacert.cer並命名證書,例如命名為Burp。如果一切正常,你應該在設置→安全→可信憑證→用戶下看到以下顯示。
這樣,你就成功地將自己的CA安裝到系統中。
配置Burpsuite
現在你已經在系統上安裝了PortSwigger CA,為此需要先設置代理,以便攔截應用程序伺服器的流量。
設置你的Android設備
再次進入設置→點擊Wi-Fi→點擊WiredSSID→點擊修改網路 →點擊代理→選擇手動設置,這樣屏幕就會出現以下信息列表。
你需要填寫的內容如下:
1.你的Burp Suite應用程序的IP地址是代理主機名嗎;
2.埠是否啟動了Burp Suite(默認為8080)。
設置Burp
在默認情況下,Burp會在主機埠8080上打開一個本地代理,以攔截你的移動流量。為此,你必須設置Burp來監聽外部IP地址。啟動Burpsuite並轉到代理項,然後選項當前配置(如下圖所示),最後進行編輯。
現在選擇特定地址選項並選擇你的本地IP地址,比如我的就是192.168.0.193,而對於讀者來說,這取決於你的DHCP伺服器如何分配地址。
如果你不確定你的IP地址是哪個,以OSX為例,請打開終端並輸入ifconfig en0 | grep inet命令進行查找。
如果你按著我說的步驟下來,那麼你現在就可以無需證書鎖定來攔截應用程序流量了。
在你的Android設備上安裝Frida
這一步要進行的就是繞過證書鎖定了,為此你需要在你的Android設備上安裝一個Frida-Server的副本。首先,你需要下載最新版本的Frida-Server,點此進行下載。不過,問題來了你需要知道下載的版本,是x86還是x86_64,在此,我告你一個簡單方法:只需要輸入adb shell getprop ro.product.cpu.abi即可找出正確的版本,比如我就是x86。所以對我來說,正確的版本是frida-server-10.6.15-android-x86.xz。你可能會會注意到.xz擴展名是一個檔案文件,所以,在使用二進位文件之前,我們首先要對它進行解析。對於資深用戶來說,你只需輸入tar -xJf frida-server-10.6.15-android-x86命令,然後使用 MAC解壓神器The Unarchiver即可。在解析該二進位文件以後,你就需要使用終端了。
1.mv frida-server-10.6.15-android-x86 frida-server,將其重命名為frida-server;
2.adb root,確保你的環境能夠以root身份運行命令;3. adb push frida-server /data/local/tmp/,將frida-server二進位文件複製到設備;4.adb shell「chmod 755 / data / local / tmp / frida-server」,為二進位文件系統提供正確的許可權;
5.adb shell「/ data / local / tmp / frida-server&」 – 在後台將frida-server作為一個服務運行; 5.1. 如果要在外部IP上運行frida-server就要輸入 adh shell "/data/local/tmp/frida-server –listen 0.0.0.0 &命令。
在你的設備上安裝Frida
不管你用的是什麼設備,你都需要執行sudo pip來安裝Frida。
為驗證你是否安裝了Frida(不管是遠程還是本地),你都需要執行frida-ps。此時會顯示一個ps命令,該命令將在你的設備上生成當前正在運行的進程列表。
如果通過USB連接則會顯示frida-ps U;
如果你在外部地址使用frida ,那無論你手機的地址是什麼,都會顯示frida-ps -H 192.*.*.*。
如果你看到類似以下的輸出:
那證明你可以準備繞過「證書鎖定」了。
為了證明我的判斷,我將在這裡使用一個隨機應用程序,如果你想要看更多的實踐案例,可以在Hackerone,Bugcrowd,Synack或Zerocopter上找到。
為了繞過證書鎖定,我需要通過Piergiovanni Cipolloni編寫的Android SSL Re-pinning Frida腳本來實現,該腳本可以在這裡找到。
使用Frida繞過證書鎖定
首先,我需要在設備上安裝我的目標,這可以通過多種方式完成:
1.從Google應用商店中下載安裝應用程序;
2.使用Apkpure或apk-dl下載應用程序。
下載完以後,打開終端並使用adb install com.company.whatever.apk安裝應用程序。
下一步是從應用程序中選擇你的目標,就像我之前所講的那樣,可以使用frida-ps -H 192.*.*.*用於遠程Frida伺服器,如果你是通過USB連接設備的,請使用frida-ps -U。接下來,我需要做的就是創建一個以前生成的cacert.cer的副本,如果你完全是按著我的步驟來做的,那此時cacert.cer的副本仍然位於「下載」文件夾中。
最後打開終端,進行以下5步操作:
1.通過cd Downloads命令,把「cacert.cer」移動到「下載」文件夾;
2.通過mv cacert.cer burpca-cert-der.crt 命令來進行重命名,以匹配Frida腳本中的文件;3.通過wget https://techblog.mediaservice.net/wp-content/uploads/2017/07/frida-android-repinning_sa-1.js命令下載Frida腳本;4.通過adb push burpca-cert-der.crt /data/local/tmp/cert-der.crt命令將流氓證書推送到設備;5. 通過frida -U -f it.app.mobile -l frida-android-repinning_sa-1.js –no-pause命令實現繞過。
如果看到以下輸出,就意味著你可以繞過所有Android移動目標的「證書鎖定」。
本文翻譯自 https://blog.it-securityguard.com/the-stony-path-of-android-%F0%9F%A4%96-bug-bounty-bypassing-certificate-pinning/ ,如若轉載,請註明原文地址: http://www.4hou.com/mobile/8159.html 更多內容請關注「嘶吼專業版」——Pro4hou
推薦閱讀:
※如何看待蘋果公開信:反對美國政府「給 iPhone 安裝後門」的命令?
※指紋支付為什麼沒有推廣?
※Linux曝高危漏洞 長按Enter鍵70秒即可獲取root許可權
※斯諾登的安卓安全工具是怎麼一回事?
※挑戰4個任務:迅速上手Unicorn Engine
TAG:信息安全 |