iOS

https://book.hacktricks.xyz/mobile-pentesting/ios-pentesting-checklist

Preparation

Data Storage

Keyboards

Logs

Backups

  • Backups can be used to access the sensitive information saved in the file system (check the initial point of this checklist)

  • Also, backups can be used to modify some configurations of the application, then restore the backup on the phone, and the as the modified configuration is loaded some (security) functionality may be bypassed

Applications Memory

Broken Cryptography

Local Authentication

Sensitive Functionality Exposure Through IPC

  • Custom URI Handlers / Deeplinks / Custom Schemes

    • Check if the application is registering any protocol/scheme

    • Check if the application is registering to use any protocol/scheme

    • Check if the application expects to receive any kind of sensitive information from the custom scheme that can be intercepted by the another application registering the same scheme

    • Check if the application isn't checking and sanitizing users input via the custom scheme and some vulnerability can be exploited

    • Check if the application exposes any sensitive action that can be called from anywhere via the custom scheme

  • Universal Links

    • Check if the application is registering any universal protocol/scheme

    • Check the apple-app-site-association file

    • Check if the application isn't checking and sanitizing users input via the custom scheme and some vulnerability can be exploited

    • Check if the application exposes any sensitive action that can be called from anywhere via the custom scheme

  • UIActivity Sharing

    • Check if the application can receive UIActivities and if it's possible to exploit any vulnerability with specially crafted activity

  • UIPasteboard

    • Check if the application if copying anything to the general pasteboard

    • Check if the application if using the data from the general pasteboard for anything

    • Monitor the pasteboard to see if any sensitive data is copied

  • App Extensions

    • Is the application using any extension?

  • WebViews

    • Check which kind of webviews are being used

    • Check the status of javaScriptEnabled, JavaScriptCanOpenWindowsAutomatically, hasOnlySecureContent

    • Check if the webview can access local files with the protocol file:// (allowFileAccessFromFileURLs, allowUniversalAccessFromFileURLs)

    • Check if Javascript can access Native methods (JSContext, postMessage)

Network Communication

Misc

SSL unpinning iOS and macOS applications

Last updated