Im ersten Votrag erklärte Andrew „bunnie“ Huang das Hacken der X-Box Hardware. Es wurde detailliert auf die Schutzmechanismen der X-Box und deren Schwächen eingegangen.
So war z.B. im Flash-Rom ein Fake-Bootsector untergebracht, der nie angesprungen wurde, sondern lediglich zur Verwirrung des Angreifers beitragen soll. Nachdem klar wurde, dass der Inhalt des Flash-ROMs (X-Box Kernel) durch Verschlüsselung und Prüfsummen geschützt ist, wurden andere Möglichkeiten für Angriffe gesucht, u.A. wurde eine X-Box komplett von ihren Chips ‚befreit‘, die Northbridge wurde geöffnet und unter dem Mikroskop studiert.
Der erfolgreiche Ansatz war Bus-Sniffing, also die Datenleitungen auf der Platine abzuhören, um so die unverschlüsselten Datenströme lesen zu können. Andrew hat dafür die Leiterbahnen mit Sandpapier freigelegt und ein Interface für seinen Logic-Analyzer gebaut:
Ausgenutzt wurde schliesslich eine Schwäche des verwendeten Hash-Algorithmus, bei diesem können vier bestimmte Bits gekippt werden, ohne dass sich der Hashwert ändert. Damit war es möglich einen veränderten Public-Key einzuschleusen, der trotzdem dem Hash entsprach, mit diesen Key kann dann eigener Code (z.B. ein Linux Bootloader) signiert werden.
Der zweite Teil des Vortrages befasste sich mit der Installation von Linux auf der X-Box. Es wurden die verschiedenen Exploits und der MechInstaller vorgestellt, mit dem auch unbedarfte User Linux auf ihrer X-Box installieren können.
Ein großes Problem ist, dass die Exploits leicht für die Erstellung von Raubkopien benutzt werden können, womit das xbox-Linux Projekt natürlich nichts zu tun haben möchte. Selbst die Quellcodes der Exploits und des MechInstallers wurden nicht veräffentlicht und waren nur wenigen eingeweihten Personen zugänglich. Nachdem Michael Steil diesen Fakt ausführlich betont hatte, fiel der USB-Stick mit den Sourcen ‚zufällig‘ ins Publikum… 😉
Zum Abschluss gab es eine Demonstration des MechInstallers und natürlich Linux auf der X-Box:
Im Wettbewerb „Homöomorphe Endmontage“ sollten die Teilnehmer ein Legomodell zusammenbauen, ohne Plastiktüte zu öffnen. Den angestrengten Gesichtern nach zu urteilen ist es ein Heidenspaß 😉
Aus dem PGP-Usersguide wurden alle Leute rausgeschmissen, die keinen Computer dabei hatten, weil es ein richtiger Workshop zum Mitmachen sei. Da mein Notebook zu dem Zeitpunkt nicht mal XFree86 installiert hatte, war an gpg nicht zu denken und deshalb habe ich mich zu Herrn Tauss gesetzt und seine Gedanken zur Maschinenlesbaren Regierung gelauscht.
Soweit war der Vortrag nicht besonders interssant, natürlich ist die Bundesregierung an der Informationsfreiheit interessiert, aber der zugrundeliegende Beamtenapparat scheint noch nicht willig zu sein, dieses Projekt mitzutragen.
Nett war noch die Tatsache, dass Joerg Tauss die Aufkleber „Aus hygienischen Gründen wird diese Toilette videoüberwacht“ gekauft hat und auch schon weiss, wo er diese anbringen wird. Ich hoffe auf einen kleinen Aufruhr im Bundetag 😉
In Practical Win32 and unicode exploitation (der Vortrag bekommt den Preis für die besten Folien 😉 ging es im wesentlichen um die Problematik, dass injezierter Code durch die automatische Umwandlung auf Windows-Plattformen in Unicode unerwünschte 0x00en oder sonstigen Strunz enthält. Diese Tatsache kann man jedoch bewusst ausnutzen und die 0x00en zum Code machen oder die entsprechenden Translation tables benutzen, in denen keine Nullen erzeugt werden (OEM z.B.)
Nebenbei wurde noch erklärt wie man den Structured Excption Handler (SEH) von Windows überschreibt um selbst produzierte Exceptions (versehentliche Zugriffe auf nicht gemappte Speicherseiten) abzufangen (Der SEH ruft normalerweise Dr. Watson). Mit diesem Trick kann man die gesamten 4 GB Speicher nach dem eigentlichen Shellcode scannen um ihn dann zur Ausführung zu bringen.
FX von phenoelit hat zu diesem Zweck ein Plugin für seinen Debugger und ein Perlscript geschrieben, dass die Erstellung von „Unicode-kompatiblen“ Windows-Exploits sehr vereinfacht. 2004 wird garantiert ein spannendes Jahr der Viren und Würmer…