27. Dezember 2008

25C3: Hacking the iPhone

Category: CCC — Christian @ 21:22

Das Apple-iPhone-Hacking ist so ein Vortrag, dessen Inhalte mich eigentlich gar nicht interessieren. Ich habe kein iPhone und ich will mir auch keines zulegen (das Android/Linux Google-Phone würde mich eher interessieren). Aber egal, ein paar interessante Themen werden bestimmt angesprochen.

Die Apple-Hacker schaffen es im Schnitt 24-48 Stunden nach einem Patch von Apple ihr Programm wieder zu aktualisieren. Das ist schon sehr cool. Dafür dürfen sie auch Werbung für ihre Apple-powned T-Shirts machen 🙂

Das iPhone ist im Grunde wie zwei Computer gebaut. Es gibt einen Application-Prozessor, der die Anwendungen laufen lässt (das iPhone-OS und von iTunes geladene Anwendungen) und einen Baseband-Prozessor, der die Funkverbindung hält. Das iPhone-OS basiert auf MacOS X. Allerdings gibt es einen zusätzliche Dienst, den Lockdownd, der die Aktivierung und die laufenden Programme kontrolliert. Das OS läuft von Flash, eine Read-only Systempartition und eine schreibbare Userpartition. Damit wird ein Filesystem-Check bei einem Absturz vermieden. Die Programme müssen alle digital signiert werden, das Code-Signing wird im Kernel verifiziert. Der Kernel befindet sich auf der RO-Systempartition und ist ebenfalls signiert.  Nebenbei ist auch noch das Filesystem AES-verschlüsselt und der Schlüssel kann nicht ausgelesen werden. Die Signaturprüfung lässt sich beim Booten jedoch umgehen. Die komplette Beschreibung des Bootprozesses schenke ich mir hier, die ist recht kompliziert. Am Anfang steht jedoch der nicht signierte LLB, der modifiziert werden kann.

Es gibt noch ein paar weitere Schwächen, z.B. Buffer Overflows im Zusammenhang mit Zertifikaten. Den kann man nutzen, um die Funktion zur Prüfung digitaler Signaturen dazu zu bringen, immer mit „true“, d.h. einer gültig erkannten Signatur zurückzuspringen. Dieser Buffer Overflow wird verwendet, um ein nicht-signiertes iPhone-OS zu starten. Einer der Kernfehler Apples war, die Sicherheitsmechanismen einzeln zu aktivieren. So konnte anfangs die Firmware analysiert werden, bevor sie verschlüsselt wurde.

Der Baseband-Prozessor läuft nahezu unabhängig vom Applikation-Prozessor. Das Booten des Baseband-Systems sieht ähnlich aus. Der Bootrom lädt den Bootloader, der die Firmware lädt. Die Firmware kann übrigens richtig geschrottet („bricked“) werden und sie ist mit einer RSA-Signatur gesichert. Die Firmware ist auch für den SIM-Lock des Providers verantwortlich. Der Bootloader ist im neuen iPhone ebenfalls signiert und schützt nach dem Start den Bootrom.

Im Bootloader v3.9 gibt es ein paar Fehler, u.a. den Bleichenbacher Angriff (Code) gegen die RSA Signatur. Einzelne Exploits wie der JerrySIM Buffer Overflow sind inzwischen jedoch „verbrannt“. Aktuelle Exploits überschreiben nicht die Firmware sondern patchen sie während der Laufzeit im RAM.

Insgesamt ist das Reverse Engineering des iPhone schon sehr cool. Apple hat einige Arbeit reingesteckt, das zu erschweren und die Jungs hier waren extrem clever. Ich sehe halt nur für mich keine praktische Anwendung.

1 Kommentar

  1. Kommentare gesperrt wegen Spam

    Comment by Christian — 7. Juni 2012 @ 17:27

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.