『壹』 一文幫你解決APP抓包難題
一文幫你解決APP抓包難題在日常滲透過程中,我們經常會遇到瓶頸無處下手。如果攻擊者從公眾號或者APP進行突破,往往會有很多驚喜。然而,市場上的APP都會為防止別人惡意盜取和惡意篡改進行一些保護措施,比如模擬器檢測、root檢測、APK加固、代碼混淆、代碼反調試、反脫殼、簽名校驗等等對抗機制。面對這些挑戰,測試人員在滲透APP時通常會使用burp或Charles這類抓包工具進行抓包,查看請求記錄里的域名及鏈接地址是否可以進一步利用。但在遇到一些APP出現證書報錯或者抓不到包的情況時,該如何應對呢?本文將提供一些新的解決方案和思考,幫助你解決這類問題。
數字證書與HTTPS抓包
我們知道,HTTP協議傳輸的是明文信息,是可以直接捕獲的,從而造成了數據泄露。為了解決這個問題,HTTPS加密機制應運而生,它通過使用證書和數字簽名解決了中間人攔截的問題。在HTTPS中,證書驗證是確保數據安全的關鍵步驟。當遇到APP抓包難題時,了解如何應對APP的抓包對抗措施至關重要。
如何應對APP的抓包對抗
在進行HTTPS抓包時,首先需要導入用戶證書。這通常在使用burp時的第一步,即將burp的證書導出,並添加到瀏覽器的受信任根證書頒發機構中,以便信任burp發來的請求包並能夠修改數據。對於APP抓包,同樣需要將burp證書安裝到系統證書中。通常情況下,從SD卡安裝的證書會存放在用戶信任的憑據下。
Android系統對證書的處理
Android系統在不同的版本中對證書處理存在差異。在Android 7.0以前,應用默認信任系統證書和用戶證書。然而,從Android 7.0開始,系統僅信任系統證書。因此,如果手機運行的是Android 7.0以上版本,並且沒有綁定SSL證書,抓包時可能會出現問題。
解決Android 7.0以上版本的抓包問題
為了解決這一問題,可以將burp證書安裝到Android 7.1.2的用戶證書下。對於自簽名證書,需要先將其添加到系統證書中,才能正常訪問HTTPS網站。生成自簽名證書的方法可以參考相關教程。
證書有效期的問題
如果導入系統證書後仍無法抓取包,並且瀏覽器報出NET::ERR_CERT_VALIDITY_TOO_LONG錯誤,這可能是因為Chrome從2018年開始只信任有效期少於825天(27個月)的證書。遇到這種情況,可以創建一個有效期更短的root證書,然後通過burp重新導出證書並放入系統證書路徑下。
SSL Pinning與證書綁定
對於使用自簽名免費證書的APP,大部分開發者會在代碼中實現證書綁定(SSL Pinning)。這意味著APP會對發送請求的客戶端進行證書校驗,而非僅依賴系統和瀏覽器的校驗。當遇到這類問題時,可以嘗試以下方法進行解決:
代碼中校驗證書公鑰
開發人員經常將網路配置文件保存在特定位置,例如在XML目錄下。在反編譯後的XML目錄中,會有一個network_security_config.xml文件,該文件通常用於指定證書綁定的域名。檢查此文件中的校驗方式,以了解APP如何進行證書綁定。
使用Frida進行繞過
如果證書綁定邏輯在代碼中實現,可以使用Frida進行hook,繞過證書校驗邏輯,從而實現抓包。Frida是一種強大的動態代碼注入工具,允許在運行時修改或替換程序行為。通過hook關鍵的驗證函數,可以實現繞過邏輯。
總結與建議
通過本文的介紹,你將了解到如何解決APP抓包難題,包括應對數字證書與HTTPS抓包、解決Android系統對證書的處理、應對SSL Pinning與證書綁定問題。掌握這些解決方案和思考,將有助於你在滲透測試中更有效地進行抓包操作。