Achtung! Alle hier dargestellten Verfahren, Programme, Source Codes, Hardware etc. werden ausschließlich für Zwecke der Forschung und Bildung publiziert! Der CCC e.V. übernimmt keinerlei Haftung für Schäden oder juristische Probleme jeder Art.
Das Auslesen einer GSM-Karte oder andere Handlungen, die untenstehend für Bildungszwecke dokumentiert wurden, könnten möglicherweise illegal sein. Die Benutzung eines Clones einer fremden Karte ist definitiv illegal. Der CCC e.V. lehnt solche Handlungen strikt ab und fordert in keinster Weise dazu auf.
Die Dokumentation dient ausschließlich der nachvollziehbaren Darlegung des Sicherheitsproblemes in GSM-Netzen.
Das GSM-Netz galt lange als schwere Nuß. Die Tatsache, daß das System aber nur teilweise dokumentiert war, ließ einiges vermuten aber eben auch im dunkeln. Die Frage, ob es möglich ist, auf Kosten anderer zu telefonieren, wenn man nur die richtige Menge Energie in das Projekt steckt, beschäftigt natürlich viele Leute.
Die Netzbetreiber wiegten in Sicherheit. Alles ist sicher. Na klar. Keine Gefahr für die Kunden. Aber wie funktioniert der Kram denn eigentlich?
Der folgende Text informiert genau über die Details des GSM Clonings. Eine Risikoanalyse informiert über die daraus resultierenden Gefahren für Kunden des D2-Netzes.
Die Authentifizierung der GSM-Teilnehmer basiert auf einem Challenge-Response Verfahren. Die Prozedur beginnt, in dem das GSM-Netz dem Telefon des Teilnehmers eine Zufallszahl, RAND genannt, schickt.
Das Telefon schickt diese Zahl an die SIM-Karte weiter. Dort wird mit Hilfe eines A3 genannten Algorithmus eine Antwort SRES berechnet, die wieder über das Telefon zurück zum Netz geschickt und dort auf Korrektheit überprüft wird. Ebenso wird mit Hilfe eines A8 genannten Algorithmus ein Session-Key Kc für die Sprachverschlüsselung generiert.
Welche Algorithmen für A3 und A8 eingesetzt werden, war lange Zeit ein Geheimnis.
Marc Briceno von der Smart Card Developers Association hat nun mit Hilfe von aufgetauchten Unterlagen und Reverse Engineering herausgefunden, daß es einen Algorithmus namens COMP128 gibt, und wie dieser funktioniert. COMP128 wird als Referenzimplementation von A3/A8 im GSM-Standard beschrieben und wird anscheinend von vielen GSM-Betreibern genutzt.
Ian Goldberg und Dave Wagner vom ISAAC Forschungszentrum in Berkeley haben wiederum eine Schwachstelle in diesem Algorithmus entdeckt, die es ermöglicht, den für die Berechnung auf der Chipkarte benötigten, geheimen Schlüssel Ki zu extrahieren. Und zwar läuft das über bestimmte Kombinationen von Anfragen, die, wenn sie zu demselben Rechenergebnis kommen, bestimmte Bits des Schlüssels verraten. Eine genaue Beschreibung findet sich unter http://www.isaac.cs.berkeley.edu/isaac/gsm-faq.html.
Die Attacke setzt das Senden von ca. 150000 Anfragen an die Karte voraus. Ebenso ist in den meisten Fällen dazu die PIN der betreffenden Karte notwendig, man braucht natürlich auch einen geeigneten Kartenleser wie den UniProg. Man muß also den Rechner schon bis zu 12 Stunden auf der zu untersuchenden Karte rödeln lassen.
Der CCC hat aus dieser Basis für Linux eine eigene Software gebastelt, die den Angriff wie beschrieben durchführt: GSM Hack. Die Software ist auf unserem FTP Server zu finden. Sie basiert in teilen auf der SIO (Serial IO Libary für Linux/WIN32) , die ebenfalls auf dem FTP-Server zu finden ist. Zur Installation müssen die beiden Dateien in das selbe Verzeichnis ausgepackt werden. Die Datei README.GSM erklärt dann alles weitere, um die Software an den Start zu bringen.
GSM Hack unterstützt den CCC Chipkartenleser UniProg (siehe auch Datenschleuder #61) und den holländischen Dumb Mouse Chipkartenleser.
Wenn man diese Kombination aus Soft- und Hardware an den Start bringt und eine D2-Karte einlegt, dann spuckt die Software nach ein paar Stunden den geheimen Schlüssel der eigenen Karte, den Ki aus.
Zur erfolgreichen Simulation der eigenen Karte benötigt man außer dem Ki noch die IMSI (International Mobile Subscriber ID). Die IMSI der Karte kann man, wenn man die PIN kennt, direkt auslesen. Sie steht im elementary file 6f 07. Mit dem Programm stest aus dem SIO-Paket geht das ganz einfach. Hier ist ein Protokoll, wie so etwas aussieht.
Um jetzt mit Kenntnis der Daten der eigenen Karte telefonieren zu können, benötigt man einen GSM-Kartenemulator. Eine entsprechende DOS-Software haben wir auch geschrieben, sie liegt ebenfalls auf unserem FTP-Server.
Die Software ist aus pragmatischen Gründen für DOS geschrieben: die für Motorola-Telefone benötigte Bitrate von 8727 bps (!) läßt sich unter Linux nur mit Kernelmodifikation erreichen.
Weiterhin benötigt man für den Klon noch ein Stück Hardware, Season-Interface oder Inverse Reader genannt. Das ist die Platine, die hier auf dem Foto im Telefon
steckt. Ein solches Interface kann man entweder aus dem Pay-TV-Sektor
beziehen oder aber mit Hilfe des UniProg selbst bauen. Mehr dazu demnächst auf diesem Server.
Achtung!
Es wird nochmals ausdrücklich auf den Disclaimer am Anfang dieser Seite verwiesen. Eine über die Zwecke von Bildung
und Forschung hinausgehende Nutzung des Hacks lehnen wir strikt
ab!
Wer das alles nicht versteht, sollte sich das Buch "Handbuch der Chipkarten" von Rankl/Effing vom Hanser Verlag organisieren. Das gibt einen brauchbaren Überblick über die Materie.
So, und damit gibt es jetzt alles, was nötig ist, um die Klonbarkeit von GSM-Karten praktisch zu belegen. Ein typischer Fall des Versagens von Security by Obscurity: hätte das GSM-Konsortium frühzeitig alle Standards offengelegt, wäre die Schwachstelle rechtzeitig aufgefallen. Von den deutschen Providern setzt übrigens nur D2 Privat den COMP128-Algorithmus ein. In anderen Ländern ist COMP128 allerdings weit verbreitet.
Den Hobbybastlern wünschen wir jetzt viel Spaß beim Erstellen Eurer privaten Sicherheitskopien und verweisen nochmal auf die Rechtslage.
Viel Spaß am Gerät!
CCC