____ ___  ____  ____          _ _       
 | __ )___|___ \|  _ \    ___ | (_)_ __  
 |  _ \___  __) | | | |  / __|| | | '_ \ 
 | |_) |  |/ __/| |_| | | (__ | | | | | |
 |____/   |_____|____/   \___||_|_|_| |_| 
            
LAB-ONLY : Ce tutoriel est pour un usage en laboratoire isolé uniquement. Toute utilisation hors lab est illégale (Art. 323-1 CP : 7 ans de prison, 100 000 € d’amende). RGPD : Toute fuite de données réelles engage votre responsabilité. Utilisez uniquement des cartes test (ex. Lemonway, Visa Test Lab).

> Yes Card Raider 2025

Étude Approfondie des Failles de Cartes à Puce

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.

📌 Contexte Réel

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.

📜 Historique des Yes Cards

Chronologie basée sur des sources vérifiées :

DateÉvénementFaille/TechniqueImpact/Réaction
1997-1998Serge Humpich expose faille Carte Bleue (01net).Factorisation RSA 321 bits (GIE CB).Procès Humpich (2000) : 10 mois sursis (Legalis).
2000sDéploiement EMV.Puces EMV (DDA/SDA).Réduction fraudes magnétiques.
2010Murdoch et Drimer : PIN bypass (IEEE).MITM intercepte PIN.Fraudes ~600 000 € (Belgique). Mise à jour EMV.
2011Escroqueries Campanile (TendanceHotellerie).Terminaux non conformes.Renouvellement POS.
2012-2015Failles EMV pre-play (reseaux-telecoms).Nombres aléatoires faibles.Mises à jour EMV.
2018Skimming FIN8 (Mandiant).Malware POS.Renforcement PCI DSS.
2019CVE-2019-9459 : NFC bypass.Faille protocole NFC.Mises à jour firmware.

Note : Les “nanocoupures” (1990s) sont un mythe. Failles étaient cryptographiques (RSA) ou protocolaires.

🔥 Menaces Yes Card 2025

Attaques modernes exploitant des failles EMV ou terminaux :

🌐 Contexte Réel

FIN8 cible les POS en France (2018). MITM Belgique (2010) : 600 000 € de pertes.

🔍 Analyse des Vulnérabilités

📖 Contexte

Basé sur des cas réels : Humpich (1997, RSA), Murdoch (2010, PIN bypass), CVE-2019-9459 (NFC), CVE-2020-10135 (cryptographie).

🔧 Techniques (Lab-Only)

  1. Lecture: Extraction métadonnées EMV (AID, PAN masqué).
  2. Analyse APDU: Étude réponses protocole (ISO 7816-4).
  3. Émulation: Simulation carte test.
  4. Forensique: Analyse trafic réseau.
  5. Pre-play: Simulation nombres aléatoires faibles.

⚠️ Limites

Clonage EMV moderne (DDA) quasi impossible sans failles spécifiques (ex. firmware vulnérable, MITM matériel).

❓ Quiz

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 ?

🔗 Mode Opératoire (MITRE ATT&CK)

🔰 Lexique

TermeDéfinition
Yes CardCarte falsifiée via failles cryptographiques/protocolaires.
B0'Standard cartes françaises (1990s).
EMVStandard transactions puces.
Offline PIN BypassContournement PIN via MITM.
DDADynamic Data Authentication.
Pre-play AttackExploitation nombres aléatoires faibles (UN).
UNUnpredictable Number (EMV).
APDUApplication Protocol Data Unit (ISO 7816-4).

🛠️ Configuration du Lab

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]
                

Point de Contrôle

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
            

❓ Quiz

1. Pourquoi isoler le lab avec iptables ?
2. Quel est le rôle de Docker ici ?

⚔️ OP-01 : Lecture Carte Test

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.

❓ Quiz

