____ ___ ____ ____ _ _
| __ )___|___ \| _ \ ___ | (_)_ __
| _ \___ __) | | | | / __|| | | '_ \
| |_) | |/ __/| |_| | | (__ | | | | | |
|____/ |_____|____/ \___||_|_|_| |_|
Forgé par Platon-y pour pctamalou.fr, ce tutoriel explore les Yes Cards, cartes à puce falsifiées qui ont marqué la France (ex. Serge Humpich, 1997, RSA 321 bits). Il simule en lab des techniques éducatives avec Proxmark3, OpenSC, Wireshark, et Arduino, basées sur des failles réelles (ex. PIN bypass, Murdoch 2010 ; CVE-2019-9459 ; FIN8 skimming). Les contre-mesures incluent EMV DDA, normes GIE CB, et audits ANSSI. Lab-only avec cartes test (ex. MasterCard 5555555555554444, Lemonway), respectant l’article 323-1 CP et RGPD. Chaque lecteur est responsable de ses actions.
Yes Cards historiques (RSA faible) sont obsolètes. Attaques modernes (MITM, pre-play, skimming) ciblent des failles EMV ou terminaux. Ce tuto est éducatif et ne fournit pas de code exploitable hors lab.
Chronologie basée sur des sources vérifiées :
| Date | Événement | Faille/Technique | Impact/Réaction |
|---|---|---|---|
| 1997-1998 | Serge Humpich expose faille Carte Bleue (01net). | Factorisation RSA 321 bits (GIE CB). | Procès Humpich (2000) : 10 mois sursis (Legalis). |
| 2000s | Déploiement EMV. | Puces EMV (DDA/SDA). | Réduction fraudes magnétiques. |
| 2010 | Murdoch et Drimer : PIN bypass (IEEE). | MITM intercepte PIN. | Fraudes ~600 000 € (Belgique). Mise à jour EMV. |
| 2011 | Escroqueries Campanile (TendanceHotellerie). | Terminaux non conformes. | Renouvellement POS. |
| 2012-2015 | Failles EMV pre-play (reseaux-telecoms). | Nombres aléatoires faibles. | Mises à jour EMV. |
| 2018 | Skimming FIN8 (Mandiant). | Malware POS. | Renforcement PCI DSS. |
| 2019 | CVE-2019-9459 : NFC bypass. | Faille protocole NFC. | Mises à jour firmware. |
Note : Les “nanocoupures” (1990s) sont un mythe. Failles étaient cryptographiques (RSA) ou protocolaires.
Attaques modernes exploitant des failles EMV ou terminaux :
FIN8 cible les POS en France (2018). MITM Belgique (2010) : 600 000 € de pertes.
Basé sur des cas réels : Humpich (1997, RSA), Murdoch (2010, PIN bypass), CVE-2019-9459 (NFC), CVE-2020-10135 (cryptographie).
Clonage EMV moderne (DDA) quasi impossible sans failles spécifiques (ex. firmware vulnérable, MITM matériel).
1. Quel est le rôle de SW1/SW2 dans une réponse APDU ?
2. Pourquoi les UN faibles facilitent-ils les attaques pre-play ?
| Terme | Définition |
|---|---|
| Yes Card | Carte falsifiée via failles cryptographiques/protocolaires. |
| B0' | Standard cartes françaises (1990s). |
| EMV | Standard transactions puces. |
| Offline PIN Bypass | Contournement PIN via MITM. |
| DDA | Dynamic Data Authentication. |
| Pre-play Attack | Exploitation nombres aléatoires faibles (UN). |
| UN | Unpredictable Number (EMV). |
| APDU | Application Protocol Data Unit (ISO 7816-4). |
LAB-ONLY : Utilisez des cartes test (ex. Lemonway). Toute utilisation réelle est illégale.
Lab isolé avec Kali Linux 2024.4, Proxmark3, OpenSC, Wireshark :
sudo apt update && sudo apt install -y python3 python3-pip proxmark3 opensc wireshark
pip3 install pycryptodome
sudo systemctl start docker
sudo ifconfig eth0 192.168.0.100 netmask 255.255.255.0 up
sudo iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT
sudo iptables -A OUTPUT -j DROP
ping 8.8.8.8 # Doit échouer
Docker pour isolation :
version: '3'
services:
kali:
image: kalilinux/kali-rolling
privileged: true
network_mode: host
volumes:
- ./lab:/app
command: bash -c "apt update && apt install -y python3 python3-pip proxmark3 opensc wireshark && pip3 install pycryptodome && tail -f /dev/null"
[Kali Linux: 192.168.0.100] --> [Proxmark3/Arduino: USB] --> [Carte Test]
docker ps
proxmark3 -c 'hf search'
Attendu :
$ docker ps
> CONTAINER ID IMAGE COMMAND STATUS
> 123456789abc kalilinux/kali-rolling "bash -c 'apt update...'" Up
$ proxmark3 -c 'hf search'
> [+] Valid ISO14443-A Tag Found
1. Pourquoi isoler le lab avec iptables ?
2. Quel est le rôle de Docker ici ?
LAB-ONLY : Utilisez des cartes test (ex. MasterCard 5555555555554444).
Lisez les métadonnées d’une carte test :
opensc-tool --reader 0 --atr
proxmark3 -c 'hf emv select -t A0000000041010'
proxmark3 -c 'hf emv dump'
Attendu :
$ opensc-tool --reader 0 --atr
> ATR: 3B 8F 80 01 80 4F 0C A0 00 00 00 03 10 10 00 00
$ proxmark3 -c 'hf emv select -t A0000000041010'
> [+] AID: A0000000041010 (MasterCard)
> PAN: **** **** **** 4444
$ proxmark3 -c 'hf emv dump'
> [+] Record 1: AID=A0000000041010, PAN=**** **** **** 4444, ATC=0001
Leçon tirée : Les métadonnées publiques (AID, PAN masqué) sont accessibles, mais les clés cryptographiques (DDA) restent protégées.
1. Que signifie l’ATR dans OpenSC ?
2. Pourquoi `hf emv dump` ne donne pas de clés privées ?
LAB-ONLY : Analyse éducative, pas d’exploitation réelle.
Analysez les réponses APDU :
proxmark3 -c 'hf emv exec --apdu "00A4040007A0000000041010"'
proxmark3 -c 'hf emv exec --apdu "80A80000"'
proxmark3 -c 'hf emv getrnd'
Attendu :
$ proxmark3 -c 'hf emv exec --apdu "00A4040007A0000000041010"'
> [+] Response: 6F1E8407A0000000041010A513504D6173746572436172649000
> SW1/SW2: 9000 (Success)
$ proxmark3 -c 'hf emv exec --apdu "80A80000"'
> [+] Response: 701B...9000
> UN: 12345678
$ proxmark3 -c 'hf emv getrnd'
> [+] Unpredictable Number: 12345678
from binascii import hexlify
from Crypto.PublicKey import RSA
# Parser réponse APDU (lab-only)
apdu_response = b"\x6F\x1E\x84\x07\xA0\x00\x00\x00\x04\x10\x10\xA5\x13\x50\x0B\x4D\x61\x73\x74\x65\x72\x43\x61\x72\x64\x90\x00"
print(f"APDU: {hexlify(apdu_response).decode()}")
print(f"AID: A0000000041010 (MasterCard)")
print(f"Status: 9000 (Success)")
# Simuler vérification certificat (lab-only)
issuer_cert = "3082010A..." # Simplifié
key = RSA.import_key(bytes.fromhex(issuer_cert))
print(f"Issuer Key Modulus: {key.n}")
Attendu :
$ python3 apdu_parser.py
> APDU: 6f1e8407a0000000041010a513504d6173746572436172649000
> AID: A0000000041010 (MasterCard)
> Status: 9000 (Success)
> Issuer Key Modulus: [large number]
Leçon tirée : Les APDU publiques (ex. AID) sont lisibles, mais les signatures DDA nécessitent des clés privées inaccessibles.
1. Que signifie SW1/SW2 9000 ?
2. Pourquoi les certificats EMV sont-ils critiques ?
LAB-ONLY : Émulation limitée aux cartes test.
Émulez une carte test avec Arduino Nano et PN532 :
[Arduino Nano]
GND --> PN532 GND
3.3V --> PN532 VCC
SDA --> PN532 SDA (Pin 4)
SCL --> PN532 SCL (Pin 5)
#include#include #include PN532_I2C pn532i2c(Wire); PN532 nfc(pn532i2c); void setup() { Serial.begin(115200); nfc.begin(); nfc.SAMConfig(); Serial.println("Émulateur prêt"); } void loop() { uint8_t success; uint8_t uid[] = { 0x12, 0x34, 0x56, 0x78 }; success = nfc.emulateTag(uid, 4, "A0000000041010", "5555555555554444:1225:123"); if (success) { Serial.println("Tag émulé"); } else { Serial.println("Échec"); } delay(1000); }
Attendu :
$ proxmark3 -c 'hf emv select -t A0000000041010'
> AID: A0000000041010
> PAN: **** **** **** 4444
Leçon tirée : L’émulation avec PN532 est limitée aux tags simples, sans DDA ni clés cryptographiques.
1. Pourquoi PN532 ne peut pas émuler une carte EMV réelle ?
2. Quel est le rôle du UID ?
LAB-ONLY : Analyse simulée, pas d’exploitation réelle.
Analysez le trafic réseau d’une transaction simulée :
wireshark -i eth0 -f "tcp port 8443"
Attendu :
$ tcpdump -i any 'port 8443 and tcp' -vv
> IP 192.168.0.100.49152 > 192.168.0.101.8443: Flags [P.], seq 1:65
> POST /api/emv HTTP/1.1
import json
import random
# Simuler skimmer logiciel (lab-only)
emv_data = {
"transaction": {
"AID": "A0000000041010",
"PAN": "5555555555554444",
"Timestamp": "2025-09-18T23:25:00",
"UN": hex(random.randint(0, 0xFFFFFFFF))[2:].zfill(8),
"C2": "192.168.0.101:8443"
}
}
with open("emv_dump.json", "w") as f:
json.dump(emv_data, f, indent=2)
print(f"Dump généré : emv_dump.json (UN: {emv_data['transaction']['UN']})")
Attendu :
$ python3 skimmer.py
> Dump généré : emv_dump.json (UN: 12345678)
Leçon tirée : Les skimmers logiciels exfiltrent les données via C2, mais les vérifications en ligne (3-D Secure) limitent leur impact.
1. Comment Wireshark aide-t-il à détecter un skimmer ?
2. Pourquoi les dumps JSON sont-ils utilisés ici ?
LAB-ONLY : Mesures défensives, pas d’attaque réelle.
Normes françaises :
index=emv host=192.168.0.101 UN | stats count by UN | where count > 1
Attendu : Détecte les collisions de UN (signe de pre-play).
#!/bin/bash
iptables -F
iptables -A INPUT -p tcp --dport 8443 -j DROP
iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT
iptables -A OUTPUT -j DROP
Leçon tirée : Les contre-mesures modernes (DDA, 3-D Secure) rendent les Yes Cards obsolètes, sauf sur terminaux vulnérables.
1. Quel est le rôle de 3-D Secure v2 ?
2. Pourquoi auditer les firmwares POS ?
LAB-ONLY : Simulation IR, pas d’attaque réelle.
| Type | Description | Exemple | Complexité | Contre-Mesures |
|---|---|---|---|---|
| Puce | MITM, pre-play (CVE-2019-9459). Nécessite Proxmark3, accès physique. | MITM Belgique (2010, 600 000 €). | Élevée (hardware). | EMV DDA, audits ANSSI. |
| Logiciel | Skimming, C2 (CVE-2020-10135). | FIN8 POS (Mandiant, 2018). | Moyenne (malware). | iptables, Splunk. |
#!/bin/bash
find /tmp -name "*.json" -exec grep "EMV" {} \;
iptables -A INPUT -p tcp --dport 8443 -j DROP
tail -f /var/log/syslog | grep "192.168.0.101"
splunk search "index=emv host=192.168.0.101"
Leçon tirée : Les attaques puce nécessitent un accès physique, les attaques logiciel sont plus courantes mais détectables.
1. Comment identifier un skimmer logiciel ?
2. Quel est l’impact d’un MITM physique ?
LAB-ONLY : Simulation éducative, pas d’exploitation réelle.
Simulez une attaque pre-play avec UN faible :
Extraire un UN faible, le réutiliser pour simuler une transaction.
import random
# Simuler UN faible (lab-only)
un_list = [hex(random.randint(0, 0xFFFF))[2:].zfill(4) for _ in range(10)]
print("UN faibles générés:", un_list)
if len(set(un_list)) < len(un_list):
print("Collision détectée! Pre-play possible.")
else:
print("Aucune collision.")
Attendu :
$ python3 preplay_sim.py
> UN faibles générés: ['1234', '5678', '1234', ...]
> Collision détectée! Pre-play possible.
proxmark3 -c 'hf emv getrnd'
proxmark3 -c 'hf emv exec --apdu "80A80000"'
Attendu :
$ proxmark3 -c 'hf emv getrnd'
> UN: 12345678
Leçon tirée : Les UN faibles (obsolètes depuis 2017) permettent des pre-play attacks, mais les terminaux modernes utilisent des UN forts.
1. Pourquoi les UN faibles sont-ils dangereux ?
2. Comment EMV 2017 a-t-il corrigé cela ?
| CVE | Description | Impact | Mitigation |
|---|---|---|---|
| CVE-2019-9459 | NFC bypass via faille protocole. | Transactions non autorisées. | Mise à jour firmware, 3-D Secure. |
| CVE-2020-10135 | Failles cryptographiques dans POS. | Exfiltration données. | Chiffrement AES-256, audits PCI DSS. |
LAB-ONLY : Respectez l’art. 323-1 CP et RGPD.
Récap : Yes Cards historiques (RSA) obsolètes. Attaques modernes (MITM, skimming, pre-play) nécessitent failles spécifiques. Tuto éducatif, lab-only.
Légal : Utilisation réelle illégale (art. 323-1 CP, RGPD).
Attaques : PIN bypass (CVE-2019-9459), skimming FIN8 (Mandiant).
Forgé par Platon-y pour pctamalou.fr. Testez éthique !