Capture bricolage de clés cryptographiques Mifare et copie par vous-même des clés d'interphone IronLogic

À peine saisir des clés de chiffrement et copier des porte-clés Mifare pour les interphones est bien sûr impossible, mais assembler un appareil qui le fera est très réel. Je ne parlerai pas ici de ce qu'est Mifare et j'entrerai dans les détails techniques, je dirai seulement que cette technologie est utilisée maintenant, par exemple, dans les interphones, et pour copier un trousseau d'intercom, vous devez connaître les clés cryptographiques avec lesquelles il a été fermé.
Attention! Cet article est uniquement à des fins éducatives. Nous vous rappelons que toute pénétration dans les systèmes d'information peut être poursuivie par la loi.
De nombreuses personnes intéressées par la technologie MIfare ont probablement le lecteur / enregistreur de carte / porte-clés Mifare le plus simple, composé d'un module PN532 et d'un adaptateur USB-UART:



Par un raffinement simple et peu coûteux, cet appareil peut être conçu pour capturer
Données d'authentification du lecteur, à l'aide desquelles les clés de chiffrement sont calculées, si nécessaires pour la lecture et la copie. Il existe également des appareils disponibles dans le commerce à cet effet - SMKey, Proxmark3, Chameleon et quelques autres. Ce sont des appareils avec de nombreuses fonctions, pratiques, mais pas bon marché.

J'attire votre attention sur une option plus économique basée sur un "petit ensemble de gentleman" similaire du module PN532 et un adaptateur USB-UART, qui vous permet de capturer des données à partir d'un lecteur Mifare, comme un interphone, et de calculer les clés cryptographiques avec lesquelles le lecteur se réfère à la balise.

Le dispositif développé dispose d'une carte de débogage peu coûteuse et «populaire» basée sur le processeur STM32F103C8T6, également appelé «BluePill» avec le module PN532 et l'adaptateur USB-UART qui y sont connectés. Cet appareil est connecté via un câble USB-OTG à un smartphone sur Android. Tout cela est assemblé dans une version maquette sans soudure, à l'aide de cavaliers, et a quelque chose comme ça, bien qu'il soit non présentable, mais tout à fait fonctionnel:



Le schéma d'assemblage est très simple et se présente sous forme de texte:

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

IMPORTANT! Les commutateurs d'interface PN532 doivent être réglés en mode SPI! Vous pouvez flasher STM32 à l'aide de l'utilitaire FlashLoaderDemonstrator via l'adaptateur USB-UART existant.

Voici une démonstration de la capture d'une clé de chiffrement à partir d'un simulateur de lecteur d'interphone (Arduino + PN532):


Étant donné que les lecteurs IronLogic (IL), pour travailler avec qui cet appareil a été développé, tentent de lire une balise avec une clé de chiffrement calculée sur la base de l'UID de cette balise, cet UID doit d'abord être défini. Vous pouvez le faire de deux manières: manuellement ou lire à partir de la balise. Après cela, nous faisons une capture et attendons le calcul des clés de chiffrement.

L'onglet suivant du programme «Record on Classic» utilise la capacité des versions antérieures des lecteurs IL à écrire des copies sur des blancs Mifare Classic bon marché. Cette méthode est basée sur le fait que le lecteur IL après autorisation envoie à l'interphone non pas l'UID d'origine de la balise, mais les informations enregistrées dans le premier bloc (dans le cas général, correspondant à l'UID de l'original). Pour ce faire, nous devons capturer et calculer la clé de chiffrement de l'étiquette qui servira de blanc, fermer le secteur zéro avec elle et écrire quatre octets de l'UID de l'étiquette qui sert de prototype dans le premier bloc de cette étiquette. Pour ce faire, nous n'avons même pas besoin de récupérer la clé de crypto-monnaie d'origine et de supprimer son vidage, il suffit de connaître son UID, mais cela n'est vrai que si l'original est "original" et non une copie, alors vous devez toujours lire le premier bloc et déjà écrire sur une copie. Pour le rendre plus clair, considérons cet exemple - supposons que nous voulions faire une copie de la clé d'origine avec l'UID 0xEBD52AC5, qui est également écrite dans le premier bloc de l'original, sur une étiquette Mifare Classic régulière avec un UID, disons 0x12345678. Pour ce faire, à l'aide de l'appareil présenté, qui a été judicieusement appelé par un camarade Shaitan-Mashina, nous trouvons la clé de cryptage pour cet UID et pour l'objet particulier (entrée, maison ...) dont nous avons besoin. Laissez la clé de chiffrement être 0xABCDEF098765, puis modifiez le secteur zéro du vidage de copie comme suit:



Dans le premier bloc, nous écrivons l'UID du 0xEBD52AC5 d'origine, et dans le troisième bloc, les six octets de la clé de chiffrement trouvée pour cette pièce sont 0xABCDEF098765. Nous écrivons le vidage sur le blanc et obtenons une copie de la clé d'interphone. Quelque chose comme ça SMKey fait des copies d'IronLogic sur Mifare Classic normal, et c'est ce que fait ce programme d'enregistrement. Dans le champ «Code», nous saisissons ou lisons manuellement 4 octets d'UID à partir de la clé d'origine, qui seront enregistrés dans le 1er bloc de la copie. Nous commençons puis suivons les invites du programme. Nous lisons d'abord l'UID de la pièce, puis nous amenons l'appareil à l'interphone et capturons les données d'authentification. Une fois le calcul terminé, le programme proposera d'apporter le blanc pour l'enregistrement des données. Si plus d'une clé cryptographique est trouvée, après avoir enregistré la première option, elle aura la possibilité de vérifier la copie reçue. Si la copie ne tient pas, vous devez essayer la clé calculée suivante ou effacer (restaurer) le blanc pour une utilisation future. La copie peut également ne pas fonctionner car le code qui est écrit dans le 1er bloc de la copie a été mal défini - par exemple, si vous essayez d'écrire le vrai UID non pas le porte-clés d'origine, mais d'une copie effectuée à l'aide de la méthode ci-dessus. Dans ce cas, vous ne devez pas utiliser l'UID les étiquettes et les données du 1er bloc, qui peuvent être obtenues dans la section "Copie d'un secteur".

Cette méthode ne fonctionnera pas non plus pour les dernières versions du logiciel de lecture IL. Dans ce cas, une copie peut être effectuée en copiant le 0e secteur entier (4 blocs) sur une pièce qui vous permet d'enregistrer le 0e secteur à l'aide de la section «Copie d'un secteur» dans l'application. Ici, nous trouvons également d'abord la clé de crypto-monnaie d'origine, lisons son secteur zéro, puis écrivons dans le blanc. En raison du manque de blancs OTP et OTP-2.0 à portée de main, cette fonctionnalité n'a jusqu'à présent été testée que sur des blancs ZERO, bien que les nouvelles versions de lecteurs nécessitent l'utilisation d'OTP-2.0.

Eh bien, pour commencer - la section "Enregistrer l'UID" de l'application vous permet de modifier l'UID, de restaurer le 0e bloc endommagé et de réinitialiser les clés de chiffrement des blancs ZERO par défaut.

Donc - pour résumer brièvement. Pour fabriquer un tel appareil, nous achetons ou recherchons un module PN532, l'un des adaptateurs USB - UART FTDI, PL2303, CH340 ou CP2102, une carte de débogage STM32F103C8T6, une douzaine de cavaliers, un adaptateur USB-OTG et un smartphone (tablette) sur Android avec OTG. Nous assemblons l'appareil lui-même selon le schéma ci-dessus, flash * .bin avec le fichier STM32 et installons l'application * .apk à partir de l' archive
sur un smartphone. Pour un fonctionnement correct, l'application sur le smartphone doit être lancée lorsque l'adaptateur USB-UART est connecté, soit par défaut, soit par sélection manuelle, sinon l'application n'aura pas accès à l'adaptateur.

Je veux dire quelques mots sur le module PN532 - tous ces modules ne sont pas «tout aussi utiles»! Sur les trois modules (comme sur la photo ci-dessus) que j'ai achetés, un ne lisait pas et n'écrivait pas de balises, en particulier ZERO et OTP-2.0, mais il fonctionnait normalement en mode passif avec des lecteurs intercom, l'autre se comportait exactement le contraire, et seulement le troisième de plus- moins faire face à la fois aux tags et aux interphones (bien pire que les deux premiers). Peut-être que je n'ai pas de chance et que ce lot particulier de modules s'est avéré ne pas être de la meilleure qualité, mais d'autres personnes s'en plaignent. Cependant - à quelqu'un d'aussi chanceux. Que dis-je? Les modules PN532 sont apparus en vente pour une disposition légèrement différente, qui sont plus chers, mais, selon les critiques, ils n'ont pas de tels problèmes:



Si quelqu'un rencontre PN532, qui n'écrit pas ou ne lit pas bien les étiquettes, je peux recommander d'ajouter un module RC522 à l'appareil, qui vaut un sou, mais remplit parfaitement ses fonctions, selon le schéma suivant:

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
Dans ce cas, le PN532 ne fonctionnera que lors de la capture de données du lecteur, et toute la charge de travailler avec des balises tombera sur les épaules du RC522.

En conclusion, je tiens à dire que les performances de l'appareil en conditions réelles n'ont été testées que sur des lecteurs IronLogic de toute première génération, sans filtres ZERO, OTP, OTP-2.0. Les autres versions n'ont tout simplement pas accès, donc pour les lecteurs IL plus modernes, le développement de logiciels sera nécessaire, et, bien sûr, la présence de ces lecteurs.

Archive

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


All Articles