hacktricks/ios-pentesting/ios-pentesting-checklist.md

49 lines
2.7 KiB
Markdown
Raw Normal View History

2021-05-18 12:34:46 +00:00
# iOS Pentesting Checklist
### Data Storage
* [ ] [**Plist files**](./#plist) can be used to store sensitive information.
* [ ] \*\*\*\*[**Core Data**](./#core-data) \(SQLite database\) can store sensitive information.
* [ ] \*\*\*\*[**YapDatabases**](./#yapdatabase) \(SQLite database\) can store sensitive information.
* [ ] \*\*\*\*[**Firebase**](./#firebase-real-time-databases) miss-configuration.
* [ ] \*\*\*\*[**Realm databases**](./#realm-databases) can store sensitive information.
* [ ] \*\*\*\*[**Couchbase Lite databases**](./#couchbase-lite-databases) can store sensitive information.
* [ ] \*\*\*\*[**Binary cookies**](./#cookies) can store sensitive information
* [ ] \*\*\*\*[**Cache data**](./#cache) can store sensitive information
* [ ] \*\*\*\*[**Automatic snapshots**](./#snapshots) can save visual sensitive information
* [ ] \*\*\*\*[**Keychain**](./#keychain) is usually used to store sensitive information that can be left when reselling the phone.
* [ ] In summary, just **check for sensitive information saved by the application in the filesystem**
### Keyboards
* [ ] Does the application [**allow to use custom keyboards**](./#custom-keyboards-keyboard-cache)?
* [ ] Check if sensitive information is saved in the [**keyboards cache files**](./#custom-keyboards-keyboard-cache)\*\*\*\*
### **Logs**
* [ ] Check if [**sensitive information is being logged**](./#logs)\*\*\*\*
### **Clipboard**
* [ ] If using the keyboard the application should use [**private clipboards**](./#clipboard)
* [ ] Is the app using the info from the [**global clipboard**](./#clipboard) for anything?
* [ ] Does the app allow to copy [**sensitive information to the clipboard**](./#clipboard)?
### Backups
* [ ] \*\*\*\*[**Backups**](./#backups) can be used to **access the sensitive information** saved in the file system \(check the initial point of this checklist\)
* [ ] Also, [**backups**](./#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**
* [ ] Check for sensitive information inside the [**application's memory**](./#testing-memory-for-sensitive-data)\*\*\*\*
### **Local Authentication**
* [ ] If a [**local authentication**](./#local-authentication) is used in the application, you should check how the authentication is working.
* [ ] If it's using the [**Local Authentication Framework**](./#local-authentication-framework) it could be easily bypassed
* [ ] If it's using a [**function that can dynamically bypassed**](./#local-authentication-using-keychain) you could create a custom frida script