當前位置:
首頁 > 最新 > 如何繞過安卓的網路安全配置功能

如何繞過安卓的網路安全配置功能

隨著Nougat(Android 7)的發布 ,一個名為「Network Security Configuration」的新安全功能也隨之而來。這個新功能的目標是允許開發人員在不修改應用程序代碼的情況下自定義他們的網路安全設置。SSL/TLS的連接的默認配置中還包含了其他修改;如果應用程序的SDK高於或等於24,則只有系統證書才會被信任。

以上所有都會影響Android移動應用程序評估的執行方式。如果需要攔截HTTPS流量,則必須安裝代理證書,但其會安裝在』用戶證書』的container中,默認情況下不受信任。在這裡,我們將著重解釋新機制如何工作,以及如何通過重新編譯應用程序以及在運行時hook一些機制來修改默認行為。這些步驟對攔截應用程序與伺服器之間的HTTPS流量至關重要。

如何作為開發者使用該功能

要修改默認配置,必須在resources目錄中創建一個指定自定義配置的XML文件。 下面的代碼片段顯示了一個配置文件示例,該配置文件指定用戶證書來管理應用程序生成的所有HTTPS連接。

如何作為滲透測試者繞過該功能


如果要評估的應用程序在Android 7或更高版本上執行,並且targetSdkVersion鍵被配置為24(Android 7)或更高版本,則應用程序可能使用默認配置。因此,應用程序不會信任用戶證書(即代理CA證書)。修改默認配置的常用方法是在插入XML後重新編譯應用程序,這將激活證書container的使用。一旦我們有了APK,這個過程就可以通過使用apktool來實現,它允許應用程序被修改。

首先使用apktool反編譯應用程序,完成該過程後,resources目錄中必須創建一個XML文件,AndroidManifest.xml文件也必須被修改以指向Network Security Configuration文件。完成後,我們可以使用apktool重新編譯應用程序,並使用Java JDK提供的jarsigner工具對生成的APK文件進行簽名。

當使用任意證書重新簽名APK時,可以使用adb(Android Debug Bridge)將其安裝在手機中。 如果移動端被配置為通過中間代理(如Burp Suite)發送流量,那麼只要CA證書安裝在系統上,就可以攔截HTTPS流量。


值得注意的是,在某些情況下,上述場景可能無法實現的。例如,如果應用程序使用sharedId共享另一個應用程序的相同ID並因此直接訪問其數據,那麼Android會將我們的場景限制為僅由相同證書籤名的應用程序。此時將應用程序重新編譯並重新簽名是無法完成的,因為無法使用應用程序開發人員使用的原始證書對已修改的APK進行簽名。

對於這種場景,動態檢測會有點用,因為它允許修改運行時的應用程序行為,而不修改應用程序本身。要實施此過程,我們要創建一個Frida腳本,用於適應目標SDK版本的應用程序上的Network Security Configuration默認行為。

DefaultConfigSource類(在ManifestConfigSource類中定義為私有類)是在未使用XML文件修改配置時使用的類。

從構造函數中可以看出,它接收三個參數,其中一個針對應用程序的SDK版本。該值用於使用getDefaultBuilder()方法構建NetworkSecurityConfig類,方法顯示在下一段代碼中。可以看出,如果targetSdkVersion小於或等於SDK版本23(Android Marshmallow即Android 6.0),那麼最後一段代碼將載入用戶證書。

考慮到這一點,我們可以創建一個Frida腳本來hook DefaultConfigSource類的構造函數並更改targetSdkVersion變數的值。此外,即使一些代碼將來會更改此構造函數,該腳本也會hook到getDefaultBuilder()方法以確保該值被修改。

此時,通過使用Frida載入上述腳本,可以生成面向SDK 24或更高版本的Android應用程序,然後可以使用HTTP代理(例如Burp Suite)攔截流量。

*參考來源:nccgroup,ibotpeaches,Covfefe編譯,轉載請註明來自FreeBuf.COM

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

TAG:FreeBuf |