iOS Testing Environment

Support HackTricks

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, musst du 99$/Jahr bezahlen, um dich im Apple Developer Program zu registrieren und deine Provisionierungsidentität zu erhalten. Ohne dies kannst du Anwendungen aus dem Quellcode auf einem physischen Gerät nicht ausführen. Eine andere Möglichkeit, dies zu tun, ist die Verwendung eines jailbroken Geräts.

Seit Xcode 7.2 hat Apple eine Option bereitgestellt, um ein kostenloses iOS-Entwicklungs-Provisionierungsprofil zu erstellen, das es ermöglicht, deine Anwendung auf einem echten iPhone zu schreiben und zu testen. Gehe zu Xcode --> Preferences --> Accounts --> + (Füge neue Appli ID mit deinen Anmeldeinformationen hinzu) --> Klicke auf die erstellte Apple ID --> Manage Certificates --> + (Apple Development) --> Fertig __Um deine Anwendung auf deinem iPhone auszuführen, musst du zuerst das iPhone anweisen, dem Computer zu vertrauen. Dann kannst du versuchen, die Anwendung auf dem Mobilgerät aus Xcode auszuführen, aber es wird ein Fehler angezeigt. Gehe also zu Einstellungen --> Allgemein --> Profile und Geräteverwaltung --> Wähle das nicht vertrauenswürdige Profil aus und klicke auf "Vertrauen".

Beachte, 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

Beachte, dass ein Simulator nicht dasselbe ist wie ein Emulator. Der Simulator simuliert nur das Verhalten des Geräts und dessen Funktionen, verwendet sie jedoch nicht tatsächlich.

Simulator

Das erste, was du wissen musst, ist, dass das Durchführen eines Pentests in einem Simulator viel eingeschränkter ist als in einem jailbroken Gerät.

Alle Tools, die erforderlich sind, um eine iOS-App zu erstellen und zu unterstützen, 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 erforderlich sind, um deine App zu erstellen und zu testen. Es wird dringend empfohlen, Xcode aus dem offiziellen App Store herunterzuladen. Andere Versionen könnten Malware enthalten.

Die Simulator-Dateien befinden sich in /Users/<username>/Library/Developer/CoreSimulator/Devices

Um den Simulator zu öffnen, starte Xcode, drücke dann im Xcode-Tab --> Open Developer tools --> Simulator __Im folgenden Bild kannst du durch Klicken auf "iPod touch [...]" ein anderes Gerät zum Testen auswählen:

Anwendungen im Simulator

Im Verzeichnis /Users/<username>/Library/Developer/CoreSimulator/Devices findest du alle installierten Simulatoren. Wenn du auf die Dateien einer Anwendung zugreifen möchtest, 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, ist, 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.

Und 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 es werden keine Testlizenzen angeboten.

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 jailbroken ist, die Integritätsprüfung, die für die Überprüfung der installierten Apps verantwortlich ist, gepatcht, sodass sie umgangen wird.

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 von benutzerdefinierten 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 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 zulässt. 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-jailbroken Modus ohne Computer.

  • Semi-untethered Jailbreaks erfordern ein manuelles Re-Jailbreaking ohne einen 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 Sandboxing, 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

iOS Basic Testing Operations

Jailbreak-Erkennung

Mehrere Anwendungen werden versuchen zu erkennen, ob das Mobilgerät jailbroken ist, und in diesem Fall wird die Anwendung nicht ausgeführt.

  • Nach dem Jailbreaking eines iOS werden normalerweise Dateien und Ordner installiert, die durchsucht werden können, um festzustellen, ob das Gerät jailbroken ist.

  • Auf einem jailbroken Gerät erhalten Anwendungen Lese-/Schreibzugriff auf neue Dateien außerhalb des Sandboxes.

  • Einige API Aufrufe werden anders reagieren.

  • Die Anwesenheit des OpenSSH-Dienstes.

  • Der Aufruf von /bin/sh wird 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 disable zu 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

Support HackTricks

Last updated