Selbstgemachte Erfassung von Mifare-Kryptoschlüsseln und Selbstkopieren von IronLogic-Türsprechschlüsseln

Kryptoschlüssel kaum zu greifen und Mifare-Schlüsselanhänger für Intercoms zu kopieren, ist natürlich unmöglich, aber es ist durchaus möglich, ein Gerät zusammenzustellen, das dies ermöglicht. Ich werde hier nicht darauf eingehen, was Mifare ist, sondern auf technische Details eingehen. Ich möchte lediglich darauf hinweisen, dass diese Technologie derzeit zum Beispiel für Intercoms verwendet wird. Um einen Intercom-Schlüsselbund zu kopieren, müssen Sie die kryptografischen Schlüssel kennen, mit denen er geschlossen wurde.
Achtung! Dieser Artikel dient nur zu Bildungszwecken. Wir weisen darauf hin, dass das Eindringen in Informationssysteme strafbar ist.
Viele an der MIfare-Technologie Interessierte haben wahrscheinlich den einfachsten Mifare-Karten- / Schlüsselleser zum Lesen und Schreiben, bestehend aus einem PN532-Modul und einem USB-UART-Adapter:



Durch eine einfache und kostengünstige Ausgestaltung kann dieses Gerät zum Erfassen aus gemacht werden
Leserauthentifizierungsdaten, mit deren Hilfe die Kryptoschlüssel berechnet werden, werden so zum Lesen und Kopieren benötigt. Es gibt auch im Handel erhältliche Geräte für diesen Zweck - SMKey, Proxmark3, Chameleon und einige mehr. Dies sind Geräte mit vielen Funktionen, bequem, aber nicht billig.

Ich mache Sie auf eine kostengünstigere Option aufmerksam, die auf einem ähnlichen „kleinen Gentleman's Set“ aus dem PN532-Modul und einem USB-UART-Adapter basiert, mit dem Sie Daten von einem Mifare-Lesegerät wie einer Gegensprechanlage erfassen und die kryptografischen Schlüssel berechnen können, mit denen das Lesegerät auf das Tag verweist.

Das entwickelte Gerät verfügt im Grunde genommen über ein kostengünstiges, „beliebtes“ Debug-Board auf der Basis des Prozessors STM32F103C8T6, auch „BluePill“ genannt, mit angeschlossenem PN532-Modul und USB-UART-Adapter. Dieses Gerät ist über ein USB-OTG-Kabel mit einem Smartphone unter Android verbunden. All dies wird in einer Modellversion ohne Löten mit Hilfe von Jumpern zusammengebaut und hat so etwas, obwohl es nicht vorstellbar ist, aber ziemlich funktioniert:



Das Montagebild ist sehr einfach und wird in Textform dargestellt:

PN532 ___________________STM32F103C8T6

SCK _____________________ PA5 (SPI1_SCK)
MISO ____________________ PA6 (SPI1_MISO)
MOSI ____________________ PA7 (SPI1_MOSI)
SS ______________________ PB0 (GPIO_OUTPUT)
SIGIN ___________________ PB11 (TIM2_CH4)
SIGOUT __________________ PA12 (TIM1_ETR)
SIGOUT __________________ PA0 (TIM2_ETR)
VCC _____________________ + 5V
GND_____________________GND


USB-UART ________________ STM32F103C8T6

RX ______________________ PA9 (USART1_TX)
TX ______________________ PA10 (USART1_RX)
+ 5V _____________________ + 5V
GND_____________________GND

WICHTIG! PN532-Schnittstellenschalter müssen auf SPI-Modus eingestellt sein! Sie können STM32 mit dem Dienstprogramm FlashLoaderDemonstrator über den vorhandenen USB-UART-Adapter flashen.

Hier ist eine Demo zum Erfassen eines Kryptoschlüssels von einem Türsprechleser-Simulator (Arduino + PN532):


Da IronLogic (IL) -Lesegeräte, für die dieses Gerät entwickelt wurde, versuchen, ein Tag mit einem Kryptoschlüssel zu lesen, der anhand der UID dieses Tags berechnet wird, muss diese UID zuerst festgelegt werden. Sie können dies auf zwei Arten tun - manuell oder vom Tag lesen. Danach machen wir ein Capture und warten auf die Berechnung der Kryptoschlüssel.

