Schon seit längerer Zeit wollte ich diverse RFID-basierte Systeme genauer unter die Lupe nehmen. Das Essen in manchen Kantinen oder auch Mensen wird oft via kontaktloser Chipkarte bezahlt und auch Transport- und Zugangssysteme setzen bereits seit längerer Zeit auf diese Technologie. Es kann sich also nur lohnen, einen genaueren Blick darauf zu werfen.

Dabei ist die zugrunde liegende Funktionsweise von RFID über 65 Jahre alt: Bereits 1948 wurden von Harry Stockman in seiner Veröffentlichung „Communication by Means of Reflected Power“ die Grundlagen dazu gelegt. Später wurde das System vor allem durch den Konzern Siemens und dessen proprietäre SICARID weiterentwickelt, welches auf in einen Hohlraum eingedrehte Schrauben und einer Frequenzrampe basiert, wodurch man immerhin 12 Bit Daten speichern konnte (was bereits 4096 mögliche Kombinationen zulässt).

Die RFID-Karten, welche ich mir ansehen wollte, sind allerdings wesentlich weiter entwickelt und bieten sogar eine grundlegende Verschlüsselung an. Grundlegend deshalb, weil ihre Unwirksamkeit bereits 2006 von Leuten des Chaos Computer Clubs sowie Forschern der University of Virginia gezeigt wurde. Soweit zur Geschichte, nun zum praktischen Teil.

Informationen sammeln

Zuerst galt es – wie immer – Informationen zu sammeln. Die RFID-Karten, welche ich mir ansehen wollte, stammen von einer Firma namens MIFARE welche zu NXP Semiconductors gehört. Laut einem Wikipediaeintrag nutzen die MIFARE-Transponder im Scheckkartenformat die Frequenz von 13.56 MHz und basieren auf den ISO-Standards ISO7816 sowie ISO14443A. Da ich nicht einer Limitierung unterliegen wollte habe ich mich für ein Lese-/Schreibgerät des Herstellers Advanced Card Systems Ltd. entschieden, genauer gesagt den „ACR122U USB NFC Reader“. Bezieht man diesen direkt vom Hersteller kommt man, inklusive Versandkosten, auf $91.00. Über andere Händler ist er um einiges günstiger zu beziehen. Zudem werden diverse NFC-Standards unterstützt, wodurch das Lesegerät in Verbindung mit einem Smartphone der neueren Generation in Zukunft noch einmal interessant werden könnte.

2014-07-24_rfid-dump-clone-profit-rfid-reader
Der ACR122U RFID-Reader inklusive Blank-Card

Die Software

Bei Analysen setze ich – wie immer – auf Kali Linux. Diese auf Debian basierende Linux-Distribution ist der direkte Nachfolger von BackTrack, einer Pentesting-Distribution welche ausschließlich dafür geschaffen wurde, Sicherheitslücken zu finden und diese zugänglich zu machen.

Dump

Nachdem alles eingetroffen war stellte sich allerdings die Frage, wie man das denn jetzt genau macht. Die Antwort lag, wie hätte es anders sein können, verstreut über mehrere Webseiten und diversen Versuchen. Zuerst startet man den PC/SC-Daemon (via pcscd in einer root-Shell) und anschließend noch den pcscscan. Dann steckt man das Lesegerät an, wartet bis dieses initialisiert ist und legt darauf dann die Karte. Anschließend kann man mit dem Programm mfoc („Mifare Classic Offline Cracker“) einen Dump der Karte erstellen, Beispiel: mfoc -P 500 -O card_dump.mfd

Dies macht man sowohl für die Karte, welche man klonen möchte als auch für die sogenannte Blank-Card, welche noch keine Informationen enthält. Der Prozess kann sich allerdings über mehrere Stunden ziehen, da jede Karte 32 Schlüssel enthält, welche unter Umständen erst geknackt werden müssen. Zudem darf die Karte dabei nicht vom Lesegerät genommen werden.

Bei mir dauerte das Anfertigen eines Dumps für die Karte mit den gewünschten Daten mangels Schlüssel geschlagene 3 Stunden, die Blank-Card wurde innherhalb weniger Sekunden zugänglich gemacht. Dass das Brechen der Verschlüsselung so lange dauert könnte zudem auch an meinem Lesegerät liegen, da die Übertragungsrate nicht gerade berauschend ist. Mit einem Proxmark 3 (einem wesentlich teurerem Gerät) kann man – laut Aussagen Dritter – beliebige Mifare Classic Karten innerhalb von etwa 9 Minuten knacken. Dafür zahlt man dann allerdings auch den stolzen Preis von aktuell $399.00.

