iOS Testing Environment
Tip
Lernen & ĂŒben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & ĂŒben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & ĂŒben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
UnterstĂŒtzen Sie HackTricks
- ĂberprĂŒfen Sie die AbonnementplĂ€ne!
- Treten Sie der đŹ Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter đŠ @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Apple Developer Program
Eine ProvisionierungsidentitĂ€t ist eine Sammlung von öffentlichen und privaten SchlĂŒsseln, die mit einem Apple-Entwicklerkonto verknĂŒpft sind. Um Apps zu signieren, mĂŒssen Sie 99$/Jahr bezahlen, um sich im Apple Developer Program zu registrieren und Ihre ProvisionierungsidentitĂ€t zu erhalten. Ohne dies können Sie Anwendungen aus dem Quellcode auf einem physischen GerĂ€t nicht ausfĂŒhren. Eine andere Möglichkeit, dies zu tun, besteht darin, ein jailbroken GerĂ€t zu verwenden.
Seit Xcode 7.2 hat Apple die Möglichkeit bereitgestellt, ein kostenloses iOS-Entwicklungs-Provisionierungsprofil zu erstellen, das es ermöglicht, Ihre Anwendung auf einem echten iPhone zu schreiben und zu testen. Gehen Sie zu Xcode â> Preferences â> Accounts â> + (Neues Apple ID mit Ihren Anmeldeinformationen hinzufĂŒgen) â> Klicken Sie auf die erstellte Apple ID â> Manage Certificates â> + (Apple Development) â> Fertig
__Um Ihre Anwendung auf Ihrem iPhone auszufĂŒhren, mĂŒssen Sie zuerst das iPhone anweisen, dem Computer zu vertrauen. Dann können Sie versuchen, die Anwendung auf dem MobilgerĂ€t von Xcode aus auszufĂŒhren, aber es wird ein Fehler angezeigt. Gehen Sie also zu Settings â> General â> Profiles and Device Management â> WĂ€hlen Sie das nicht vertrauenswĂŒrdige Profil aus und klicken Sie auf âTrustâ.
Beachten Sie, dass Anwendungen, die mit demselben Signierungszertifikat signiert sind, Ressourcen auf sichere Weise teilen können, wie z.B. SchlĂŒsselbundobjekte.
Die Provisionierungsprofile werden im Telefon unter /Library/MobileDevice/ProvisioningProfiles gespeichert.
Simulator
Tip
Beachten Sie, dass ein Simulator nicht dasselbe ist wie ein Emulator. Der Simulator simuliert lediglich das Verhalten und die Funktionen des GerÀts, verwendet sie jedoch nicht tatsÀchlich.
Simulator
Das erste, was Sie wissen mĂŒssen, ist, dass das DurchfĂŒhren eines Pentests in einem Simulator viel eingeschrĂ€nkter ist als in einem jailbroken GerĂ€t.
Alle Tools, die zum Erstellen und UnterstĂŒtzen einer iOS-App erforderlich sind, werden nur offiziell auf Mac OS unterstĂŒtzt.
Das de facto-Tool von Apple zum Erstellen/Debuggen/Instruieren von iOS-Anwendungen ist Xcode. Es kann verwendet werden, um andere Komponenten wie Simulatoren und verschiedene SDK Versionen herunterzuladen, die zum Erstellen und Testen Ihrer App erforderlich sind.
Es wird dringend empfohlen, Xcode aus dem offiziellen App Store herunterzuladen. Andere Versionen könnten Malware enthalten.
Die Simulator-Dateien finden Sie unter /Users/<username>/Library/Developer/CoreSimulator/Devices.
Um den Simulator zu öffnen, starten Sie Xcode, drĂŒcken Sie dann im Xcode-Tab â> Open Developer tools â> Simulator
__Im folgenden Bild können Sie durch Klicken auf âiPod touch [âŠ]â ein anderes GerĂ€t zum Testen auswĂ€hlen:
.png)
.png)
Anwendungen im Simulator
Im Verzeichnis /Users/<username>/Library/Developer/CoreSimulator/Devices finden Sie alle installierten Simulatoren. Wenn Sie auf die Dateien einer Anwendung zugreifen möchten, die in einem der Emulatoren erstellt wurde, kann es schwierig sein zu wissen, in welchem die App installiert ist. Ein schneller Weg, um die richtige UID zu finden, besteht darin, die App im Simulator auszufĂŒhren und Folgendes auszufĂŒhren:
xcrun simctl list | grep Booted
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)
Sobald Sie die UID kennen, können die installierten Apps unter /Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application gefunden werden.
Ăberraschenderweise finden Sie die Anwendung jedoch nicht hier. Sie mĂŒssen auf /Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/ zugreifen.
In diesem Ordner können Sie das Paket der Anwendung finden.
Emulator
Corellium ist der einzige öffentlich verfĂŒgbare iOS-Emulator. Es handelt sich um eine Unternehmens-SaaS-Lösung mit einem Lizenzmodell pro Benutzer und bietet keine Testlizenz an.
Kein Jailbreak erforderlich
ĂberprĂŒfen Sie diesen Blogbeitrag, wie man eine iOS-Anwendung auf einem nicht gejailbreakten GerĂ€t pentestet:
iOS Pentesting withuot Jailbreak
Jailbreaking
Apple verlangt strikt, dass der auf dem iPhone ausgefĂŒhrte Code von einem von Apple ausgestellten Zertifikat signiert sein muss. Jailbreaking ist der Prozess, aktiv solche EinschrĂ€nkungen und andere Sicherheitskontrollen, die vom Betriebssystem festgelegt wurden, zu umgehen. Daher wird, sobald das GerĂ€t gejailbreakt ist, die IntegritĂ€tsprĂŒfung, die fĂŒr die ĂberprĂŒfung der installierten Apps verantwortlich ist, gepatcht, sodass sie umgangen wird.
Tip
Im Gegensatz zu Android können Sie in iOS nicht in den âEntwicklermodusâ wechseln, um nicht signierten/nicht vertrauenswĂŒrdigen Code auf dem GerĂ€t auszufĂŒhren.
Android Rooting vs. iOS Jailbreaking
Obwohl oft verglichen, sind Rooting auf Android und Jailbreaking auf iOS grundlegend unterschiedliche Prozesse. Das Rooten von Android-GerÀten kann die Installation der su-Binary oder den Austausch des Systems durch ein gerootetes benutzerdefiniertes ROM umfassen, was nicht unbedingt Exploits erfordert, wenn der Bootloader entsperrt ist. Das Flashen benutzerdefinierter ROMs ersetzt das Betriebssystem des GerÀts nach dem Entsperren des Bootloaders, was manchmal einen Exploit erfordert.
Im Gegensatz dazu können iOS-GerĂ€te aufgrund der EinschrĂ€nkung des Bootloaders, nur von Apple signierte Images zu booten, keine benutzerdefinierten ROMs flashen. Jailbreaking iOS zielt darauf ab, die Code-SignierungsschutzmaĂnahmen von Apple zu umgehen, um nicht signierten Code auszufĂŒhren, ein Prozess, der durch die kontinuierlichen Sicherheitsverbesserungen von Apple kompliziert wird.
Herausforderungen beim Jailbreaking
Jailbreaking von iOS wird zunehmend schwieriger, da Apple Schwachstellen schnell patcht. Das Downgrade von iOS ist nur fĂŒr eine begrenzte Zeit nach einer Veröffentlichung möglich, was Jailbreaking zu einer zeitkritischen Angelegenheit macht. GerĂ€te, die fĂŒr Sicherheitstests verwendet werden, sollten nicht aktualisiert werden, es sei denn, das Re-Jailbreaking ist garantiert.
iOS-Updates werden durch einen Challenge-Response-Mechanismus (SHSH-Blobs) gesteuert, der die Installation nur fĂŒr von Apple signierte Antworten ermöglicht. Dieser Mechanismus, bekannt als âSigning Windowâ, schrĂ€nkt die Möglichkeit ein, OTA-Firmware-Pakete zu speichern und spĂ€ter zu verwenden. Die IPSW Downloads-Website ist eine Ressource, um aktuelle Signing Windows zu ĂŒberprĂŒfen.
Jailbreak-Varianten
- Tethered Jailbreaks erfordern eine Computerverbindung fĂŒr jeden Neustart.
- Semi-tethered Jailbreaks ermöglichen das Booten in den nicht gejailbreakten Modus ohne Computer.
- Semi-untethered Jailbreaks erfordern ein manuelles Re-Jailbreaking ohne Computer.
- Untethered Jailbreaks bieten eine permanente Jailbreak-Lösung ohne die Notwendigkeit einer erneuten Anwendung.
Jailbreaking-Tools und Ressourcen
Jailbreaking-Tools variieren je nach iOS-Version und GerÀt. Ressourcen wie Can I Jailbreak?, The iPhone Wiki und Reddit Jailbreak bieten aktuelle Informationen. Beispiele sind:
- Checkra1n fĂŒr A7-A11-Chip-GerĂ€te.
- Palera1n fĂŒr Checkm8-GerĂ€te (A8-A11) auf iOS 15.0-16.5.
- Unc0ver fĂŒr iOS-Versionen bis 14.8.
Die Modifikation Ihres GerÀts birgt Risiken, und Jailbreaking sollte mit Vorsicht angegangen werden.
Vorteile und Risiken des Jailbreakings
Jailbreaking entfernt die vom OS auferlegte Sandbox, sodass Apps auf das gesamte Dateisystem zugreifen können. Diese Freiheit ermöglicht die Installation von nicht genehmigten Apps und den Zugriff auf mehr APIs. FĂŒr regulĂ€re Benutzer wird Jailbreaking jedoch nicht empfohlen aufgrund potenzieller Sicherheitsrisiken und InstabilitĂ€t des GerĂ€ts.
Nach dem Jailbreaking
Jailbreak-Erkennung
Mehrere Anwendungen versuchen zu erkennen, ob das MobilgerĂ€t gejailbreakt ist, und in diesem Fall wird die Anwendung nicht ausgefĂŒhrt.
- Nach dem Jailbreaking werden in iOS Dateien und Ordner normalerweise installiert, die durchsucht werden können, um festzustellen, ob das GerÀt gejailbreakt ist.
- Auf einem gejailbreakten GerĂ€t erhalten Anwendungen Lese-/Schreibzugriff auf neue Dateien auĂerhalb der Sandbox.
- Einige API Aufrufe werden anders reagieren.
- Das Vorhandensein des OpenSSH-Dienstes.
- Der Aufruf von
/bin/shwird 1 anstelle von 0 zurĂŒckgeben.
Weitere Informationen zur Erkennung von Jailbreaking hier.
Sie können versuchen, diese Erkennungen mit objectionâs ios jailbreak disable zu vermeiden.
Umgehung der Jailbreak-Erkennung
- Sie können versuchen, diese Erkennungen mit objectionâs
ios jailbreak disablezu vermeiden. - Sie könnten auch das Tool Liberty Lite (https://ryleyangus.com/repo/) installieren. Sobald das Repo hinzugefĂŒgt wurde, sollte die App im Tab âSucheâ erscheinen.
Referenzen
Tip
Lernen & ĂŒben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & ĂŒben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & ĂŒben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
UnterstĂŒtzen Sie HackTricks
- ĂberprĂŒfen Sie die AbonnementplĂ€ne!
- Treten Sie der đŹ Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter đŠ @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.