1. Que signifie l’ATR dans OpenSC ?
2. Pourquoi `hf emv dump` ne donne pas de clés privées ?

⚔️ OP-02 : Analyse APDU

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
            

Script Python APDU

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.

❓ Quiz

1. Que signifie SW1/SW2 9000 ?
2. Pourquoi les certificats EMV sont-ils critiques ?

🔨 OP-03 : Émulation Arduino

LAB-ONLY : Émulation limitée aux cartes test.

Émulez une carte test avec Arduino Nano et PN532 :

Matériel

Schéma

[Arduino Nano]
  GND --> PN532 GND
  3.3V --> PN532 VCC
  SDA --> PN532 SDA (Pin 4)
  SCL --> PN532 SCL (Pin 5)
            

Code Arduino

#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.

❓ Quiz

1. Pourquoi PN532 ne peut pas émuler une carte EMV réelle ?
2. Quel est le rôle du UID ?

🔍 OP-04 : Analyse Forensique

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
            

Script Python Skimmer

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.

❓ Quiz

1. Comment Wireshark aide-t-il à détecter un skimmer ?
2. Pourquoi les dumps JSON sont-ils utilisés ici ?

🛡️ OP-05 : Contre-Mesures (Focus France)

LAB-ONLY : Mesures défensives, pas d’attaque réelle.

Contre-Mesures

Focus France

Normes françaises :

Checklist ANSSI

Script Splunk

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).

iptables

#!/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.

❓ Quiz

1. Quel est le rôle de 3-D Secure v2 ?
2. Pourquoi auditer les firmwares POS ?

📋 OP-06 : Incident Response (Puce vs Logiciel)

LAB-ONLY : Simulation IR, pas d’attaque réelle.

Puce vs Logiciel

TypeDescriptionExempleComplexitéContre-Mesures
PuceMITM, pre-play (CVE-2019-9459). Nécessite Proxmark3, accès physique.MITM Belgique (2010, 600 000 €).Élevée (hardware).EMV DDA, audits ANSSI.
LogicielSkimming, C2 (CVE-2020-10135).FIN8 POS (Mandiant, 2018).Moyenne (malware).iptables, Splunk.

Étude de Cas

Playbook IR

  1. Identification: Scanner terminaux (OpenSC, Proxmark3).
  2. Containment: Isolez (iptables DROP 192.168.0.101:8443).
  3. Eradication: Supprimer fichiers suspects.
  4. Recovery: Restaurer firmware POS.
  5. Lessons Learned: Auditer, former SOC.

Script IR

#!/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.

❓ Quiz

1. Comment identifier un skimmer logiciel ?
2. Quel est l’impact d’un MITM physique ?

🏴‍☠️ OP-07 : Mini-CTF Pre-play Attack

LAB-ONLY : Simulation éducative, pas d’exploitation réelle.

Simulez une attaque pre-play avec UN faible :

Objectif

Extraire un UN faible, le réutiliser pour simuler une transaction.

Étapes

  1. Lire UN avec Proxmark3.
  2. Générer UN faible (script Python).
  3. Émuler transaction (Arduino).
  4. Analyser trafic (Wireshark).

Script Python

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

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.

❓ Quiz

1. Pourquoi les UN faibles sont-ils dangereux ?
2. Comment EMV 2017 a-t-il corrigé cela ?

📚 Sources et Lectures Complémentaires

Tableau des CVE

CVEDescriptionImpactMitigation
CVE-2019-9459NFC bypass via faille protocole.Transactions non autorisées.Mise à jour firmware, 3-D Secure.
CVE-2020-10135Failles cryptographiques dans POS.Exfiltration données.Chiffrement AES-256, audits PCI DSS.

🏁 Debrief & Éthique

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).

🌐 Contexte 2025

Attaques : PIN bypass (CVE-2019-9459), skimming FIN8 (Mandiant).

❓ FAQ

Forgé par Platon-y pour pctamalou.fr. Testez éthique !