您好,登錄后才能下訂單哦!
本篇文章為大家展示了四種繞過iOS SSL驗證和證書固定的方法分別是什么,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
在下面的例子中,我將使用Burp Suite作為我的Web代理。本文假設讀者對iOS,Xcode,設置手機和在iOS使用Burp攔截HTTP流量有基本的了解。我將為大家介紹以下四種,繞過iOS中的SSL驗證和證書固定的方法:
安裝自己的CA證書是擺脫SSL errors的第一步。在iOS中安裝CA證書相對容易。首先,要做的就是將CA證書放到設備上。這可以通過打開電子郵件附件或下載證書來完成。然后,我們需要配置移動設備和Web代理,以攔截經過的網絡流量。具體來說對于Burp Suite,你只需在瀏覽器中訪問http://burp并單擊“CA Certificate”即可。
接下來,系統將提示你“Install”證書,如下所示。
單擊“Install”按鈕后,會提示將要安裝的證書添加到受信任證書列表中的警告。
你可以進入Settings > General > Profile來驗證證書是否已被成功安裝。
如果仍出現SSL errors,或應用程序本身因為等待連接而發生卡死現象,則應用程序服務器可能正在使用某種TLS鏈驗證或SSL證書固定。繞過SSL證書固定的最簡單方法是,安裝易于使用的工具軟件來幫我們完成這個過程。以下是我所使用的兩款工具:
SSLKillSwitch
Burp Mobile Assistant
具體的安裝大家直接參考工具的安裝說明即可。但使用這些方法,我們需要越獄的iOS設備。近年來,隨著蘋果公司對iOS設備安全性的不斷增強,越獄的難度也變得越來越大。
另一種已驗證過的方法是使用Frida hooks 和 Objection.。Frida是一個非常先進的框架,允許你在運行時干擾應用程序的代碼。但Frida需要設備越獄后才能使用。但是,我們可以使用具有完整框架庫的Frida Gadget,這樣我們就不需要越獄設備了。Objection是這個框架的包裝器,將為我們自動化的完成所有工作。
首先,我們需要Apple Developer帳戶的有效配置文件和代碼簽名證書。你可以通過在Xcode中創建測試應用程序來創建有效的配置文件,并在這里注冊免費的開發人員帳戶。
創建測試項目后,下一步是設置代碼簽名證書。首先,打開Xcode首選項,然后選擇“Accounts”。要添加Apple ID帳戶,請單擊左下角的加號并登錄你的帳戶。然后單擊右下角的“Manage Certificates”。
單擊該按鈕后,將會跳轉到以下界面。要創建證書,請單擊左下方框中的加號,然后選擇“iOS Development”。加載后,單擊“Done”,然后單擊“Download Manual Profiles”,將證書加載到計算機上。
將代碼簽名證書加載到計算機上后,我們可以通過運行以下命令來找到它:
NetSPIs-MacBook-Pro:Test netspi$ security find-identity Policy: X.509 Basic Matching identities 1) A[REDACTED]1 "iPhone Developer: [REDACTED]@netspi.com ([REDACTED])" 2) 0[REDACTED]C "iPhone Developer: [REDACTED]@netspi.com ([REDACTED])" 2 identities found Valid identities only 1) A[REDACTED]1 "iPhone Developer: [REDACTED]@netspi.com ([REDACTED])" 2) 0[REDACTED]C "iPhone Developer: [REDACTED]@netspi.com ([REDACTED])" 2 valid identities found
我們想要加載Frida Gadget動態庫,以能夠在運行時修改應用程序。在iOS應用程序的上下文中,我們想要提取IPA文件,修改二進制文件以加載FridaGadget.dylib,對二進制文件和dylib進行代碼簽名,然后重新打包更新的IPA文件。如上所述,我們可以使用Objection來自動幫我們完成所有這些工作。只需運行以下簡單命令即可,其中-s是IPA文件,-c是代碼簽名證書。
NetSPIs-MacBook-Pro:NetSPI netspi$ objection patchipa -s netspi_test.ipa -c 0[REDACTED]C Using latest Github gadget version: 12.0.3 Remote FridaGadget version is v12.0.3, local is v12.0.1. Downloading... Downloading from: https://github.com/frida/frida/releases/download/12.0.3/frida-gadget-12.0.3-ios-universal.dylib.xz Downloading iOS dylib to /Users/netspi/.objection/ios/FridaGadget.dylib.xz... Unpacking /Users/netspi/.objection/ios/FridaGadget.dylib.xz... Cleaning up downloaded archives... Patcher will be using Gadget version: 12.0.3 No provision file specified, searching for one... Found provision file /Users/netspi/Library/Developer/Xcode/DerivedData/test-fbleootdcdwdyafhyzjmvihvfiga/Build/Products/Debug-iphoneos/test.app/embedded.mobileprovision expiring in 307 days, 1:40:03.015176 Found a valid provisioning profile Working with app: NetSPI.app Bundle identifier is: com.netspi.test Codesigning 13 .dylib's with signature 0[REDACTED]C Code signing: libswiftDarwin.dylib Code signing: libswiftUIKit.dylib Code signing: libswiftCoreImage.dylib Code signing: libswiftos.dylib Code signing: libswiftObjectiveC.dylib Code signing: libswiftCoreGraphics.dylib Code signing: FridaGadget.dylib Code signing: libswiftCore.dylib Code signing: libswiftCoreFoundation.dylib Code signing: libswiftMetal.dylib Code signing: libswiftQuartzCore.dylib Code signing: libswiftFoundation.dylib Code signing: libswiftDispatch.dylib Creating new archive with patched contents... Codesigning patched IPA... Cannot find entitlements in binary. Using defaults Copying final ipa from /var/folders/1k/mw7w1kfd4c96jkvkw5mp3qfm0000gn/T/netspi_test-frida-codesigned.ipa to current directory... Cleaning up temp files...
一旦命令執行完畢,就會為我們生成一個名為netspi_test-frida-codesigned.ipa的新IPA文件,我們可以將其部署到iOS設備上。有一個名為ios-deploy的工具,可以和未越獄的iOS設備配合使用。我們可以使用多種不同的選項,具體取決于你要完成的任務(例如,運行調試器,通過USB部署應用程序等)。
要使用ios-deploy,我們需要解壓縮IPA文件并運行ios-deploy命令。在下面的示例中,我指定了我想通過USB (-W)部署應用程序,以及我要部署的包(-b)。
NetSPIs-MacBook-Pro:NetSPI netspi$ ios-deploy -W -b ./Payload/NetSPI.app [....] Waiting for iOS device to be connected [....] Using 3ff9c90d2b23beadeefdf7bc240211730c84adef (P105AP, iPad mini, iphoneos, armv7) a.k.a. 'MAPen's iPad'. ------ Install phase ------ [ 0%] Found 3ff9c90d2b23beadeefdf7bc240211730c84adef (P105AP, iPad mini, iphoneos, armv7) a.k.a. 'MAPen's iPad' connected through USB, beginning install [ 5%] Copying /Users/netspi/test/NetSPI/Payload/NetSPI.app/META-INF/ to device [TRUNCATED] [ 52%] CreatingStagingDirectory [ 57%] ExtractingPackage [ 60%] InspectingPackage [ 60%] TakingInstallLock [ 65%] PreflightingApplication [ 65%] InstallingEmbeddedProfile [ 70%] VerifyingApplication [ 75%] CreatingContainer [ 80%] InstallingApplication [ 85%] PostflightingApplication [ 90%] SandboxingApplication [ 95%] GeneratingApplicationMap [100%] Installed package ./Payload/NetSPI.app
現在,我們已在iOS設備上安裝了應用程序。接下來要做的是打開應用程序并通過Objection與它建立連接。
NetSPIs-MacBook-Pro:NetSPI netspi$ objection explore _ _ _ _ ___| |_ |_|___ ___| |_|_|___ ___ | . | . | | | -_| _| _| | . | | |___|___|_| |___|___|_| |_|___|_|_| |___|(object)inject(ion) v1.3.0 Runtime Mobile Exploration by: @leonjza from @sensepost [tab] for command suggestions com.netspi.test on (iPad: 9.0.1) [usb] #
建立連接后,我們只需運行繞過證書驗證的內置命令,代理流量即可。
com.netspi.test on (iPad: 9.0.1) [usb] # ios sslpinning disable Job: b748974e-ed6d-4aaf-b5ea-3fb35a13720a - Starting [3fb35a13720a] [ios-ssl-pinning-bypass] [NSURLSession] Found 1 matches for URLSession:didReceiveChallenge:completionHandler: [3fb35a13720a] [ios-ssl-pinning-bypass] [NSURLConnection] Found 5 matches for connection:willSendRequestForAuthenticationChallenge: [3fb35a13720a] [ios-ssl-pinning-bypass] Hooking lower level method: SSLSetSessionOption [3fb35a13720a] [ios-ssl-pinning-bypass] Hooking lower level method: SSLCreateContext [3fb35a13720a] [ios-ssl-pinning-bypass] Hooking lower level method: SSLHandshake Job: b748974e-ed6d-4aaf-b5ea-3fb35a13720a - Started
如果以上三種方法都嘗試失敗,那么你可以選擇使用反匯編程序來修改IPA文件的方法繞過證書驗證。對iOS的反匯編內容已超出了本文的討論范圍。對于iOS而言,最常用的反匯編程序是Hopper和IDA。你只需將二進制文件加載到應用程序,并觀察移動應用程序嘗試與應用程序服務器建立SSL連接時調用的函數背后的邏輯,就可以找到證書固定發生的位置。修改IPA很可能會破壞已簽名的應用程序,并導致其無法在iOS設備上進行安裝。通過重簽名IPA文件,可以幫你解決這個問題。
上述內容就是四種繞過iOS SSL驗證和證書固定的方法分別是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。