Die nächste Registerkarte des Classic Recording-Programms nutzt die Fähigkeit früherer Versionen von IL-Readern, Kopien auf billige Mifare Classic-Rohlinge zu schreiben. Diese Methode basiert auf der Tatsache, dass der IL-Leser nach der Autorisierung nicht die ursprüngliche UID des Tags an die Gegensprechanlage sendet, sondern die im ersten Block aufgezeichneten Informationen (im Allgemeinen die gleiche wie die UID des Originals). Dazu müssen wir den Kryptoschlüssel des Etiketts erfassen und berechnen, der als Leerzeichen dient, den Nullsektor damit schließen und vier Bytes der UID des Etiketts, das als Prototyp dient, in den ersten Block dieses Etiketts schreiben. Dazu müssen wir nicht einmal den ursprünglichen Kryptowährungsschlüssel abrufen und den Speicherauszug entfernen. Es reicht aus, um die UID herauszufinden. Dies ist jedoch nur dann der Fall, wenn das Original "original" und keine Kopie ist. Dann müssen Sie den ersten Block noch lesen und schon schreibe auf eine Kopie. Betrachten Sie zur Verdeutlichung dieses Beispiel: Angenommen, Sie möchten eine Kopie des Originalschlüssels mit der UID 0xEBD52AC5 erstellen, die auch im ersten Block des Originals auf einem normalen Mifare Classic-Etikett mit einer UID (z. B. 0x12345678) geschrieben ist. Dazu finden wir mit Hilfe des vorgestellten Geräts, das treffend von einem Genossen Shaitan-Mashina genannt wird, die Kryptowährung für diese UID und für das bestimmte Objekt (Eingang, Zuhause ...), das wir benötigen. Der Kryptoschlüssel sei 0xABCDEF098765, dann bearbeite den Nullsektor des Copy-Dumps wie folgt:



Im ersten Block schreiben wir die UID des ursprünglichen 0xEBD52AC5 und im dritten Block sind die sechs Bytes des für dieses Werkstück gefundenen Kryptoschlüssels 0xABCDEF098765. Wir schreiben den Speicherauszug in das leere Feld und erhalten eine Kopie des Intercom-Schlüssels. So etwas wie dieser SMKey kopiert IronLogic auf normalem Mifare Classic, und genau das macht dieses Aufnahmeprogramm. In das Feld "Code" geben wir manuell 4 Bytes der UID des Originalschlüssels ein oder lesen sie ab, die im ersten Block der Kopie aufgezeichnet wird. Wir starten und folgen dann den Anweisungen des Programms. Zuerst lesen wir die UID des Werkstücks, dann bringen wir das Gerät zur Gegensprechanlage und erfassen Authentifizierungsdaten. Nach Abschluss der Berechnung bietet das Programm an, den Rohling für die Datenaufzeichnung mitzubringen. Wenn mehr als ein kryptografischer Schlüssel gefunden wird, wird ihm nach dem Aufzeichnen der ersten Option die Möglichkeit gegeben, die empfangene Kopie zu überprüfen. Wenn die Kopie nicht passt, sollten Sie den nächsten berechneten Schlüssel versuchen oder das Leerzeichen für die zukünftige Verwendung löschen (wiederherstellen). Eine Kopie funktioniert möglicherweise auch nicht, weil der Code, der im ersten Block der Kopie geschrieben wurde, falsch definiert wurde - beispielsweise, wenn Sie versuchen, die echte UID nicht des ursprünglichen Schlüsselanhänger zu schreiben, sondern eine Kopie, die mit der oben beschriebenen Methode erstellt wurde. In diesem Fall sollten Sie die UID nicht verwenden Beschriftungen und Daten aus dem 1. Block, die im Abschnitt "Kopieren eines Sektors" abgerufen werden können.

