Vaccination à l’aide des noms réservés Windows
Nous avons vu que manipuler les attributs de fichier ne suffit pas à protéger de l’écrasement -à terme- un autorun.inf vaccin inoffensif. La gestion de permissions sur les fichiers d’un périphérique amovible bien souvent en FAT ou FAT32 n’est pas envisageable [Certains formatent ou convertissent leurs disques externes en NTFS ; un nouveau format très performant exFAT est apparu spécialement pour les volumes amovibles, il gère les ACL, et son driver est disponible pour XP2-cela ne sera pas abordé ici]. A défaut, nous pouvons utiliser une autre astuce valable sur toutes les versions Windows, à savoir l’emploi des noms réservés Windows.
De quoi s’agit-il ? Il existe des noms réservés que Windows ne vous permettra pas d’allouer à des fichiers ou des répertoires ; ces derniers sont (étaient plutôt) utilisés pour envoyer des donnés à des périphériques matériels et versions du DOS. Afin de préserver toute compatibilité, ces noms ne sont donc pas autorisés par Windows. En voici une liste non exhaustive : NUL, COM1, AUX, COM2, COM3, COM4, CON, LPT1, PRN, LPT2, etc. Vous pouvez vous amuser à essayer de créer un répertoire avec un des noms de cette liste, l’explorateur Windows ne vous le permettra pas. C’est cette particularité que nous allons exploiter.
Grâce à l’invite de commande, nous allons pouvoir forcer la création d’un fichier avec l’emploi d’un de ces noms. Quel rapport avec notre fichier Autorun.inf ? me direz vous. Il n’y a rien d’interdit d’emploi dans ce nom là, et si on rajoute au mot l’un de ceux de la liste, le terme nouvellement acquis ne sera plus homonymique du fichier autorun.inf… et donc aucun intérêt ! Vous aurez raison.
Pour pallier à cela, nous allons donc créer un répertoire homonymique autorun.inf, qui lui même contiendra un fichier vide créé à l’aide des noms réservés Windows. L’astuce est là. Nous créons ainsi un répertoire qui n’est pas écrasable par une infection, car ces dernières ne sont pas en mesure de supprimer ce répertoire sur le périphérique amovible. Elles ne pourront que copier-coller les fichiers infectieux, pas le fichier de propagation.
A la prochaine insertion du périphérique sur un système sain, la propagation automatique de l’infection ne s’effectuera pas, et -normalement- les fichiers annexes infectieux (non exécutés automatiquement grâce au répertoire vaccin) seront traités par l’antivirus à leur détection. Même en l’absence de réaction de l’antivirus sur le système hôte, tant que vous n’irez pas par vous-même cliquer sur les fichiers infectieux, ils ne seront pas exécutés ni interprétés : la propagation en est ainsi très réduite. Afin de créer un fichier à l’aide des noms réservés Windows, nous allons utiliser l’invite de commande cmd.exe. Pour pouvoir créer ce fichier, il est impératif de connaître son emplacement précis, et d’utiliser une certaine syntaxe. Voici celle que je vous propose à titre d’exemple (illustration 37) :
type nul > “\\\?\c:\con.repertoire vaccin” |
Illustration 37 – Exemple de création d’un fichier avec un nom réservé
L’exemple proposé créé ainsi un fichier nommé con.repertoire vaccin à la racine du lecteur C. Vous constaterez que vous ne pourrez pas -via l’explorateur Windows- le supprimer, ni le renommer. Vous ne pourrez que le déplacer en le glissant-déposant dans un autre répertoire. Pour le supprimer, nous utiliserons sensiblement la même syntaxe (illustration 38), qui, ici aussi, nécessite de connaître son emplacement précis, la commande ne supportant pas l’emploi de variables. Vous pouvez, en revanche, utiliser là des outils tiers pour la suppression de ces fichiers ; certains utilitaires prennent en charge ce type de fichiers créés à l’aide des noms réservés Windows, comme Unlocker par exemple.
del /q “\\\?\c:\con.repertoire vaccin” |
Illustration 38 – Exemple de suppression d’un fichier avec un nom réservé
Je vous suggère l’emploi d’un petit batch (illustration 39) qui va automatiser donc la création d’un répertoire autorun.inf à la racine de chacune des partitions et périphériques amovibles, contenant un fichier créé à l’aide des noms réservés Windows. C’est une suggestion, libre à vous de l’adapter.
chcp 1252 @echo off del /q %temp%\rapportVacUSB.txt echo %date% – %time% – Vaccin USB – Gof>%temp%\rapportVacUSB.txt echo. >>%temp%\rapportVacUSB.txt goto lecteur :vaccon echo Répertoires et fichiers vaccins :>>%temp%\rapportVacUSB.txt echo. >>%temp%\rapportVacUSB.txt FOR /f %%g in (%temp%\lecteur.txt) do for /f %%h in (%temp%\nomrep.txt) do ( if exist “%%g\%%h” echo %%g\%%h Present >> %temp%\rapportVacUSB.txt if exist “%%g\%%h” attrib.exe -h -r -s -a “%%g\%%h” if exist “%%g\%%h” del /q “%%g\%%h” rd /s /q “%%g\%%h” md “%%g\%%h” type nul > “\\\?\%%g\%%h\con.Repertoire vaccin” if exist “\\\?\%%g\%%h\con.Repertoire vaccin” echo %%g\%%h – Vaccin Ok >> %temp%\rapportVacUSB.txt attrib.exe +h +r +s +a “%%g\%%h” ) goto sortie :sortie echo.>> %temp%\rapportVacUSB.txt echo %date% – %time% : Fin.>> %temp%\rapportVacUSB.txt start %temp%\rapportVacUSB.txt exit :lecteur del /q %temp%\lecteur.txt echo Lecteur détectés :>>%temp%\rapportVacUSB.txt echo. >>%temp%\rapportVacUSB.txt for %%i in (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z) do ( vol %%i: if not errorlevel 1 echo %%i: >>%temp%\lecteur.txt vol %%i: if not errorlevel 1 vol %%i: >>%temp%\rapportVacUSB.txt ) echo. >>%temp%\rapportVacUSB.txt goto nomrep :nomrep echo autorun.inf > %temp%\nomrep.txt goto vaccon |
Illustration 39 – Création d’un répertoire vaccin à la racine des partitions et périphériques amovibles
Vous pouvez directement le télécharger si vous le désirez. Pour supprimer ces répertoires, il suffira de modifier quelques commandes dans le batch, disponibles également au téléchargementsi vous le souhaitez. Ainsi, le batch proposé permet -comme déjà écrit- de créer un répertoire autorun.inf sur chacune des partitions et des périphériques amovibles branchés (quel que soit l’emplacement d’exécution du Batch), avec un fichier au nom réservé de sorte de gêner sa suppression par une infection. A des fins de confort d’utilisation, on lui alloue des attributs cachés, système, etc.
Vous constaterez que le batch est modifiable de sorte de pouvoir insérer d’autres noms de répertoires vaccins. Quel est l’intérêt de rajouter des répertoires vaccins ? Je vous l’accorde, il ne sera évidemment pas possible de vacciner contre toutes les menaces, c’est impossible. En revanche, pour les amateurs de cybercafés ou autres lieux publics, vous remarquerez peut-être l’insertion de toujours les mêmes fichiers infectieux sur vos périphériques amovibles. Cela arrive quand les systèmes sont infectés, et que l’administrateur ne s’en soucie pas d’avantage. Ainsi, en plus de stopper la propagation (via l’autorun.inf), nous pouvons vacciner le support par rapport à une infection spécifique que vous rencontrez très régulièrement -et sous réserve que le nom de cette infection ne soit pas généré aléatoirement. Ce sont les dernières lignes du Batch qui vont nous intéresser, celles après la ligne : nomrep (illustration 40) :
:nomrep echo autorun.inf > %temp%\nomrep.txt goto vaccon |
Illustration 40 – Partie du batch que nous pouvons modifier pour rajouter des répertoires vaccins
Le rajout de répertoires se fera simplement par l’insertion de lignes (illustration 41) à la suite de la deuxième ligne de l’extrait isolé sur la capture précédente.
:nomrep echo autorun.inf > %temp%\nomrep.txt echo Nom_du_répertoire_supplémentaire_1 >> %temp%\nomrep.txt echo Nom_du_répertoire_supplémentaire_2 >> %temp%\nomrep.txt echo Nom_du_répertoire_supplémentaire_3 >> %temp%\nomrep.txt goto vaccon |
Illustration 41 – Insertion de répertoires vaccins personnalisés
L’exemple proposé vous montre comment insérer dans le code vos propres répertoires vaccins personnalisés, en fonction de ceux que vous rencontrez le plus souvent. Il vous suffira de juste rajouter au code, en copiant collant la ligne contenant autorun.inf et de remplacer ce nom par le répertoire que vous souhaitez voir apparaître. En lieu et place donc de Nom_du_répertoire_supplémentaire_1 ; etc. pour chacune des lignes. A l’identique, si vous souhaitez modifier le batch de suppression des répertoires vaccins, il vous faudra également insérer les lignes supplémentaires dans le code. Il est construit de la même manière, de sorte que vous n’ayez que les dernières lignes à modifier.
Vos supports sont ainsi, par défaut, vaccinés contre tout autorun infectieux, ce qui vous permettra d’éviter de ramener des infections sur vos systèmes. La personnalisation du batch me semble être un plus, car elle vous permet de s’adapter aux infections du moment sur vos lieux de fréquentation habituels. Cette méthode simple, réactive et personnalisable, me semble être un moyen préventif intéressant pour les supports amovibles.
Dernière mise à jour le 17 mars 2019