Méthode d'essai
Panda ne semble pas révéler le mécanisme exact de son «vaccin», ce qui est compréhensible, car il s'agit essentiellement de sécurité par l'obscurité . Si vous savez comment cela fonctionne, vous pouvez inverser les effets et le «vaccin» devient inutile.
J'ai téléchargé et installé Panda USB Vaccine et "vacciné" mon lecteur flash, vidé la partition du lecteur flash avec dd pour windows en utilisant les commandes
dd --list
dd if=\\.\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} of=C:\vaccinated.img
où xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
est le GUID fourni par la première commande, ouvert c:\vaccinated.img
dans un éditeur hexadécimal et recherché AUTORUN
.
Ce que fait le vaccin USB
L'entrée pour AUTORUN.INF
commence par les douze octets suivants:
41 55 54 4F 52 55 4E 20 49 4E 46 42
Les onze premiers octets ne sont que le nom de fichier 8.3 avec un espace :AUTORUN INF
Le dernier octet spécifie les attributs du fichier et sa représentation binaire est:
01000010
Selon la spécification du système de fichiers Microsoft EFI FAT32 , ce dernier octet est un champ de bits qui prend la forme suivante:
XYADVSHR
où les bits A
, D
, V
, S
, H
et R
sont 1
si et seulement si le fichier est archivé, un répertoire, le volume ID 1 , un fichier système, caché ou en lecture seule. AUTORUN.INF
est masqué, car H
est défini sur 1
.
Les bits X
et Y
sont réservés et devraient l'être tous les deux 0
. Cependant, USB Vaccine est réglé Y
sur 1
.
Que dit la spécification
Les deux bits supérieurs de l'octet d'attribut sont réservés et doivent toujours être mis à 0 lorsqu'un fichier est créé et jamais modifié ou examiné par la suite.
De plus, il recommande pour la validation du contenu du répertoire:
Ces directives sont fournies afin que les utilitaires de maintenance de disque puissent vérifier les entrées de répertoire individuelles pour leur «exactitude» tout en conservant la compatibilité avec les améliorations futures de la structure de répertoire.
NE regardez PAS le contenu des champs d'entrée de répertoire marqués réservés et supposez que, s'ils ont une valeur autre que zéro, ils sont "mauvais".
NE RÉINITIALISEZ PAS le contenu des champs d'entrée de répertoire marqués réservés à zéro lorsqu'ils contiennent des valeurs non nulles (en supposant qu'ils sont "mauvais"). Les champs d'entrée d'annuaire sont désignés réservés , plutôt que doivent être à zéro . Ils doivent être ignorés par votre application. Ces champs sont destinés aux futures extensions du système de fichiers. En les ignorant, un utilitaire peut continuer à s'exécuter sur les futures versions du système d'exploitation.
Que se passe-t-il réellement
CHKDSK suit certainement la spécification et ignore l' AUTORUN.INF
entrée que le pilote FAT32 ne comprend pas, mais Windows lui-même ne semble pas se conformer à l'exigence de la spécification de ne plus jamais regarder les bits réservés : tout type d'accès (autre que la liste du fichier et ses attributs) est refusée.
Par exemple, la commande
DIR /A /Q
stipule que le propriétaire AUTORUN.INF
est ...
. Étant donné que FAT32 ne prend pas en charge la propriété des fichiers, il doit indiquer \All
.
La raison de ce comportement inattendu est que, selon l'entrée FAT32 - Wikipedia # Directory , Windows utilise le bit en Y
interne pour signaler un nom de périphérique de caractère (CON, PRN, AUX, CLOCK $, NUL, LPT1, COM1, etc.), et il ne devrait pas être présent sur les périphériques de stockage. 2
D'une certaine manière, USB Vaccine incite Windows à supposer qu'il AUTORUN.INF
ne s'agit pas d'un fichier réel, mais d'un périphérique sur lequel il ne peut pas lire ni écrire.
Comment supprimer le fichier
Si vous avez un accès direct au système de fichiers, il suffit de définir Y
sur 0
(changer l'octet 42
en 02
) pour rendre le fichier supprimable à nouveau. Vous pouvez également définir le premier octet de l'entrée de répertoire sur E5
, marquant directement le fichier comme supprimé. 3
Une autre option serait d'utiliser un pilote différent. Ubuntu 12.04, par exemple, peut supprimer le fichier sans problème. En fait, il "corrige" automatiquement l'entrée de répertoire lors de sa lecture. 4
1 Cet attribut est utilisé, par exemple, pour l'étiquette de volume ou le dossier System Volume Information .
2 Certainement, le réglage X
sur 1
ne semble pas avoir d'effet.
3 J'ai vérifié cela en changeant les octets correspondants de C:\vaccinated.img
avec un éditeur hexadécimal et en écrivant l'image modifiée sur le lecteur flash en utilisant la commande suivante:
dd if=C:\vaccinated.img of=\\.\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
4 Bien qu'il s'agisse d'un écart flagrant par rapport à la spécification, il semble qu'il soit réfléchi. Ubuntu laisse X
intact s'il est défini 1
, car il ne fait aucun mal. La définition du Y
bit sur 1
pourrait facilement être utilisée abusivement par une application malveillante, par exemple en créant un fichier non supprimable qui occupe tout l'espace libre du lecteur.