Diese Methode funktioniert auch nicht mit den neuesten Versionen der IL-Reader-Software. In diesem Fall kann eine Kopie erstellt werden, indem der gesamte 0. Sektor (4 Sätze) auf ein Werkstück kopiert wird, mit dem Sie den 0. Sektor mithilfe des Abschnitts „Kopieren eines Sektors“ in der Anwendung aufzeichnen können. Hier finden wir auch zuerst den ursprünglichen Kryptowährungsschlüssel, lesen seinen Nullsektor und schreiben dann in das Leerzeichen. Aufgrund des Mangels an verfügbaren OTP- und OTP-2.0-Rohlingen wurde diese Funktion bisher nur an ZERO-Rohlingen getestet, obwohl neuere Leserversionen die Verwendung von OTP-2.0 erfordern.

Nun, für den Anfang: Im Anwendungsbereich „UID-Aufzeichnung“ können Sie die UID ändern, den beschädigten 0. Block wiederherstellen und die NULL-Werkstück-Kryptoschlüssel auf die Standardeinstellungen zurücksetzen.

Also - um es kurz zusammenzufassen. Um ein solches Gerät herzustellen, kaufen oder suchen wir ein PN532-Modul, einen der USB-UART-Adapter FTDI, PL2303, CH340 oder CP2102, ein Debug-Board STM32F103C8T6, anderthalb Dutzend Jumper, einen USB-OTG-Adapter und ein Smartphone (Tablet) auf Android mit OTG. Wir bauen das Gerät selbst nach obigem Schema zusammen, flashen * .bin mit der STM32-Datei und installieren die * .apk-Anwendung aus dem Archiv
auf einem Smartphone. Für einen ordnungsgemäßen Betrieb muss die Anwendung auf dem Smartphone gestartet werden, wenn der USB-UART-Adapter entweder standardmäßig oder manuell angeschlossen ist. Andernfalls erhält die Anwendung keinen Zugriff auf den Adapter.

Ich möchte ein paar Worte zum PN532-Modul sagen - nicht alle diese Module sind „gleich nützlich“! Von den drei Modulen (wie im obigen Foto), die ich gekauft habe, hat eines keine Tags gelesen und geschrieben, insbesondere ZERO und OTP-2.0, aber es funktionierte normalerweise im passiven Modus mit Intercom-Readern, das andere verhielt sich genau umgekehrt und nur das dritte mehr. weniger mit Tags und Intercoms umgehen (obwohl schlechter als die ersten beiden). Vielleicht habe ich Pech und diese bestimmte Menge von Modulen erwies sich als nicht von bester Qualität, aber andere Leute beschweren sich darüber. Jedoch - zu jemandem als glücklich. Was sage ich PN532-Module wurden für ein etwas anderes Layout angeboten, das teurer ist, aber laut Testberichten keine derartigen Probleme aufweist:



Wenn jemand auf PN532 stößt, das Beschriftungen nicht gut schreibt oder liest, kann ich empfehlen, dem Gerät ein RC522-Modul hinzuzufügen, das einen Cent wert ist, dessen Funktionen jedoch nach folgendem Schema einwandfrei ausgeführt werden:

RC522____________________STM32F103C8T6

RST ______________________ PB12 (GPIO_OUTPUT)
SCK ______________________ PB13 (SPI2_SCK)
MISO _____________________ PB14 (SPI2_MISO)
MOSI _____________________ PB15 (SPI2_MOSI)
SDA ______________________ PA8 (GPIO_OUTPUT)
VCC ______________________ + 5V
GND______________________GND
In diesem Fall funktioniert der PN532 nur, wenn Daten vom Lesegerät erfasst werden, und die gesamte Belastung durch das Arbeiten mit Tags liegt auf den Schultern des RC522.

Abschließend möchte ich sagen, dass die Leistung des Geräts unter realen Bedingungen nur mit IronLogic-Lesegeräten der ersten Generation ohne ZERO-, OTP- und OTP-2.0-Filter getestet wurde. Andere Versionen haben einfach keinen Zugriff, sodass für modernere IL-Lesegeräte Softwareentwicklung erforderlich ist, und natürlich die Anwesenheit dieser Lesegeräte.

Archiv

Source: https://habr.com/ru/post/de479370/


All Articles