Analyse des cartesà puces (téléphoniques et bancaires)



Auteur : Redrum
Zine : Rafale #1



Le domaine des cartes à puce est caractérisé par deux grand types 
d'architecture:
-L'architecture synchrone ou télécartes
-L'architecture asynchrone

Les cartes synchrones:
Exemple d'utilisation: les cartes téléphoniques

I] Architecture

Une carte synchrone est une mémoire EPROM de 256 bits. Elle est caractérisée
par son horloge. En effet, la carte est cadencée par l'horloge interne du 
terminal. Sans cette horloge, il est impossible d'accéder aux data de la carte. 
Sur ses 256 bits, 96 sont cryptés (DES) et protégés en écriture. 
Ce cryptage nous empèche le clone de la carte car la clef secrète, cryptée 
sur 64 bits, est illisible de l'extérieur puisque "masquée" par des 1.

Lors de la lecture d'une télécarte, vous pourrez vous appercevoir qu'après 
les 96 premiers bits, vous allez retrouver la zone de stockage de vos unités.
 Les 0 correspondents aux unités grillés.

Exemple d'une carte T1G TOTALE


 1100 0101  1000 0101  0000 0000  0000 0000 | C5 85 00 00
 1010 0000  0011 1101  1001 0000  0100 0101 | A0 3D 90 45
 0000 0000  0000 0000  0001 0001  0100 0001 | 00 00 11 41
 0000 0010  0001 0001  0010 0100  0001 0010 | 02 11 24 12
 1000 1010  0111 0001  0001 0110  1011 1111 | 8A 71 16 BF
 1111 1000  0000 0000  0000 0000  0000 0000 | F8 00 00 00
 1111 1111  1111 1111  1111 1111  1111 1111 | FF FF FF FF
 1111 1111  1111 1111  1111 1111  1111 1111 | FF FF FF FF

 Type de carte        : Télécarte T1G 256 bits.
 Zone ROM             : [C5850000A03D904500001141]
 Pays ou zone (41)    : Carte lavage TOTAL.
 N° de série possible : 04034629.


On remarque que cette carte est une T1G (télécarte de première génération) de 
256 bits.

La zone ROM :

 1100 0101  1000 0101  0000 0000  0000 0000 | C5 85 00 00
 1010 0000  0011 1101  1001 0000  0100 0101 | A0 3D 90 45
 0000 0000  0000 0000  0001 0001  0100 0001 | 00 00 11 41


correspond à la zone cryptée de la carte (soit 96 bits).
Le reste de la carte contient les unitées et le certificat (équivault à la 
signature d'un programme)


II] Emulation

Emulateur t1g: 

Les T1G sont les télécartes de première génération. Ces cartes ne sont 
quasiment plus utilisées. On les retrouve notamment dans les cartes de lavages 
TOTAL. 
Il n'est pas utile que je développe/commente l'émulateur. Mais, même si ces 
cartes ne sont plus utilisées, l'émulateur reste opérationnel et adaptable 
(pour les cartes TOTAL, par exemple).

Emulateur (archive): 
./Files/07/Emulateur_CPAT.rar


Emulateur t2g (télécartes de seconde génération):

L'émulateur T2G josephina à été créé il y a deux ans.
En effet, un bug avait été trouvé lors de la phase d'appel. La cabine ne 
faisait pas de seconde authentification lors de lappel.
Le principe de l'émulateur consistait à faire la phase d'authentification 
sur une vrai carte téléphonique puis, une foi cette phase terminée, de 
basculer par un interrupteur (SWITCH) sur l'ASM du PIC (microcontroleur de 
l'émulateur).
Cet émulateur ne fonctionne plus car d'autres phases d'authentifications ont 
été ajoutés.
 
Réalisation de l'émulateur: 
./Files/07/jospehina par redrum pour cardhack team.doc



Les cartes asynchrones
Exemple d'utilisation : Les cartes bancaires 

Les cartes asynchrones sont aussi appellées "carte à micro-calculateur", 
ou "cartes à microcontroleur".
En effet, l'architecture des actuelles puces asynchrones réunit une unitée 
centrale 8 bits, de la mémoire ROM, RAM, EEPROM (ou EPROM), ainsi que des 
ports d'entrée-sortie, exactement comme tout microcontroleur qui se respecte.
A l'heure actuelle, ces cartes ont de plus en plus de ressources securitaires.

Le dialogue des cartes asynchrones est défini à travers deux protocole, 
le protocole t=0 et le protocole t=1

Actuellement, le cryptage utilisé par nos cartes bancaires est du type 
RSA de l'ordre de 896bits. Voici l'évolution de la RSA ces dernières années:

Avant 1999 = 320 bits (qui a été cassée)
Avant 2001 = 512 bits (qui a été cassée)
Avant 2004 = 768 bits (des rumeurs mais non fondées sur son cassage)
2004 = 768 + 896 bits (les deux sont accouplés)
2005 = 896 bits

Ce système RSA repose sur un système de clé publique - clé privée. La clé 
privée est connue de la banque. La VS (valeur sécuritaire de la carte), 
calculée à partir de la clé privée de la banque (pour une carte bancaire), 
est inconnue pour nous sans casser la clé publique de la RSA.
Pour casser la RSA, il faudrait trouver un multiple de deux nombres premier 
tel qu’ils soient égaux à la clé publique.

Mathématiquement:
a*b= n
où a,b sont des nombres premier et n la clé publique



DESCRIPTION VAGUE DES DEUX PROTOCOLES 
Notion essentielle (adaptation du livre de CHRISTIAN TAVERNIER)

échange de données

Une carte asynchrone fonctionne sur le principe d'émission et réceptions 
d'octets.
ces octets sont structurés suivant deux protocoles, un protocole T=0 (CB 
françaises) et un protocole T=1 (monéo (le porte monaie électronique!!)).
Il est intéréssant de comprendre le protocole T=1 avant le T=0.
De mon point de vue, si vous connaissez le protocole T=1, il ne vous suffira 
alors que d'une simple modification pour comprendre le T=0

Le protocole T=1

Le protocole T=1 est un protocole qui échange des blocs structurés de la 
manière suivante:

PROLOGUE                    |        Information        |   Epilogue
_________________________________________________________________________

NAD    |    PCB    | LEN      |        Données (APDU)      |   LRC
_________________________________________________________________________

1 octet       | 1o    | 1o        |     0 à 254 octets       |    octet


- NAD est l'octet d'adresse de noeud. Le quarter (4 bits) de poids faible 
contient l'adresse de l'émetteur du bloc et le quarter de poids fort l'adresse 
du destinataire du bloc.
- PCB est un octet de contrôle du protocole. Il définit au moyen de ses deux 
bits de poids forts b7 et b6, le type de bloc: superviseur (1,1), information 
(0,0) ou réception prête (1,0);
- LEN est un octet indiquant la longueur du champ d'information qui suit ce 
champ de prologue, exprimé en nombre d'octets.

Le champ suivant est le champs d'information. Il contient les données utiles 
véhiculées par le bloc.

Le champ appelé épilogue est un octet de contrôle, appelé LRC. C'est le 
résultat d'un OU exclusif de tous les octets qui précèdent

Les Données 

Une commande APDU est structurée de la maière suivant:
    
CLA    |    INS    |    P1    |    P2    |    L

CLA, correspond à la Classe
INS est l'instruction de la CLaSS
P1 et P2 correspondent aux octets de données
L est la longueur du bloc (données qui vont être transmisent à la carte ou 
attendues de la carte)

Exemple:
Pour une carte Bancaire:
- La classe BC est la section "maitresse"
- L'instruction 0E, de la classe BC, permet l'éffacement; l'instruction 
20 permet la présentation du code Pin ou de la clée de déblocage de la carte 
etc...
La liste des instructions utilisées par les cartes bancaire est présente dans 
l'asm commenté (voir plus bas)

Les Réponses de la Carte

Une réponse APDU est définie par deux octets:
SW1    |    SW2

-Si une commande n'est pas acceptée, la réponse sera:
R-APDU= SW1='6X'SW2

Liste des comptes rendu

6B 00   Référence incorrecte P1 et P2.
67 00   Longueur incorrecte.
6F 00   Diagnostique non précis.
62 81   Données incorrect.
62 82   Les données ont étaient changer pendant le lecture de celle-ci.
62 84   Sélection d’un fichier non valide.
65 01   Erreur de mémoire. En lecture ou en écriture.
68 00   Fonction non supportée.
6A 00   P1 et/ou P2 sont incorrectes.
6A 80   Les données enregistrées sont incorrectes.
6A 82   Fichier non trouvé.
6A 83   Enregistrement non trouvé.
6A 84   Mémoire insuffisante. 
6A 87   P3 incorrecte pour les références P2 et P3.
6A 88   Informations non trouvées.
6C XX   Longueur incorrecte.



-Si une commande est acceptée, la réponse sera alors
SW1-SW2= 90 00

Si vous avez déjà compris cela, vous pourrez vous amuser avec votre carte. 

Le protocole T=0

Le protocole T=0 est nettement plus simple, puisque la seule chose apparente 
qui le distingue du protocole T=1 est sur l'envoi des blocs. L'épilogue et 
le prologue sont absents...

