Edit du 28/11/2009 : Même l'US Navy se fait avoir.

Commençons tout d'abord par un petit préambule sur les Chinois. Ces derniers se sont fait une spécialité de produire beaucoup, vite et à des prix compétitifs. Il va sans dire qu'ils ne privilégient PAS la qualité. L'économie de marché étant ce qu'elle est, le client veut toujours payer moins cher et met la pression pour que ses fournisseurs tirent les prix vers le bas. Du coup, les fournisseurs/grossistes mettent la pression aux producteurs pour que ces derniers s'alignent eux aussi vers le bas. L'Asie étant la principale région productrice d'électronique et la Chine se taillant la part du lion sur les exportations pour les raisons citées plus haut, c'est à elle qu'on demande encore de baisser ses prix, prix qui sont déjà écrasés. Une fois qu'on a rogné sur la main d'œuvre, sur la qualité des matériaux et sur les processus de fabrication, l'étape suivante, c'est... la contrefaçon.

Pour faire simple, une clé USB, c'est une puce de mémoire flash commandée par une autre puce : le contrôleur. Le moyen le plus simple de contrefaire une clé USB et de prendre une puce de mémoire flash d'une taille donnée et de se servir du contrôleur pour faire croire au système d'exploitation que la taille de la puce mémoire est plus importante.

Quand on branche une clé USB sur un ordinateur, le système d'exploitation ne communique donc pas avec la mémoire flash. Il "parle" au contrôleur et c'est ce dernier qui envoie et reçoit les données échangées avec la mémoire flash. Si on programme le contrôleur pour mentir au système d'exploitation, on peut lui faire prendre des vessies pour des lanternes. En l'occurrence, on va par exemple lui faire croire que la pauvre puce de 2 Go en fait en réalité 8.

Le CE de mon entreprise a décidé d'offrir aux salariés des clés USB de 16 Go en cuir et métal, sérigraphiées à leur nom ainsi qu'au nom du CE.



Cette clé se veut être un bel objet, presque luxueux : cuir, métal brossé, personnalisation, capuchon à languette, poids conséquent...

Cependant, deux détails ont immédiatement attiré mon attention : la vis qui maintient la languette et la configuration de la clé. Je m'explique. La languette en cuir qui retient le capuchon est "bêtement" vissée au corps de la clé. Détail qui craint un peu. Mais ce qui craint plus encore, ce sont les éraflures sur le pas de vis, comme si elle avait été vissée à la va-vite ou mise en place et enlevée plusieurs fois. En comparant ma clé avec celle de mes collègues, je me suis aperçu que toutes présentaient des éraflures. Passons à la configuration de la clé. Une fois branchée et reconnue par le système d'exploitation, la clé présente deux espaces de stockage. Je dis biens deux espaces et non deux partitions car le système voit deux périphériques distincts et pas deux espaces sur le même périphérique. Ce comportement est peu banal sur une clé USB et fait penser aux clés U3, bien connues dans le milieu de la sécurité informatique pour leurs capacités, disons, "spéciales". Voir un CE offrir à l'ensemble de ces salariés ce genre de clé est étonnant. Deux espaces, disais-je. Un espace de presque 16 Go, vide, et un espace de quelques Mo qui contient des documents relatifs à l'activité du CE. Ce dernier espace, en plus d'être ridiculement faible, est protégé en écriture : non seulement on ne peut ni supprimer, ni ajouter des fichiers, mais il est également impossible de le formater. Il se comporte un peu comme un CD. On pourrait remettre en question la pertinence d'un tel choix par le CE, mais là n'est pas le propos.

Cette clé m'a donc intrigué dès le départ. J'ai donc décidé de la démonter. Je pensais avoir des difficultés mais ce fut totalement trivial : la vis était le seul tenant de l'ensemble.



J'ai donc commencé l'examen de la clé en elle-même. Et c'est là que la suspicion s'est aggravée. Si les soudures semblaient propres, la puce flash m'a mis la puce à l'oreille : la surface semblait abrasée et les marquages partiellement effacés. De plus, la présence d'un dépôt ressemblant vaguement à un vernis translucide sur le bord de la puce a achevé de me convaincre que cette clé n'était pas nette.



Je décide alors de faire quelques recherches. Je découvre rapidement que ce genre de pratique est relativement courant et que la plupart des puces font en réalité 1 ou 2 Go, parfois 4 mais jamais plus. Une fois branchée sur le PC, je commence par stocker quelques fichiers textes et j'y accède. Rien à signaler. Je rajoute alors quelques gros fichiers vidéos et je remplis la clé à hauteur de 6 Go. Aucune erreur lors de la copie. J'essaie d'accéder aux fichier vidéos qui s'avèrent illisibles. Plus étonnant, une partie des fichiers texte a aussi été corrompue.

