IoS Pentesting Checklist
Apple Security Architecture
Official Apple Security Documentation
iOS Overview
All applications are signed by Apple
These devices have a hardware security component
Hardware/Firmware Layer, Software Layer
Two partitions
Filesystem is Linux based
Must have a developer profile on Xcode to test apps (this allows sideloading)
Must have apple ID for testing
Jailbreak Tools:
Linux Jailbreak Software Checkra1n Palera1n (newer iOS Jailbreak) Windows version of Checkra1n - iRa1n 3utools.com - iOS device management tool
Testing Tools: - OpenSSH - BurpPro mobile assistant - Emulator such as Corellium, Appetize.io - Install MobSF for Static Analysis -
Pulling IPA from App Store:
Install IPATool on Mac:
brew tap majd/repo && brew install ipatool
Authenticate to the tool -
ipatool auth -e <yourEmail@email.com>
Search for an app in the App Store -
ipatool search <myKeyword>
Download an app based on the bundle ID from search command -
dipatool download --bundle-identifier <bundleIDFromSearchCommand>
Application Testing setup
Install iproxy
npm install iproxy
and BurpSuite application proxy on hostStart Burp suite and add a listener on port 8082 for all interfaces
Go to iOS settings, set a manual proxy using the Burp Suite host's IP and port 8082
Connect host PC to mobile device using SSH through iproxy using
a.
iproxy 2222 22 & ssh -R 8082:localhost:8082 root@localhost -p 2222
On iOS device visit http://burpsuite to verify connectivity and download Burp CA certificate
Go to apple device settings in the "profile downloaded" section and install certificate
Go Settings >General >About > Certificate Trust Settings and activate toggle switch
Methodology
Download app from appstore OR install ipa file from local machine to iphone
Proxy iphone with iproxy this will establish a usb connection
Proxy traffic through burp
Pull ipa off the phone to a local directory by using frida-ios-dump
Make a copy of the file and rename it to Payload.zip
Unzip the file from the command line
From finder go into the Payload folder and into the next payload folder. This is where the example.app is stored
Right click on the example.app and click show package contents
Look at all the files. Some can be opened in xcode
Look more specifically at the info.plist file and open it with xcode
Open and look at json files if any are available.
Run mobsf and drop the example.ipa file in
Run Objection
Check Ios KeyChain
ios keychain dump
Check plist files
ios plist cat info.plist
Check user credential storage
ios nsurlcredentialstorage dump
Check userdefaults
ios nsuserdefaults get
Check cookies
ios cookies get
Disable cert pinning
ios sslpinning disable --quiet
If you have issues with sslpinning you can use sslkillswitch or try patching with objection manually
Do a manual click through and generate some traffic with burp
Run a burp scan
Test app like it’s a web app. (XSS, SQL injection, login bypass etc)
Check IOS logs
a. Connect the iPhone or iPad you want to view logs for to a Mac by using a USB connection, be sure to unlock the iOS device as well
b. Open the “Console” app on Mac OS, found in the /Applications/Utilities/ directory
c. From the Console app sidebar, look under the ‘Devices’ section and select the iPhone or iPad that is connected to the Mac
Last updated