hacktricks/mobile-pentesting/ios-pentesting/ios-testing-environment.md
2024-02-10 15:36:32 +00:00

12 KiB

iOS Testumgebung

Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Apple Developer Program

Eine Bereitstellungskennung 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 Bereitstellungskennung zu erhalten. Ohne dies können Sie Anwendungen nicht vom Quellcode auf einem physischen Gerät ausführen. Eine andere Möglichkeit besteht darin, ein gejailbreaktes Gerät zu verwenden.

Ab Xcode 7.2 bietet Apple die Möglichkeit, ein kostenloses iOS-Entwicklungsprofil zu erstellen, mit dem Sie Ihre Anwendung auf einem echten iPhone schreiben und testen können. Gehen Sie zu Xcode --> Einstellungen --> Accounts --> + (Neue Appli ID zu Ihren Anmeldeinformationen hinzufügen) --> Auf die erstellte Apple ID klicken --> Zertifikate verwalten --> + (Apple Development) --> Fertig
__Um Ihre Anwendung auf Ihrem iPhone ausführen zu können, müssen Sie zuerst das iPhone anweisen, dem Computer zu vertrauen. Anschließend können Sie versuchen, die Anwendung vom Xcode aus auf dem Mobilgerät auszuführen, es wird jedoch ein Fehler angezeigt. Gehen Sie also zu Einstellungen --> Allgemein --> Profile und Geräteverwaltung --> Wählen Sie das nicht vertrauenswürdige Profil aus und klicken Sie auf "Vertrauen".

Beachten Sie, dass Anwendungen, die mit demselben Signierungszertifikat signiert sind, Ressourcen auf sichere Weise gemeinsam nutzen können, z. B. Schlüsselbundelemente.

Die Bereitstellungskennungen werden auf dem Telefon im Verzeichnis /Library/MobileDevice/ProvisioningProfiles gespeichert.

Simulator

{% hint style="info" %} Beachten Sie, dass ein Simulator nicht dasselbe wie ein Emulator ist. Der Simulator simuliert nur das Verhalten des Geräts und die Funktionen, verwendet sie jedoch nicht tatsächlich. {% endhint %}

Simulator

Das erste, was Sie wissen müssen, ist, dass ein Pentest in einem Simulator viel eingeschränkter ist als in einem gejailbreakten Gerät.

Alle für den Bau und die Unterstützung einer iOS-App erforderlichen Tools werden nur offiziell unter Mac OS unterstützt.
Das von Apple de facto verwendete Tool zum Erstellen/Debuggen/Instrumentieren 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önnen Malware enthalten.

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

Um den Simulator zu öffnen, starten Sie Xcode und klicken Sie dann auf die Registerkarte Xcode --> Entwicklertools öffnen --> Simulator
__In der folgenden Abbildung können Sie durch Klicken auf "iPod touch [...]" ein anderes Gerät zum Testen auswählen:

Anwendungen im Simulator

Im Verzeichnis /Users/<Benutzername>/Library/Developer/CoreSimulator/Devices finden Sie alle installierten Simulatoren. Wenn Sie auf die Dateien einer in einem der Emulatoren erstellten Anwendung zugreifen möchten, kann es schwierig sein zu wissen, in welchem Simulator 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 darin unter /Users/<Benutzername>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application gefunden werden.

Überraschenderweise finden Sie die Anwendung jedoch nicht hier. Sie müssen auf /Users/<Benutzername>/Library/Developer/Xcode/DerivedData/{Anwendung}/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 Enterprise-SaaS-Lösung mit einem Lizenzmodell pro Benutzer und bietet keine Testlizenz an.

Jailbreaking

Apple verlangt strikt, dass der Code, der auf dem iPhone ausgeführt wird, von einem von Apple ausgestellten Zertifikat signiert sein muss. Jailbreaking ist der Prozess, bei dem solche Beschränkungen und andere Sicherheitskontrollen des Betriebssystems aktiv umgangen werden. Sobald das Gerät jailbroken ist, wird die Integritätsprüfung, die für die Überprüfung der installierten Apps verantwortlich ist, gepatcht, sodass sie umgangen wird.

