diff --git a/src/todo/radio-hacking/pentesting-rfid.md b/src/todo/radio-hacking/pentesting-rfid.md index 071d6a51d..ff30a0da0 100644 --- a/src/todo/radio-hacking/pentesting-rfid.md +++ b/src/todo/radio-hacking/pentesting-rfid.md @@ -4,83 +4,85 @@ ## Introduction -**L'identification par radiofréquence (RFID)** est la solution radio à courte portée la plus populaire. Elle est généralement utilisée pour stocker et transmettre des informations qui identifient une entité. +**Identification par radiofréquence (RFID)** est la solution radio courte portée la plus répandue. Elle est généralement utilisée pour stocker et transmettre des informations identifiant une entité. -Une étiquette RFID peut s'appuyer sur **sa propre source d'alimentation (active)**, comme une batterie intégrée, ou recevoir son alimentation de l'antenne de lecture en utilisant le courant **induit par les ondes radio reçues** (**passive**). +Une étiquette RFID peut disposer de **sa propre source d'alimentation (active)**, comme une batterie intégrée, ou recevoir son alimentation de l'antenne de lecture via le courant **induit par les ondes radio reçues** (**passive**). ### Classes -EPCglobal divise les étiquettes RFID en six catégories. Une étiquette de chaque catégorie possède toutes les capacités énumérées dans la catégorie précédente, ce qui la rend rétrocompatible. +EPCglobal divise les tags RFID en six catégories. Un tag dans chaque catégorie possède toutes les capacités listées dans la catégorie précédente, ce qui le rend rétrocompatible. -- Les étiquettes de **Classe 0** sont des étiquettes **passives** qui fonctionnent dans les bandes **UHF**. Le fournisseur les **préprogramme** à l'usine de production. En conséquence, vous **ne pouvez pas changer** les informations stockées dans leur mémoire. -- Les étiquettes de **Classe 1** peuvent également fonctionner dans les bandes **HF**. De plus, elles peuvent être **écrites une seule fois** après la production. De nombreuses étiquettes de Classe 1 peuvent également traiter des **contrôles de redondance cyclique** (CRC) des commandes qu'elles reçoivent. Les CRC sont quelques octets supplémentaires à la fin des commandes pour la détection d'erreurs. -- Les étiquettes de **Classe 2** peuvent être **écrites plusieurs fois**. -- Les étiquettes de **Classe 3** peuvent contenir des **capteurs intégrés** qui peuvent enregistrer des paramètres environnementaux, tels que la température actuelle ou le mouvement de l'étiquette. Ces étiquettes sont **semi-passives**, car bien qu'elles **aient** une source d'alimentation intégrée, comme une **batterie** intégrée, elles **ne peuvent pas initier** une **communication** sans fil avec d'autres étiquettes ou lecteurs. -- Les étiquettes de **Classe 4** peuvent initier une communication avec d'autres étiquettes de la même classe, ce qui en fait des **étiquettes actives**. -- Les étiquettes de **Classe 5** peuvent fournir **de l'énergie à d'autres étiquettes et communiquer avec toutes les classes d'étiquettes précédentes**. Les étiquettes de Classe 5 peuvent agir comme des **lecteurs RFID**. +- **Class 0** : tags **passifs** qui fonctionnent dans les bandes **UHF**. Le fabricant **les préprogramme** à l'usine. En conséquence, vous **ne pouvez pas modifier** les informations stockées dans leur mémoire. +- **Class 1** : peuvent aussi fonctionner dans les bandes **HF**. De plus, ils peuvent être **écrits une seule fois** après la production. Beaucoup de tags Class 1 peuvent aussi traiter des **cyclic redundancy checks** (CRCs) des commandes qu'ils reçoivent. Les CRCs sont quelques octets supplémentaires à la fin des commandes pour la détection d'erreurs. +- **Class 2** : tags pouvant être **réécrits plusieurs fois**. +- **Class 3** : peuvent contenir des **capteurs intégrés** qui enregistrent des paramètres environnementaux, comme la température actuelle ou le mouvement du tag. Ces tags sont **semi-passifs**, car bien qu'ils **disposent** d'une source d'alimentation intégrée, comme une **pile**, ils **ne peuvent pas initier** de **communication** sans fil avec d'autres tags ou lecteurs. +- **Class 4** : peuvent initier la communication avec d'autres tags de la même classe, ce qui en fait des **tags actifs**. +- **Class 5** : peuvent fournir **de l'énergie à d'autres tags** et communiquer avec toutes les classes précédentes. Les Class 5 peuvent agir comme **lecteurs RFID**. -### Informations stockées dans les étiquettes RFID +### Informations stockées dans les tags RFID -La mémoire d'une étiquette RFID stocke généralement quatre types de données : les **données d'identification**, qui **identifient** l'**entité** à laquelle l'étiquette est attachée (ces données incluent des champs définis par l'utilisateur, tels que des comptes bancaires) ; les **données supplémentaires**, qui fournissent des **détails** supplémentaires concernant l'entité ; les **données de contrôle**, utilisées pour la **configuration** interne de l'étiquette ; et les **données du fabricant** de l'étiquette, qui contiennent un Identifiant Unique de l'étiquette (**UID**) et des détails concernant la **production**, le **type** et le **fournisseur** de l'étiquette. Vous trouverez les deux premiers types de données dans toutes les étiquettes commerciales ; les deux derniers peuvent différer en fonction du fournisseur de l'étiquette. +La mémoire d’un tag RFID contient généralement quatre types de données : les **données d’identification**, qui **identifient** l’**entité** à laquelle le tag est attaché (ces données incluent des champs définis par l’utilisateur, comme des comptes bancaires) ; les **données supplémentaires**, qui fournissent des **détails complémentaires** sur l’entité ; les **données de contrôle**, utilisées pour la **configuration** interne du tag ; et les **données fabricant**, qui contiennent l’Identifiant Unique (**UID**) du tag et des détails concernant la **production**, le **type** et le **vendeur** du tag. Vous trouverez les deux premiers types de données dans tous les tags commerciaux ; les deux derniers peuvent varier selon le vendeur du tag. -La norme ISO spécifie la valeur de l'Identifiant de Famille d'Application (**AFI**), un code qui indique le **type d'objet** auquel appartient l'étiquette. Un autre registre important, également spécifié par l'ISO, est l'Identifiant de Format de Stockage de Données (**DSFID**), qui définit l'**organisation logique des données utilisateur**. +La norme ISO spécifie la valeur Application Family Identifier (**AFI**), un code qui indique le **type d’objet** auquel le tag appartient. Un autre registre important, également spécifié par l'ISO, est le Data Storage Format Identifier (**DSFID**), qui définit **l’organisation logique des données utilisateur**. -La plupart des **contrôles de sécurité RFID** ont des mécanismes qui **restreignent** les opérations de **lecture** ou d'**écriture** sur chaque bloc de mémoire utilisateur et sur les registres spéciaux contenant les valeurs AFI et DSFID. Ces **mécanismes de verrouillage** utilisent des données stockées dans la mémoire de contrôle et ont des **mots de passe par défaut** préconfigurés par le fournisseur, mais permettent aux propriétaires d'étiquettes de **configurer des mots de passe personnalisés**. +La plupart des **mécanismes de sécurité** RFID restreignent les opérations de **lecture** ou **d'écriture** sur chaque bloc de mémoire utilisateur et sur les registres spéciaux contenant les valeurs AFI et DSFID. Ces **mécanismes de verrouillage** utilisent des données stockées dans la mémoire de contrôle et ont des **mots de passe par défaut** préconfigurés par le vendeur, mais permettent aux propriétaires des tags de **configurer des mots de passe personnalisés**. -### Comparaison des étiquettes basse et haute fréquence +### Comparaison tags basse & haute fréquence
-## Étiquettes RFID à basse fréquence (125 kHz) +## Low-Frequency RFID Tags (125kHz) -Les **étiquettes à basse fréquence** sont souvent utilisées dans des systèmes qui **ne nécessitent pas une haute sécurité** : accès aux bâtiments, clés d'interphone, cartes de membre de gym, etc. En raison de leur portée plus élevée, elles sont pratiques à utiliser pour le stationnement payant : le conducteur n'a pas besoin d'apporter la carte près du lecteur, car elle est déclenchée de plus loin. En même temps, les étiquettes à basse fréquence sont très primitives, elles ont un faible taux de transfert de données. Pour cette raison, il est impossible de mettre en œuvre un transfert de données bidirectionnel complexe pour des choses comme la gestion de solde et la cryptographie. Les étiquettes à basse fréquence ne transmettent que leur court ID sans aucun moyen d'authentification. +Les **tags basse fréquence** sont souvent utilisés dans des systèmes qui **ne nécessitent pas une haute sécurité** : accès aux bâtiments, interphones, cartes d'abonnement de salle de sport, etc. En raison de leur portée plus importante, ils sont pratiques pour les parkings payants : le conducteur n'a pas besoin d'approcher la carte du lecteur, car elle est détectée depuis plus loin. En même temps, les tags basse fréquence sont très primitifs et ont un faible débit de transfert de données. Pour cette raison, il est impossible d'implémenter des échanges complexes bidirectionnels pour des fonctions comme la gestion de solde et la cryptographie. Les tags basse fréquence ne transmettent que leur court ID sans aucun moyen d'authentification. -Ces dispositifs s'appuient sur la technologie **RFID passive** et fonctionnent dans une **plage de 30 kHz à 300 kHz**, bien qu'il soit plus courant d'utiliser 125 kHz à 134 kHz : +Ces dispositifs reposent sur la technologie **RFID passive** et opèrent dans une **plage de 30 kHz à 300 kHz**, bien qu'on utilise plus couramment 125 kHz à 134 kHz : -- **Longue portée** — une fréquence plus basse se traduit par une portée plus élevée. Il existe des lecteurs EM-Marin et HID, qui fonctionnent à une distance allant jusqu'à un mètre. Ceux-ci sont souvent utilisés dans le stationnement. -- **Protocole primitif** — en raison du faible taux de transfert de données, ces étiquettes ne peuvent transmettre que leur court ID. Dans la plupart des cas, les données ne sont pas authentifiées et ne sont pas protégées de quelque manière que ce soit. Dès que la carte est à portée du lecteur, elle commence simplement à transmettre son ID. +- **Longue portée** — une fréquence plus basse se traduit par une portée plus élevée. Il existe des lecteurs EM-Marin et HID capables de fonctionner jusqu'à un mètre. Ils sont souvent utilisés dans les parkings. +- **Protocole primitif** — à cause du faible débit, ces tags ne peuvent transmettre que leur court ID. Dans la plupart des cas, les données ne sont pas authentifiées et ne sont protégées d'aucune façon. Dès que la carte est dans la portée du lecteur, elle commence simplement à transmettre son ID. - **Faible sécurité** — Ces cartes peuvent être facilement copiées, ou même lues depuis la poche de quelqu'un d'autre en raison de la primitivité du protocole. -**Protocoles 125 kHz populaires :** +Protocoles populaires à 125 kHz : -- **EM-Marin** — EM4100, EM4102. Le protocole le plus populaire dans la CEI. Peut être lu à environ un mètre en raison de sa simplicité et de sa stabilité. -- **HID Prox II** — protocole à basse fréquence introduit par HID Global. Ce protocole est plus populaire dans les pays occidentaux. Il est plus complexe et les cartes et lecteurs pour ce protocole sont relativement chers. -- **Indala** — très ancien protocole à basse fréquence introduit par Motorola, et plus tard acquis par HID. Vous êtes moins susceptible de le rencontrer dans la nature par rapport aux deux précédents car il est en train de tomber en désuétude. +- **EM-Marin** — EM4100, EM4102. Le protocole le plus populaire dans la CEI. Peut être lu à environ un mètre grâce à sa simplicité et sa stabilité. +- **HID Prox II** — protocole basse fréquence introduit par HID Global. Ce protocole est plus populaire dans les pays occidentaux. Il est plus complexe et les cartes et lecteurs pour ce protocole sont relativement coûteux. +- **Indala** — très ancien protocole basse fréquence introduit par Motorola, puis acquis par HID. Vous êtes moins susceptible de le rencontrer dans la nature comparé aux deux précédents car il décline. -En réalité, il existe beaucoup plus de protocoles à basse fréquence. Mais ils utilisent tous la même modulation au niveau physique et peuvent être considérés, d'une manière ou d'une autre, comme une variation de ceux énumérés ci-dessus. +En réalité, il existe beaucoup plus de protocoles basse fréquence. Mais ils utilisent tous la même modulation sur la couche physique et peuvent être considérés, d'une manière ou d'une autre, comme des variantes de ceux listés ci-dessus. ### Attaque -Vous pouvez **attaquer ces étiquettes avec le Flipper Zero** : +Vous pouvez **attaquer ces Tags avec le Flipper Zero** : + {{#ref}} flipper-zero/fz-125khz-rfid.md {{#endref}} -## Étiquettes RFID à haute fréquence (13,56 MHz) +## High-Frequency RFID Tags (13.56 MHz) -Les **étiquettes à haute fréquence** sont utilisées pour une interaction plus complexe entre le lecteur et l'étiquette lorsque vous avez besoin de cryptographie, d'un large transfert de données bidirectionnel, d'authentification, etc.\ -On les trouve généralement dans les cartes bancaires, les transports publics et d'autres passes sécurisés. +Les **tags haute fréquence** sont utilisés pour des interactions lecteur–tag plus complexes lorsque vous avez besoin de cryptographie, d'un grand transfert de données bidirectionnel, d'authentification, etc.\ +On les trouve généralement dans les cartes bancaires, les transports publics et autres passes sécurisés. -Les **étiquettes à haute fréquence de 13,56 MHz sont un ensemble de normes et de protocoles**. Elles sont généralement appelées [NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/), mais ce n'est pas toujours correct. L'ensemble de protocoles de base utilisé aux niveaux physique et logique est ISO 14443. Les protocoles de haut niveau, ainsi que les normes alternatives (comme ISO 19092), en sont basés. Beaucoup de gens se réfèrent à cette technologie comme **Communication en Champ Proche (NFC)**, un terme pour les dispositifs fonctionnant à la fréquence de 13,56 MHz. +Les **tags haute fréquence 13.56 MHz sont un ensemble de standards et de protocoles**. On les désigne souvent par [NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/), mais ce n'est pas toujours exact. L'ensemble de protocoles de base utilisé aux niveaux physique et logique est ISO 14443. Les protocoles de niveau supérieur, ainsi que les standards alternatifs (comme ISO 19092), reposent sur celui-ci. Beaucoup de personnes appellent cette technologie **Near Field Communication (NFC)**, un terme pour les dispositifs opérant sur la fréquence 13.56 MHz.
-Pour simplifier, l'architecture de NFC fonctionne comme suit : le protocole de transmission est choisi par l'entreprise fabriquant les cartes et mis en œuvre sur la base de l'ISO 14443 de bas niveau. Par exemple, NXP a inventé son propre protocole de transmission de haut niveau appelé Mifare. Mais à un niveau inférieur, les cartes Mifare sont basées sur la norme ISO 14443-A. +Pour faire simple, l'architecture NFC fonctionne ainsi : le protocole de transmission est choisi par la société fabricant les cartes et implémenté sur la base du bas niveau ISO 14443. Par exemple, NXP a inventé son propre protocole de transmission de haut niveau appelé Mifare. Mais au niveau inférieur, les cartes Mifare sont basées sur la norme ISO 14443-A. -Flipper peut interagir à la fois avec le protocole ISO 14443 de bas niveau, ainsi qu'avec le protocole de transfert de données Mifare Ultralight et EMV utilisé dans les cartes bancaires. Nous travaillons à l'ajout de la prise en charge de Mifare Classic et NFC NDEF. Un examen approfondi des protocoles et des normes qui composent NFC mérite un article séparé que nous prévoyons de publier plus tard. +Flipper peut interagir à la fois avec le protocole bas niveau ISO 14443, ainsi qu'avec le protocole de transfert de données Mifare Ultralight et EMV utilisé dans les cartes bancaires. Nous travaillons à ajouter le support de Mifare Classic et NFC NDEF. Un examen approfondi des protocoles et standards qui composent NFC mérite un article séparé que nous prévoyons de publier ultérieurement. -Toutes les cartes à haute fréquence basées sur la norme ISO 14443-A ont un identifiant de puce unique. Il agit comme le numéro de série de la carte, comme l'adresse MAC d'une carte réseau. **En général, l'UID fait 4 ou 7 octets de long**, mais peut rarement aller **jusqu'à 10**. Les UIDs ne sont pas secrets et sont facilement lisibles, **parfois même imprimés sur la carte elle-même**. +Toutes les cartes haute fréquence basées sur la norme ISO 14443-A ont un identifiant de puce unique. Il sert de numéro de série de la carte, comme l'adresse MAC d'une carte réseau. **Généralement, l’UID fait 4 ou 7 octets**, mais peut rarement aller **jusqu'à 10**. Les UID ne sont pas secrets et sont facilement lisibles, **parfois même imprimés sur la carte elle-même**. -Il existe de nombreux systèmes de contrôle d'accès qui s'appuient sur l'UID pour **authentifier et accorder l'accès**. Parfois, cela se produit **même** lorsque les étiquettes RFID **supportent la cryptographie**. Une telle **mauvaise utilisation** les ramène au niveau des **cartes 125 kHz** en termes de **sécurité**. Les cartes virtuelles (comme Apple Pay) utilisent un UID dynamique afin que les propriétaires de téléphones ne puissent pas ouvrir des portes avec leur application de paiement. +De nombreux systèmes de contrôle d'accès se basent sur l’UID pour **authentifier et accorder l'accès**. Parfois cela se produit **même** lorsque les tags RFID **supportent la cryptographie**. Un tel **mauvais usage** les ramène au niveau des simples **cartes 125 kHz** en termes de **sécurité**. Les cartes virtuelles (comme Apple Pay) utilisent un UID dynamique afin que les propriétaires de téléphone ne puissent pas ouvrir des portes avec leur application de paiement. -- **Faible portée** — les cartes à haute fréquence sont spécifiquement conçues pour être placées près du lecteur. Cela aide également à protéger la carte contre les interactions non autorisées. La portée de lecture maximale que nous avons réussi à atteindre était d'environ 15 cm, et c'était avec des lecteurs de haute portée sur mesure. -- **Protocoles avancés** — des vitesses de transfert de données allant jusqu'à 424 kbps permettent des protocoles complexes avec un transfert de données bidirectionnel complet. Ce qui à son tour **permet la cryptographie**, le transfert de données, etc. -- **Haute sécurité** — les cartes sans contact à haute fréquence ne sont en aucun cas inférieures aux cartes intelligentes. Il existe des cartes qui supportent des algorithmes cryptographiquement forts comme AES et mettent en œuvre la cryptographie asymétrique. +- **Courte portée** — les cartes haute fréquence sont spécifiquement conçues pour devoir être placées près du lecteur. Cela aide également à protéger la carte contre des interactions non autorisées. La portée maximale de lecture que nous avons pu atteindre était d'environ 15 cm, et c'était avec des lecteurs sur mesure à longue portée. +- **Protocoles avancés** — des débits jusqu'à 424 kbps permettent des protocoles complexes avec un transfert bidirectionnel complet. Ce qui **permet la cryptographie**, le transfert de données, etc. +- **Haute sécurité** — les cartes sans contact haute fréquence n'ont rien à envier aux cartes à puce. Certaines cartes supportent des algorithmes cryptographiques robustes comme AES et implémentent la cryptographie asymétrique. ### Attaque -Vous pouvez **attaquer ces étiquettes avec le Flipper Zero** : +Vous pouvez **attaquer ces Tags avec le Flipper Zero** : + {{#ref}} flipper-zero/fz-nfc.md @@ -88,13 +90,61 @@ flipper-zero/fz-nfc.md Ou en utilisant le **proxmark** : + {{#ref}} proxmark-3.md {{#endref}} -### Construction d'un cloneur mobile HID MaxiProx 125 kHz portable +### MiFare Classic offline stored-value tampering (broken Crypto1) + +Lorsque qu’un système stocke un solde monétaire directement sur une carte MiFare Classic, vous pouvez souvent le manipuler parce que Classic utilise le chiffrement obsolète Crypto1 de NXP. Crypto1 est cassé depuis des années, permettant la récupération des clés de secteur et la lecture/écriture complète de la mémoire de la carte avec du matériel courant (par ex., Proxmark3). + +Flux de travail de bout en bout (abstrait) : + +1) Dump the original card and recover keys +```bash +# Attempt all built-in Classic key recovery attacks and dump the card +hf mf autopwn +``` +Cela récupère généralement les sector keys (A/B) et génère un full-card dump dans le client dumps folder. + +2) Localiser et comprendre les value/integrity fields + +- Effectuer des top-ups légitimes sur la carte originale et prendre plusieurs dumps (avant/après). +- Faire un diff des deux dumps pour identifier les blocks/bytes qui changent et qui représentent le solde ainsi que les champs d'intégrité. +- De nombreux déploiements Classic utilisent soit l'encodage natif "value block", soit leurs propres checksums (e.g., XOR du solde avec un autre champ et une constante). Après modification du solde, recalculer les integrity bytes en conséquence et s'assurer que tous les duplicated/complemented fields sont cohérents. + +3) Écrire le dump modifié sur une Classic tag “Chinese magic” inscriptible +```bash +# Load a modified binary dump onto a UID-changeable Classic tag +hf mf cload -f modified.bin +``` +4) Cloner l'UID original pour que les terminaux reconnaissent la carte +```bash +# Set the UID on a UID-changeable tag (gen1a/gen2 magic) +hf mf csetuid -u +``` +5) Use at terminals + +Les lecteurs qui font confiance au solde sur la carte et au UID accepteront la carte manipulée. Les observations de terrain montrent que de nombreux déploiements plafonnent les soldes en fonction de la largeur du champ (par ex., 16-bit fixed-point). + +Remarques + +- Si le système utilise des Classic value blocks natifs, souvenez-vous du format : value (4B) + ~value (4B) + value (4B) + block address + ~address. Toutes les parties doivent correspondre. +- Pour les formats personnalisés avec des checksums simples, l'analyse différentielle est la manière la plus rapide pour dériver la fonction d'intégrité sans rétro-ingénierie du firmware. +- Seuls les tags UID-changeable ("Chinese magic" gen1a/gen2) permettent d'écrire le block 0/UID. Les cartes Classic normales ont des UIDs en lecture seule. + +Pour des commandes Proxmark3 pratiques, voir : + + +{{#ref}} +proxmark-3.md +{{#endref}} + +### Construire un cloneur mobile portable HID MaxiProx 125 kHz + +Si vous avez besoin d'une solution **longue-portée**, **alimentée par batterie** pour récupérer des badges HID Prox® lors d'opérations red-team, vous pouvez convertir le lecteur mural **HID MaxiProx 5375** en un cloneur autonome qui tient dans un sac à dos. Le guide complet mécanique et électrique est disponible ici : -Si vous avez besoin d'une solution **à longue portée**, **alimentée par batterie** pour récolter des badges HID Prox® lors d'engagements de red team, vous pouvez convertir le lecteur mural **HID MaxiProx 5375** en un cloneur autonome qui tient dans un sac à dos. Le guide mécanique et électrique complet est disponible ici : {{#ref}} maxiprox-mobile-cloner.md @@ -105,6 +155,9 @@ maxiprox-mobile-cloner.md ## Références - [https://blog.flipperzero.one/rfid/](https://blog.flipperzero.one/rfid/) -- [Clonons un cloneur – Partie 3 (TrustedSec)](https://trustedsec.com/blog/lets-clone-a-cloner-part-3-putting-it-all-together) +- [Let's Clone a Cloner – Part 3 (TrustedSec)](https://trustedsec.com/blog/lets-clone-a-cloner-part-3-putting-it-all-together) +- [NXP statement on MIFARE Classic Crypto1](https://www.mifare.net/en/products/chip-card-ics/mifare-classic/security-statement-on-crypto1-implementations/) +- [MIFARE security overview (Wikipedia)](https://en.wikipedia.org/wiki/MIFARE#Security) +- [NFC card vulnerability exploitation in KioSoft Stored Value (SEC Consult)](https://sec-consult.com/vulnerability-lab/advisory/nfc-card-vulnerability-exploitation-leading-to-free-top-up-kiosoft-payment-solution/) {{#include ../../banners/hacktricks-training.md}} diff --git a/src/todo/radio-hacking/proxmark-3.md b/src/todo/radio-hacking/proxmark-3.md index e22dd3a05..840fdae86 100644 --- a/src/todo/radio-hacking/proxmark-3.md +++ b/src/todo/radio-hacking/proxmark-3.md @@ -4,13 +4,13 @@ ## Attaquer les systèmes RFID avec Proxmark3 -La première chose que vous devez faire est d'avoir un [**Proxmark3**](https://proxmark.com) et [**d'installer le logiciel et ses dépendances**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux)[**s**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux). +La première chose à faire est de posséder un [**Proxmark3**](https://proxmark.com) et de [**install the software and it's dependencie**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux)[**s**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux). -### Attaquer MIFARE Classic 1KB +### Attaque de MIFARE Classic 1KB -Il a **16 secteurs**, chacun d'eux a **4 blocs** et chaque bloc contient **16B**. Le UID est dans le secteur 0 bloc 0 (et ne peut pas être modifié).\ -Pour accéder à chaque secteur, vous avez besoin de **2 clés** (**A** et **B**) qui sont stockées dans **le bloc 3 de chaque secteur** (secteur trailer). Le secteur trailer stocke également les **bits d'accès** qui donnent les **permissions de lecture et d'écriture** sur **chaque bloc** en utilisant les 2 clés.\ -2 clés sont utiles pour donner des permissions de lecture si vous connaissez la première et d'écriture si vous connaissez la seconde (par exemple). +Il contient **16 secteurs**, chacun ayant **4 blocs** et chaque bloc contient **16B**. L'UID est dans le secteur 0 bloc 0 (et ne peut pas être modifié).\ +Pour accéder à chaque secteur, vous avez besoin de **2 clés** (**A** et **B**) qui sont stockées dans **le bloc 3 de chaque secteur** (sector trailer). Le sector trailer stocke également les **access bits** qui définissent les permissions de **lecture et d'écriture** sur **chaque bloc** en fonction des 2 clés.\ +Avoir 2 clés permet, par exemple, d'accorder la permission de lecture si vous connaissez la première et d'écriture si vous connaissez la deuxième. Plusieurs attaques peuvent être effectuées ```bash @@ -31,11 +31,39 @@ proxmark3> hf mf eset 01 000102030405060708090a0b0c0d0e0f # Write those bytes to proxmark3> hf mf eget 01 # Read block 1 proxmark3> hf mf wrbl 01 B FFFFFFFFFFFF 000102030405060708090a0b0c0d0e0f # Write to the card ``` -Le Proxmark3 permet d'effectuer d'autres actions comme **l'écoute** d'une **communication Tag à Reader** pour essayer de trouver des données sensibles. Dans cette carte, vous pourriez simplement intercepter la communication et calculer la clé utilisée car les **opérations cryptographiques utilisées sont faibles** et en connaissant le texte en clair et le texte chiffré, vous pouvez le calculer (outil `mfkey64`). +Le Proxmark3 permet d'effectuer d'autres actions comme **eavesdropping** d'une **Tag to Reader communication** pour tenter de trouver des données sensibles. Sur cette carte, vous pouvez simplement sniff la communication et calculer la clé utilisée parce que les **opérations cryptographiques utilisées sont faibles** et qu'en connaissant le texte en clair et le texte chiffré vous pouvez la calculer (`mfkey64` tool). -### Commandes Brutes +#### MiFare Classic flux de travail rapide pour l'abus de cartes à valeur stockée -Les systèmes IoT utilisent parfois des **tags non marqués ou non commerciaux**. Dans ce cas, vous pouvez utiliser Proxmark3 pour envoyer des **commandes brutes personnalisées aux tags**. +Lorsque les terminaux stockent des soldes sur des Classic cards, un flux de bout en bout typique est : +```bash +# 1) Recover sector keys and dump full card +proxmark3> hf mf autopwn + +# 2) Modify dump offline (adjust balance + integrity bytes) +# Use diffing of before/after top-up dumps to locate fields + +# 3) Write modified dump to a UID-changeable ("Chinese magic") tag +proxmark3> hf mf cload -f modified.bin + +# 4) Clone original UID so readers recognize the card +proxmark3> hf mf csetuid -u +``` +Notes + +- `hf mf autopwn` orchestre des attaques de type nested/darkside/HardNested, récupère des clés et crée des dumps dans le dossier client dumps. +- `Writing block 0/UID` ne fonctionne que sur les cartes magic gen1a/gen2. Les cartes Classic normales ont un UID en lecture seule. +- De nombreux déploiements utilisent des Classic "value blocks" ou des checksums simples. Assurez-vous que tous les champs dupliqués/complémentés et les checksums sont cohérents après modification. + +Voir une méthodologie de niveau supérieur et des mesures d'atténuation dans : + +{{#ref}} +pentesting-rfid.md +{{#endref}} + +### Commandes brutes + +Les systèmes IoT utilisent parfois des **tags non brandés ou non commerciaux**. Dans ce cas, vous pouvez utiliser Proxmark3 pour envoyer des **commandes brutes personnalisées aux tags**. ```bash proxmark3> hf search UID : 80 55 4b 6c ATQA : 00 04 SAK : 08 [2] @@ -45,7 +73,7 @@ No chinese magic backdoor command detected Prng detection: WEAK Valid ISO14443A Tag Found - Quiting Search ``` -Avec ces informations, vous pourriez essayer de rechercher des informations sur la carte et sur la manière de communiquer avec elle. Proxmark3 permet d'envoyer des commandes brutes comme : `hf 14a raw -p -b 7 26` +Avec ces informations, vous pouvez essayer de rechercher des informations sur la carte et sur la manière de communiquer avec elle. Proxmark3 permet d'envoyer des commandes raw comme : `hf 14a raw -p -b 7 26` ### Scripts @@ -53,6 +81,13 @@ Le logiciel Proxmark3 est livré avec une liste préchargée de **scripts d'auto ``` proxmark3> script run mfkeys ``` -Vous pouvez créer un script pour **fuzz tag readers**, donc en copiant les données d'une **carte valide**, il suffit d'écrire un **script Lua** qui **randomise** un ou plusieurs **octets** aléatoires et vérifie si le **lecteur plante** avec une itération quelconque. +Vous pouvez créer un script pour **fuzz tag readers**, donc en copiant les données d'une **valid card** il suffit d'écrire un **Lua script** qui **randomize** un ou plusieurs **bytes** aléatoires et vérifier si le **reader crashes** lors d'une itération. + +## Références + +- [Proxmark3 wiki: HF MIFARE](https://github.com/RfidResearchGroup/proxmark3/wiki/HF-Mifare) +- [Proxmark3 wiki: HF Magic cards](https://github.com/RfidResearchGroup/proxmark3/wiki/HF-Magic-cards) +- [NXP statement on MIFARE Classic Crypto1](https://www.mifare.net/en/products/chip-card-ics/mifare-classic/security-statement-on-crypto1-implementations/) +- [NFC card vulnerability exploitation in KioSoft Stored Value (SEC Consult)](https://sec-consult.com/vulnerability-lab/advisory/nfc-card-vulnerability-exploitation-leading-to-free-top-up-kiosoft-payment-solution/) {{#include ../../banners/hacktricks-training.md}}