L'explication est simple : une fois que l'espace existant réellement sur la clé est rempli, le contrôleur réécrit par dessus les données. Le fait qu'aucune erreur ne soit remontée et que le système d'exploitation ne s'aperçoive de rien vient du fait que le contrôleur sert d'intermédiaire et "ment" sur ce qu'il fait réellement. C'est le contrôleur qui garde également les informations sur la structure de la clé, ce qui explique qu'on ne puisse pas formater le premier espace : le système d'exploitation essaie mais le contrôleur l'en empêche.

Je décide alors de tester quelle est la taille réelle de la puce qui se trouve sur la clé. Un des meilleurs outils pour ce test est l'utilitaire H2testw. En remplissant l'espace que la clé annonce avec des données qui sont ensuite vérifiées, H2testw identifie la taille de la puce mémoire.



Je sais désormais que la puce de ma clé fait probablement 4 Go. Restent à les récupérer. Je pars donc en quête d'information sur le Net. Après quelques recherches, je récupère la démarche : il faut récupérer les informations d'identification de la clé pour pouvoir "flasher" le firmware du contrôleur avec le programme approprié. L'utilitaire conseillé pour obtenir ces informations de la clé quand on ne peut pas la démonter est ChipGenius. En se basant sur le VID (Vendor ID) et le PID (Product ID) de la clé, il associe le fabricant et le type de contrôleur. Dans l'idéal, on confirme ces informations grâce aux marquages sur le circuit lui-même.



Comme le montre la capture ci-dessus, ChipGenius annonce les données suivantes : VID = 1221, PID = 3234, Fabricant = micov et Contrôleur = MXT8208. Le souci est que ça ne correspond pas tout à fait aux marquages de la clé. Si le fabricant semble correct, le type du contrôleur ne correspond pas.



Le marquage le plus approchant de MXT8208 est celui inscrit sur le circuit imprimé : MXT6208.

Partant de là, je n'ai plus qu'à chercher l'utilitaire correspondant qui permettra de "flasher" le firmware du contrôleur. Je trouve rapidement un site qui fait figure de référence dans ce domaine Flashboot.ru (Si vous ne parlez pas russe, Google Translate est votre ami). Je mets rapidement la main sur UdTools, un utilitaire permettant de flasher les circuits MXT6208 et MXT8208.



Malgré son apparente complexité (et la présence d'un quatrième onglet "caché"), UdTools est extrêmement simple d'utilisation : on branche la clé et elle apparaît normalement sur le premier onglet (Manuf Progress). Un tour sur l'onglet Manuf setting permet de modifier quelques réglages sympa (j'y reviendrai peut-être dans un futur article). Pour le moment, on veut juste réparer la clé. On s'assure que le VID et le PID sont corrects et on revient sur le premier onglet. Il n'y a qu'à cliquer sur la lettre correspondant à la ligne de la clé et c'est parti ! Tout ceci sous réserve que l'utilitaire ait correctement détecté le firmware de la clé. Comme on peut le voir sur la première capture ci-dessus, ce n'est pas encore le cas. La raison est simple : l'outil ne possède pas le "profil" de la clé dans sa base de données (cf. onglet caché "Flash Config").

Je vais suivre successivement 3 pistes avant de trouver la solution. Après avoir remarqué que la liste des noms de profils correspond au numéro de la puce, je vais essayer de trouver le profil correspondant au numéro de série figurant sur la puce via Google, sans succès. Ceci confirme les soupçons de falsification qui ont surgi lors de l'examen de la puce. Je vais alors essayer de modifier un profil similaire et de créer celui correspondant à ma clé. Devant la somme de recherches que cela implique et n'ayant pas envie de ruiner la clé en me trompant de réglage, je remets cette possibilité à plus tard. Je vais enfin essayer diverses versions de UdTools afin d'espérer trouver une version qui contiendra mon profil. Je réalise rapidement que ça peut durer longtemps.

C'est en revenant sur la puce que j'ai décidé de faire des recherches sur le numéro du contrôleur (MW6208E), sans grande conviction : si le numéro de la puce flash est un faux, il y a des chances que celui du contrôleur le soit également. Je tente alors une version de UdTools qui flashe les circuits MW6208E. Et là, Ô joie, la puce est directement détectée.



Le processus de "flashing" va prendre un long moment (plusieurs dizaines de minutes) et de nombreux secteurs défectueux seront détectés. Après la "réparation" et quelques tests avec H2testw, la clé ne fait plus au final que 2711 Mo. On est loin des 4 Go théoriques, mais ce phénomène est courant sur les "fake" clé USB.

Pour la petite histoire, toutes les clés USB fournies par le CE que j'ai pu analyser présentent toutes les mêmes caractéristiques. En revanche, le taux de récupération varie grandement : entre 1,8 et 2,8 Go.

A savoir qu'il s'écoule chaque mois plus d'un million de ces clés USB que certains ont déjà surnommé FrankenFlash. Ebay est un des principaux vecteurs de vente de ces clés. A savoir également que beaucoup de périphériques sont concernés et pas seulement les clés : lecteurs MP3/MP4 et cartes SD sont également des vecteurs potentiels.