Die resultierenden 4 KB großen Dump-Dateien kann man sich mit einem Hexeditor ansehen, der Inhalt entspricht dabei den 64 Blöcken, welche auf der Karte gespeichert sind.

Clone

Beim Klonen der Karte muss man wissen, welche Art von Blank-Card man besitzt. Gewöhnliche Mifare-Classic-Karten besitzen 64 Blöcke, wobei der erste Block (Block 0) ausschließlich gelesen werden kann und die eindeutige UID der Karte enthält, welche teilweise auch zur Identifizierung genutzt wird. Es gibt allerdings, laut Gerüchten von einem chinesischen Hersteller, Blank-Cards welche auch das Schreiben des ersten Blocks erlauben und somit eine exakte Kopie einer Karte ermöglichen. Diese werden „Magic Cards“ genannt und sind von Mifare eigentlich nicht vorgesehen.

Befehl zum Klonen einer Karte mit beschreibbarem Block 0 („Magic Card“):

# nfc-mfclassic W A card.mfd blank.mfd f

Befehl zum Klonen einer Karte mit unbeschreibbarem Block 0:

# nfc-mfclassic w A card.mfd blank.mfd f

Der Parameter card.mfd steht hierbei als Platzhalter für den Dump der Karte, welchen man auf die Karte schreiben möchte. Die Angabe blank.mfd hingegen für den Dump der Karte, welche leer ist (und vorher auf den RFID-Reader gelegt werden sollte). Letzteres enthält die Zugangsschlüssel der einzelnen Sektoren und ermöglicht so den Schreibvorgang.

2014-07-24_rfid-dump-clone-profit-terminal-mfclassic
Erfolgreicher Klonvorgang einer Karte

Das Schreiben dauert, im Gegensatz zum Lesevorgang, nur wenige Sekunden. Leider war es mir nicht möglich, auf einer soeben beschriebenen Karte wieder den Ursprungszustand herzustellen. Es bleibt allerdings die Möglichkeit, erneut einen Dump der Karte zu erstellen und anschließend einen weiteren Klonvorgang mit dem Inhalt der blank.mfd zu starten, wodurch man wieder den Ausgangszustand erhält.

Profit!

Wider erwarten hat der erste Klon einer Kantinenkarte im Praxiseinsatz erfolgreich funktioniert. Theoretisch wäre es möglich diese Karte beliebig zu vervielfältigen oder nach jedem Essen auf ihren alten Stand zurückzusetzen. Praktisch macht man sich damit natürlich strafbar, zumal dieser Artikel lediglich der Information dienen soll.

Für mich ist damit das Experiment beendet, eine Schwachstelle nachgewiesen und eine Betrugsmöglichkeit aufgedeckt. Hoffentlich ändert sich das in Zukunft, zumal neuere RFID-Chips, wie der Nachfolger der Mifare-Classic-Karte, bessere Verschlüsselungen anbieten.

Mythos Alufolie?

Es gibt diesen Mythos, dass man seine Karten einfach mit Alufolie umwickeln kann, um das RFID-Signal zu blockieren. Ein kurzer Test hat gezeigt: Es klappt!

Es reicht sogar aus, zwischen RFID-Reader und Karte lediglich ein Stück Alufolie in der Größe einer Scheckkarte zu legen. Alternativ kann man auch die Karte mit Alufolie umwickeln. Bleibt die Frage, ob man nicht doch irgendwie die Karte auslesen kann, wenn diese mit Alufolie umwickelt ist (etwa mit leistungsstärkeren Lesegeräten).

Fazit

Es macht immer wieder Spaß zu sehen, auf welch grauenvoll unwirksamen Technologien wir unsere Gesellschaft aufbauen. Dabei gäbe es gute und wirksame Verschlüsselungen, allerdings werden diese – aus welchen Gründen auch immer – nicht verwendet. Zudem konnte ich mit dem RFID-Leser auch in dutzenden anderen Karten RFID-Chips aufspüren, etwa in der meiner bevorzugten Bank oder auch im neuen Personalausweis. Diese Karten konnte ich zwar nicht direkt auslesen (bzw. noch nicht), trotzdem kann man mittels der eindeutigen ID Personen tracken. Das ist nicht wirklich das, was ich will. Generell würde mich einmal interessieren, warum das überhaupt überall verbaut und genehmigt wird. Wer wurde jemals gefragt, ob er (oder sie) das überhaupt haben will? Und abgesehen davon: Warum gibt man mir keine Möglichkeit, das zu ändern (bis auf die mutwillige Zerstörung der Chips)?