四种绕过iOS SSL验证和证书固定的方法

严明声明:本文仅限于技巧评论争论,严禁用于其他用途。

几个月前,Cody Wass曾颁发过一篇关于若何绕过Android验证和证书固定的文章。这篇文章给予了我很大年夜的灵感,是以我抉择也分享一些我在事情傍边发明的,关于绕过iOS SSL验证和证书固定的措施。Cody在他的文章里重申了中心人进击,在任何标准渗透测试傍边的紧张性。经由过程中心人进击,我们可以拦截和fuzz所有的HTTP哀求,并反省是否存在安然破绽。鄙人面的例子中,我将应用Burp Suite作为我的Web代理。本文假设读者对iOS,Xcode,设置手机和在iOS应用Burp拦截HTTP流量有基础的懂得。本文我将为大年夜家先容以下四种,绕过iOS中的SSL验证和证书固定的措施:

1. 安装自己的 CA 证书2. 将软件安装到 iOS 设备3. 应用 Objection 和 Frida4. 应用反汇编法度榜样改动 IPA 文件

措施1:安装自己的 CA 证书

安装自己的CA证书是开脱SSL errors的第一步。在iOS中安装CA证书相对轻易。首先,要做的便是将CA证书放到设备上。这可以经由过程打开电子邮件附件或下载证书来完成。然后,我们必要设置设置设备摆设摆设移动设备和Web代理,以拦截颠末的收集流量。详细来说对付Burp Suite,你只需在浏览器中造访http://burp并单击“CA Certificate”即可。

接下来,系统将提示你“Install”证书,如下所示。

单击“Install”按钮后,会提示将要安装的证书添加到受相信证书列表中的警告。

你可以进入Settings > General > Profile来验证证书是否已被成功安装。

措施 2:将软件安装到 iOS 设备

假如仍呈现SSL errors,或利用法度榜样本身由于等待连接而发生卡逝世征象,则利用法度榜样办事器可能正在应用某种TLS链验证或SSL证书固定。绕过SSL证书固定的最简单措施是,安装易于应用的对象软件来帮我们完成这个历程。以下是我所应用的两款对象:

SSLKillSwitch

Burp Mobile Assistant

详细的安装大年夜家直接参考对象的安装阐明即可。但应用这些措施,我们必要逃狱的iOS设备。近年来,跟着苹果公司对iOS设备安然性的赓续增强,逃狱的难度也变得越来越大年夜。

措施 3:应用 Objection 和 Frida

另一种已验证过的措施是应用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

[1] [2]下一页

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

措施 4:应用反汇编法度榜样改动 IPA 文件

假如以上三种措施都考试测验掉败,那么你可以选择应用反汇编法度榜样来改动IPA文件的措施绕过证书验证。对iOS的反汇编内容已越过了本文的评论争论范围。对付iOS而言,最常用的反汇编法度榜样是Hopper和IDA。你只需将二进制文件加载到利用法度榜样,并察看移动利用法度榜样考试测验与利用法度榜样办事器建立SSL连接时调用的函数背后的逻辑,就可以找到证书固定发生的位置。改动IPA很可能会破坏已署名的利用法度榜样,并导致其无法在iOS设备长进行安装。经由过程重署名IPA文件,可以帮你办理这个问题。

总结

就像本文开首说的,能够查看和改动从移动利用法度榜样发送至办事器的HTTP哀求,是渗透测试事情的紧张组成部分。这能够让我们测试职员对利用法度榜样的功能,有更为周全的懂得。本文中先容的措施,都是我们在评估时代常用到的措施,用于在呈现SSL证书差错和固准时查看和操纵流量。假如你对文中所说起的内容有任何的疑问,或是你有更好的措施。那么,迎接你鄙人面的评论中奉告我!

参考文献

https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2015/january/bypassing-openssl-certificate-pinning-in-ios-apps/

http://dji.retroroms.info/howto/iosfrida

上一页[1] [2]

赞(0) 打赏
分享到: 更多 (0)
免责申明:本站所有资料均来自于网络,版权归原创者所有!本站不提供任何保证,不保证真实性,并不承担任何法律责任

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

阿里云优惠网 更专业 更优惠

阿里云优惠券阿里云大礼包