29. Dezember 2007
Monochroms zweiter Auftritt, diesmal die ganze Künstlergruppe und nicht nur Johannes Grenzfurthner …
Man erkennt das auf den Fotos recht schlecht, da es im Raum sehr dunkel war … das sind Figuren auf Stöcken die von oben in einem kleinen Miniaturtheater gespielt haben. Leider etwas verwackelt, weil die Belichtungszeit meiner Kamera zu lange war. Trotzdem fand ich das Spiel sehr amüsant, eine richtig gute Idee und ein klasse Kontrast zur sonstigen Hightech-Veranstaltung
Aber dass Johannes beim Applaus beinahe Roland Gratzer vergessen hat, seinen tapferen Gitarristen und Mitsänger … 😉
Das Reverse Engineering von Embedded Devices ist ein immer wiederkehrendes Thema auf dem Congress, in diesem Jahr mindestens zum dritten Mal vertreten. Trotzdem ist es immer wieder interessant mit welchen verbesserten Methoden die Firmware von Embedded Systeme analysiert wird.
Die wichtigsten Eigenschaften zur Analyse von Embedded Devices sind:
- oft alte Kernels
- wenig Speicher
- viele Bugs
- Hintertüren z.B. durch fest kodierte Passwörter
Zugriffsmöglichkeiten auf die Firmware bestehen an mehreren Stellen:
- an der Firmware rumspielen
- versteckte Kommandos
- Software-Updates
- via JTAG
- via Seriell
Das Filesystem das in so einer Firmware verwendet wird ist in der Regel romfs, squashfs oder cramfs. Außerdem gibt es so lustige Sachen wie bFLT (Binary Flat Format) oder das BCC Protokoll.
Geräte mit einem solchen System sind beispielsweise
- Linksys rv42
- Icybox NAS 1000
- Elmeg t484 pabx
In der zweiten Hälfte stellte Dash seine Analyse der Elmeg-Anlage vor. Die Analyse der Firmware greift auf das Tool UWfirmforce von Überwall zurück, das Khorben 2006 auf dem Congress vorgestellt hat.
Diesmal ging es nicht um das Schweizer Postcard Debitsystem sondern um das britische Chip & PIN System. Steven Murdoch hat einen Kartenleser so modifiziert, dass man damit u.a. Tetris spielen kann, viel wichtiger jedoch, dass die eingegebenen Kartendaten inklusive der eingetippten PIN direkt an einen dritten Rechner geschickt werden, mit dem in Echtzeit eine Authentisierung an einem anderen Terminal möglich ist.
Der Ablauf sieht dann so aus:
Kunde –> Böses Terminal —> Hacker –> Normales Terminal –> Bank
- Der Kunde schiebt seine Karte in das Terminal und gibt die PIN ein um einen kleinen Betrag zu bezahlen
- Das Terminal leitet die Daten an den Hacker weiter
- Der Hacker verwendet eine programmierbare Karte und schreibt die Daten darauf
- Der Hacker authentisiert sich mit den Daten und der PIN an einem echten Terminal und bezahlt einen sehr hohen Betrag
- Der nichts ahnende Kunde wird um den hohen Betrag belastet
Im Grunde ist da nichts neues dabei, die Technik ist vergleichbar mit den Methoden die verwendet werden um Mittels Aufsatzgeräten die Magnetstreifen und PINs an deutschen Geldautomaten abzugreifen. Durch die Chipkarte wird es lediglich ein wenig schwieriger.
Das Problem ist m.E. auch weniger die technische sondern die politische Implikation. Theoretisch gilt in Großbritannien ein „Banking Code“ (d.h. die Banken haben durch geschickte Lobbyarbeit ein entsprechendes Gesetz vermieden) nachdem die Banken dem Kunden nachweisen müssen, unvorsichtig gehandelt zu haben. Praktisch ist das gleiche passiert, das auch schon in Deutschland zu sehen ist: Die Banken verweisen auf ihr angeblich 100% sicheres System mit Chipkarte und PIN und lehnen jede Verantwortung für Schäden ab. Und die deutschen Banken bekommen von offensichtlich wenig kompetenten Richtern am BGH auch noch Recht.
Für Kunden bleibt eigentlich nur das Fazit, die Nutzung dieser Systeme soweit wie möglich einzuschränken. Ich verwende meine EC-Karte ausschließlich zum Geldabheben am Automaten und ich rüttle jedes mal am Einschub und dem Tastenfeld in der Hoffnung, ein schlampig befestigtes Vorschaltgerät löst sich dann ab. Ich zahle praktisch niemals im Supermarkt mit EC-Karte sondern immer bar, da für mich nicht kontrollierbar ist was wie wo in diesem EC-Kartenterminal passiert. Und wo Kartenzahlungen notwendig sind nehme ich Kreditkarten, da ist die Haftungsregelung nämlich viel Kundenfreundlicher.
Ach ja, und die Karte sollte sich nicht nur am Terminal authentisieren sondern das Terminal auch an der Karte …
Ich habe mir unter diesem Titel zwar etwas anderes vorgestellt aber insgesamt war ich von den beiden Italienern positiv überrascht.
Insbesondere der erste Teil von Twix war richtig gut. Er hat eine Möglichkeit gefunden in Solaris 8, 9 und 10 verlässlich Kernel-Sicherheitslücken mit Hilfe von Exploits auszunutzen. Die Idee von ihm basiert darauf, 80 Byte mit psargs in die vom Kernel verwaltete Prozesstabelle zu schleusen, die im Gegensatz zum Stack ausführbar ist. Damit lassen sich etwa 19 Befehle, durch Chaining mit mehreren Prozessen sogar komplexere Exploits ausführen. Seine Methode funktioniert grundsätzlich zuverlässig mit allen Kernelexploits die den Stack nicht verändern, andernfalls muss man den Stackzustand manuell wieder herstellen, damit der Kernel nicht abstürzt.
Im zweiten Teil hat sgrakkyu sich mit Windows Race Conditions beschäftigt, insbesondere Kernel Races. Ein Thema sind Programme wie Windows Firewalls oder Virenscanner die sich mittels Kernel Space Hooking in das System einklinken. Das ist jedoch ein fehlerhaftes Design, da eine TOCTOU-Race Condition vorliegt.
Zu einem Zeitpunkt A findet der Hook statt und der Virenscanner prüft die übergebenen Daten. Zu einem späteren Zeitpunkt B findet der Rücksprung auf die echte API statt und die Windows-Funktion wird ausgeführt. Allerdings ist es unter bestimmten Umständen möglich, zwischen A und B die untersuchten Daten zu verändern.
Der Vortrag war sehr sehr technisch, ich habe vermutlich höchstens die Hälfte verstanden. Es lohnt sich jedoch, in den Phrack-Artikel der beiden reinzukucken. Einer der längsten die ich je gesehen habe. In dieser Qualität und auf diesem Niveau waren bisher nur die beiden Vorträge zum Barcode-Hacking und zu Mifare.
Tonnere Lombard ist einer der NetBSD-Entwickler und u.a. Maintainer des FVWM, eines X11 Windowmanagers, der zu meiner Unix-Anfangszeit State-of-the-Art war.
Die Präsentation von ihm behandelte typische Programmierfehler die zu Sicherheitslücken und diversen Problemen führen können. Insgesamt eher ein Vortrag für Leute die sich neu mit sicherer Programmierung beschäftigen, unabhängig davon aber zwar etwas chaotisch aber sehr kompetent präsentiert.
Wichtige Fehler:
- Buffer Overflows (Stack, Heap)
- Integer Overflows (z.B. 32-bit Code auf 64-bit Systemen)
- Synchronisierungsprobleme (Race Conditions, Signalbehandlungsfehler)
- Format String Bugs
- Injectionsangriffe (XSS, XSFR, SQL-Injection)
- Authentisierungsfehler
Das spannende war, die meisten Fehler wurden anschaulich direkt live vorgeführt.
Ein Beispiel: Integer Overflow (Fehler auf 64-bit Systemen)
- Falsch: unsigned long fl = (_flags & 0xffff0000) > 16;
- Richtig: unsigned long fl = (_flags & 0xffff0000L) > 16;
Der Source Code seiner fehlerhaften Programme ist bereits auf vulns.bsdprojects.net veröffentlicht.
Sehr amüsant fand ich seinen Kommentar beim Öffnen des Webbrowsers: „Hoffentlich kommt nicht der Schäuble angerollt, beim Öffnen dieses Terrortools“ und sein Fazit: „Es gibt keine Programmiersprache welche es erlaubt, das Gehirn abzuschalten„.
Nachtrag:
Ebenfalls eine lustige Idee ist die Gründung eines „Vereins“ mit dem Namen „‚ or 1=1 —“ um den Vereinsnamen als Login in Webformularen verwenden zu können. Das muss doch sogar für den GröIaZ legal sein.
Zwei Bilder vom 24C3, das BCC mit der „Heart of Gold“ …
und der Bundestrojaner des CCC