-exemple : lecture de la VA (Valeur d'Authentification) d'une CB 
Il suffit d'envoyer cette commande à la carte:
BC B0 07 d0 50

BC <=> CLASS
B0 <=> Lecture d'octets
07 d0 <=> P1 P2 Soit: ADRESSE MEMOIRE 07 d0
50 <=> Longueur de bloc attendue en réponse

Allez voir la partie THEORIE sur les cartes bancaires, pour approfondir vos 
connaissances. Essayez avec le logiciel Winexplorer les cripts proposés

---------

Venons-en au fait, nos carte bancaires actuelles sont développés sur le 
protocole t=0 

Les caractéristiques de nos Cartes Bancaires

Composition:

- La Puce (en position ISO) , qui contient, pour résumer,Une VA (valeur 
d'authentification qui est calculé avec les info porteur), Une VS (valeur 
sécuritaire, protégé par le système américain RSA. Cette VS est calculé avec 
la clé privée + infos porteurs) , les infos porteurs et son programme en ROM.


-Encartés (sur le support plastique) <-- 16 chiffres + CVV2, date d'expiration,
nom + prénom

-Bande Magnétique <-- 2 tracks conformes à la norme ISO (qui seront détaillés 
par la suite)



 >>>>>La Puce<<<<<

LA PRATIQUE, les techniques de YESCARD, détournement

Notions indispensables sur le fonctionnement générale du système bancaure 
français, pour ensuite comprendre la THEORIE

Aujourd'hui, il est seulement possible de faire des clones de Cartes Bancaires. 
Deux types de clones sont possibles:


-- clone de CB pas en opposition
Votre clone ne passera pas sur tous les appareils. En effet, si il y a appel 
à la banque, et que vous avez des sous sur votre conte, votre carte passera, 
sauf si la fonction télépass est activée sur le TPE (terminaux de paiement 
électronique). Certains tpe font cette vérification systématiquement, d'autres 
à partir d'un certain montant (généralement 90 euros), et d'autres ne le font 
jamais. 
Le télépass c'est une fonction de la carte qui permet de crypter une trame 
envoyée par le tpe afin d'obtenir une signature unique pour chaque cartes. 
Cela permet au tpe de vérifier l'authenticité de la carte et de savoir si 
il a affaire à une vraie carte ou à une fausse .
Si vous tombez sur un tpe qui ne fait pas cette vérification, alors vous êtes 
gagnant


-- clone de CB en opposition; c’est ce point que je veux détailler avec vous:

Il existe en France beaucoup de TPE off, qui ne font appel à la banque qu'à
un certain plafond d'achat. Ce plafond est généralement fixé à 90 euros.
C'est à dire qu'avec un clone de carte en opposition, sur des tpe off
(tpe offline), vous pouvez faire des achats jusqu'à 90 euros avant que
le tpe ne fasse appel à la banque (et oui, si il ne fait pas appel, il ne
voit pas que la carte est une carte dérobée (ou trouvée bien sur :-p )..
Sur des tpe on (online) l'appel est immédiat et donc l'utilisation de
"fausse yescard" impossible. Les tpe off ont une mémoire de 2000 cartes
blacklistées et, une fois ce seuil atteint, la mémoire est Resetté pour
laisser place au blacklistage suivant. Donc en gros, vous attendez que
2000 cartes se soient écoulé dans le TPE avant de réutiliser votre bin dans
le magasin lol... Votre bin ne sera valide que 2 jours par département
(2 jours d'affilé) et qu'une foi par magasin (problème du blacklistage).
Bien sur, sur des clones de CB en opposition, vous aurez toujours le problème
du télépass détaillé précédemment. Il est absolument impossible de prendre
un clone de CB et d'en modifier les infos par des infos porteurs valides avec
hexworkshop (contrairement à ce que disent certains). En effet, vous pourrez
certes recalculer la VA mais pas la VS (pour cela il faudrait casser la RSA
afin d'en avoir la clé privée).... et donc, vous aurez un beau ticket qui va
sortir du tpe avec un triangle « attention!! » et marqué "appelez ce numéro
de toute urgence". Là, vous avez intérêt à courir.
Par ailleurs, il est aussi impossible, par le moyen d'une yescard, de casher 
en distributeur car, celui-ci, fait une vérification entre la Bande Magnétique
et la puce.
Dans certains départements, des mises à jour ont été effectuées par les
banques sur les tpe ingenico... Cette mise à jour a pour effet de bloquer
les cartes piratées faites avec l'hex de dack18.
Il existe 2 remèdes à ma connaissance. Soit vous changez de départements,
soit vous trouvez l'hex de silver qui est censé marcher.


Donc pour conclure sur les clones de cartes en opposition, deux gros problème 
se posent à vous :

-- résoudre le problème du télépass
-- casser la RSA

LA THEORIE 

Un asm entièrement commenté

Pour comprendre cet ASM, je vous suggère de bien approfondire mon article sur 
LES PROTOCOLES

./Files/07/dack1.6.asm

Cet ASM est à compiler et à programmer dans une carte de type GOLDWAFER 
(16F84 + 24LC16). Il reconstitu le programme d'une CB, mais il ne gère 
pas la certification télépass. Cet ASM est à programmer dans le PIC de 
la GOLD. Dans la mémoire de celle-ci, vous programmerez le mapping.

Le mapping mémoire doit être sauvegarder en EEPROM (24LC16) à l'aide 
de dackbox (ou autre). C'est un fichier BIN (extension .bin) qui contient 
les infos porteurs (adld, VA, VS, numéro de série etc...).
Dans certains ASM, le mapping est directement intégré dans le PIC.

Du plus pour les initiés:
Lecture de la zone des pointeurs, adl, VA et VS d'une CB 

Voici un bout de code qui vous permmettra d'aller lire quelques infos sur vos 
CB actuelles.
C'est un VB script éxécutable par le logiciel Winexplorer (obligatoire):
Code:
'dump par Redrum
'dans le but de l'étude des cartes bancaires françaises

Sub Main()

Sc.Print(vbCr &"Lecture de la zone des pointeurs")
Sc.write("BC B0 09 C0 20")
Sc.Print(vbcr & "Bytes dans le buffer : " & Sc.BytesInBuffer & vbcr)
Sc.Read(1)
Sc.Read(32)
Sc.Read(2)


Sc.Print(vbCr &"Lecture à l'ADL")
Sc.write("BC B0 07 d0 00")
Sc.Print(vbcr & "Bytes dans le buffer : " & Sc.BytesInBuffer & vbcr)
Sc.Read(1)
Sc.Read(256)

Sc.Print(vbCr &"Valeur d'Authentification")
Sc.write("BC B0 07 d0 50")
Sc.Print(vbcr & "Bytes dans le buffer : " & Sc.BytesInBuffer & vbcr)
Sc.Read(1)
Sc.Read(50)

Sc.Print(vbcr &"Valeur Sécuritaire")
Sc.write("bc b0 08 38 00")
Sc.Print(vbcr & "Bytes dans le buffer : " & Sc.BytesInBuffer & vbcr)
Sc.Read(1)
Sc.Read(116)

End Sub

Vérification de votre Code Pin:

Information sur le transcodage du code PIN effectue par le TPE.

Quand on tape, sur le TPE, le code '1234' (par exemple),
le TPE effectue le traitement suivant:
    - conversion de chaque chiffre en binaire sur 4 bits (0001 0010 0011 0100)
    - rajout de 14 bits '1' a droite                     (0001 0010 0011 0100 11111111111111)
    - groupe par 4 bits a partir de la droite            (00 0100 1000 1101 0011 1111 1111 1111)
    - reconvertir les groupes de 4 bits en hexa          (0    4    8    D    3    F    F    F )
Les 4 octets hexa envoyes par le terminal seront donc 04 8D 3F FF.


Dialogue TPE <--> CB

    TPE --> BC 20 00 00 04             ; Presentation code Pin
            20             <-- CB      ; pret pour reception code pin
    TPE --> 04 8D 3F FF                ; 4 byte code pin
            90 00          <-- CB      ; Code pin recu

Code:
Sub Main()
'Instruction BC 20  Présentation du code PIN
'EXECUTION DE LA DEMANDE DE CODE PIN
'INSPIRE DE L EMULATEUR TPE GEZEROLEE
'ESSAI COMPREHENSION REDRUM 2006

Sc.Print(vbCr &"Demande de code PIN")
Sc.write("BC 20 00 00 04")
Sc.Print(vbcr & "Bytes dans le buffer : " & Sc.BytesInBuffer & vbcr)
Sc.Read(1)
'Input code secret ici 1695 = 05 A5 3F FF
'0001 0110 1001 0100
'0001 0110 1001 0100 1111 1111 1111 11
'00 0101 1010 0101 0011 1111 1111 1111
'0    5    A    5    3    F    F    F
'05 A5 3F FF
Sc.write("05 A5 3F FF")
Sc.Read(2)

Sc.Print(vbCr &"ratification du code")
Sc.write("BC 40 00 00 00")
Sc.Print(vbcr & "Bytes dans le buffer : " & Sc.BytesInBuffer & vbcr)
Sc.Read(1)
Sc.Read(2)

End Sub


Voilà qui devrait suffir pour s'amuser pas mal avec les cartes à puces.
Le texte n'est pas fini, mais la partie sur les bandes magnétiques sera publiée
dans un prochaine numéro de Rafale.

Copyright 2006. Tous droits réservés