{% hint style="info" %} 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. {% endhint %}

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 das Installieren der su-Binärdatei oder das Ersetzen des Systems durch eine gerootete benutzerdefinierte 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 und erfordert manchmal einen Exploit.

Im Gegensatz dazu können iOS-Geräte aufgrund der Beschränkung des Bootloaders auf das Booten von Apple-signierten Abbildern keine benutzerdefinierten ROMs flashen. Das Jailbreaking von iOS zielt darauf ab, die von Apple implementierten Codesignatur-Schutzmaßnahmen zu umgehen, um nicht signierten Code auszuführen. Dieser Prozess wird durch die kontinuierlichen Sicherheitsverbesserungen von Apple erschwert.

Herausforderungen beim Jailbreaking

Das Jailbreaking von iOS wird zunehmend schwieriger, da Apple Sicherheitslücken schnell schließt. Das Downgraden von iOS ist nur für eine begrenzte Zeit nach einer Veröffentlichung möglich, wodurch das Jailbreaking zu einer zeitkritischen Angelegenheit wird. Geräte, die für Sicherheitstests verwendet werden, sollten nicht aktualisiert werden, es sei denn, das erneute Jailbreaking ist garantiert.

iOS-Updates werden durch einen Challenge-Response-Mechanismus (SHSH-Blobs) gesteuert, der nur die Installation von Apple-signierten Antworten ermöglicht. Dieser Mechanismus, bekannt als "Signing Window", begrenzt die Möglichkeit, OTA-Firmware-Pakete zu speichern und später zu verwenden. Die Website IPSW Downloads bietet eine Ressource zur Überprüfung der aktuellen Signing Windows.

Arten von Jailbreaks

  • Tethered Jailbreaks erfordern eine Computer-Verbindung für jeden Neustart.
  • Semi-tethered Jailbreaks ermöglichen das Booten im nicht-jailbroken Modus ohne Computer.
  • Semi-untethered Jailbreaks erfordern manuelles erneutes Jailbreaking ohne Computer.
  • Untethered Jailbreaks bieten eine dauerhafte Jailbreak-Lösung ohne erneute Anwendung.

Tools und Ressourcen für Jailbreaking

Die 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) unter iOS 15.0-16.5.
  • Unc0ver für iOS-Versionen bis zu 14.8.

Die Modifikation Ihres Geräts birgt Risiken, und Jailbreaking sollte mit Vorsicht angegangen werden.

Vorteile und Risiken des Jailbreakings

Jailbreaking entfernt die durch das Betriebssystem 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 normale Benutzer wird das Jailbreaking jedoch aufgrund potenzieller Sicherheitsrisiken und Geräteinstabilität nicht empfohlen.

Nach dem Jailbreaking

{% content-ref url="basic-ios-testing-operations.md" %} basic-ios-testing-operations.md {% endcontent-ref %}

Jailbreak-Erkennung

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

  • Nach dem Jailbreaking werden auf einem iOS-Gerät 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 der Sandbox.
  • Einige API-Aufrufe verhalten sich anders.
  • Das Vorhandensein des OpenSSH-Dienstes.
  • Der Aufruf von /bin/sh gibt anstelle von 0 eine 1 zurück.

Weitere Informationen zur Erkennung von Jailbreaking finden Sie hier.

Sie können versuchen, diese Erkennungen mit ios jailbreak disable von objection zu umgehen.

Umgehung der Jailbreak-Erkennung

  • Sie können versuchen, diese Erkennungen mit ios jailbreak disable von objection zu umgehen.
  • Sie können auch das Tool Liberty Lite (https://ryleyangus.com/repo/) installieren. Sobald das Repository hinzugefügt wurde, sollte die App im "Suchen"-Tab angezeigt werden.

Referenzen

Lernen Sie das Hacken von AWS von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen: