Guide de sécurisation de Windows face aux menaces des périphériques amovibles

Par Gof

Nettoyage du cache USB

A chaque insertion d’un support amovible et de l’exécution automatique associée, le système sauvegarde la fonction d’exécution de l’application sur le support concerné. Ainsi, même après avoir désactivé l’exécution automatique, il peut arriver que le système persiste à vouloir exécuter une application à l’insertion d’un support amovible (qui avait auparavant inséré et que le système a reconnu). Ce cas de figure peut entraîner ainsi un problème d’ouverture de lecteur au double-clic, car le système persistera à vouloir exécuter une application (appelée par le fichier autorun.inf même si ce dernier n’est plus présent) même si elle n’est plus là. Par conséquent, le système donne l’illusion de ne plus pouvoir ouvrir le lecteur.

Indépendamment du souci évoqué, conserver des traces d’exécution d’applications à l’insertion de supports amovibles n’est pas sain, même si ces traces ne sont plus opérantes. Bien souvent, une application appelée à l’insertion d’un support est une infection. Nous allons donc faire le ménage dans ces entrées afin d’y voir plus clair. Nous trouverons ces entrées (en fait sous-clés, valeurs et données de valeurs) dans l’Editeur du Registre sous la clé suivante :

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2

Nous trouvons des sous-clés en quantité impressionnante, identifiées par un identificateur de classe (CLSID), qui correspond à l’insertion d’un support amovible. En faisant dérouler ces sous-clés, nous constatons la présence de sous-clés-enfants supplémentaires contenant chacune des valeurs et données particulières. Ainsi, à titre d’exemple, à l’insertion d’une clé USB contaminée par l’infection basique Adober.exe et son fichier Autorun.inf de propagation, la sous-clé avec les valeurs et données de valeurs suivantes a été crée (Illustration 17) :

Infection Abober.exe dans regedit

Illustration 17 (Windows XP) – Clé, valeurs et données de valeurs crées à l’insertion du support infecté

Ainsi, si à l’insertion du support infecté votre antivirus a réagi et a neutralisé et supprimé le fichier infectieux Adober.exe, l’autorun.inf étant toujours présent sur le support, à chacune des insertions du-dit support, le système cherchera à exécuter le fichier Adober.exe qui n’existe plus. Résultat : vous obtiendrez un message d’erreur indiquant que l’application est introuvable au double-clic pour ouvrir le lecteur, et l’explorateur Windows ne s’ouvrira pas (Illustration 18). CQFD.

Application introuvableIllustration 18 (Windows Vista) – Application introuvable à l’insertion d’un support

Vous avez saisi ce que j’appelle arbitrairement le ‘Cache USB‘. Nous allons donc nous appliquer à nettoyer ces entrées, en les distinguant les unes des autres. Nous allons considérer que toute entrée appelant un programme exécutable (.exe, .com) ou susceptible de contenir des informations exécutables (.bat, .vbs, .vbe, .cmd, .pif, .scr, .jpg, .dll, .js) est potentiellement malsaine et sera à supprimer. Bien entendu, si un fichier Autorun.inf contenant les informations d’appel se trouve encore sur un de vos supports, la sous-clé se reconstituera à l’insertion du support si l’exécution automatique est toujours activée ; il faudra donc prendre soin de supprimer le fichier .inf en question (cf partie “Rétablir le double-clic pour ouvrir un volume” des Annexes), puis de procéder au nettoyage des sous-clés comme indiqué ici.

Que se passera-t-il si une entrée était saine et que nous l’avons supprimée ? Pas de panique, le système reconstituera la sous-clé et toutes les valeurs et données de valeurs associées à la prochaine réinsertion du support en question. Il est possible que cela prenne un tout petit peu plus de temps pour exécuter les informations à l’insertion du support, mais cela reste négligeable en terme de durée (de quelques millisecondes à secondes, en fonction de votre système, de sa configuration et de ses capacités).

Plusieurs méthodes peuvent s’offrir à nous pour nettoyer ce Cache USB. La première, la plus basique, est la méthode manuelle. Via l’Editeur du Registre, vous prendrez soin de dérouler chacune des clés, sous-clés, et de consulter les données associées aux valeurs jusqu’à ce que vous tombiez sur un appel à un fichier exécutable ou susceptible d’être interprété comme tel. Il faut reconnaître que c’est laborieux. En cas de trouvaille, il faudra supprimer la clé parente associée, c’est à dire la clé contenant le CLSID directement dans la branche Mountpoints2.

Une deuxième méthode consisterait à automatiser cette tâche de recherche afin de vous révéler et de supprimer automatiquement les entrées, via un batch (fichier à l’extension .bat). En s’inspirant du code de UsbFix réalisé par Chiquitine29 et adapté ici avec son aimable autorisation, nous pourrions nous nous orienter sur un batch tel que celui qui suit (Illustration 19).

Notre batch adapté va donc chercher tous les appels à des fichiers aux extensions citées plus haut, dans toutes les sous-clés contenant les termes AutorunExploreOpenAuto, elles-mêmes dans toutes les sous-clés sous la clé Mountpoints2. Puis, ce dernier va extraire les sous-clés à supprimer afin de rédiger un fichier .reg prêt à l’emploi ; c’est à dire prêt à être double-cliqué afin d’être fusionné. Si aucune sous-clé n’est recensée, le batch vous en informera et se fermera. Notez que l’exécution du fichier .reg n’est pas automatique, et que son lancement nécessite votre interaction : ceci afin de pallier à toute éventuelle erreur et que vous puissiez contrôler le résultat obtenu au préalable. N’oubliez pas que vous devez obtenir l’icône suivante à l’enregistrement du batch (illustration 20), sinon ce dernier ne sera pas opérationnel.

Fichier .bat
Illustration 20 (XP) – Icône d’un fichier .bat

Cela dit, il vous sera aisé d’automatiser la fusion automatique du fichier .reg si vous le souhaitez. Note : vous avez des numéros en entrée de ligne ; ils doivent vous permettre de visualiser où sont les retours à la ligne des faux retours imposés par la mise en page du PDF. Ils ne sont bien sûr pas à copier-coller pour obtenir un batch opérationnel. Note : le batch est disponible au téléchargement sur la page suivante.

  1. @echo off
  2. title Batch de recherche d’entr‚es dans les cl‚s Mountpoints2
  3. color 9f
  4. if exist del_mountpoints2.reg del /q del_mountpoints2.reg
  5. echo.
  6. echo Veuillez patienter, recherche en cours dans la Base de Registres…
  7. for /f “tokens=*” %%a in (reg query
    “HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2″‘) do (
  8.    reg query “%%a\Shell\AutoRun\command”>nul 2>&1
    &&(echo.%%a\Shell\AutoRun\command>>del_mnpts2_1.txt)
  9.    reg query “%%a\Shell\Explore\Command”>nul 2>&1
    &&(echo.%%a\Shell\Explore\Command>>del_mnpts2_1.txt)
  10.    reg query “%%a\Shell\Open\Command”>nul 2>&1 &&(echo.%%a\Shell\Open\Command>>del_mnpts2_1.txt)
  11.    reg query “%%a\Shell\Auto\Command”>nul 2>&1 &&(echo.%%a\Shell\Auto\Command>>del_mnpts2_1.txt)
  12.    )
  13.    if exist del_mnpts2_1.txt (
  14.    for /f “tokens=*” %%a in (del_mnpts2_1.txtdo (
  15.    reg query “%%a” /s | findstr /I “.bat .com .cmd .exe .vbs .pif .jpg .scr .dll .dll.vbs RECYCLED\*.exe .vbe RECYCLER\*.exe .dat .js wscript.exe Lany.vbs resycled\boot.com cradle_of_filth.vbe wscript.exe sys.vbs” >nul 2>&1 &&(
  16.    for /f “tokens=8,9,10,11 delims=\” %%b in (“%%a”) do (
  17.    echo.HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\%%b>>del_mnpts2_2.txt
  18.    )))
  19.    )
  20.    if exist del_mnpts2_2.txt (
  21.    echo Windows Registry Editor Version 5.00>>del_mountpoints2.reg
  22.    echo.>>del_mountpoints2.reg
  23.    for /f “tokens=1* delims=” %%A in (‘type “del_mnpts2_2.txt“‘) do (
  24.    reg query “%%A” >nul 2>nul
  25.    if not errorlevel 1 echo [-%%A]>>del_mountpoints2.reg
  26.    ))
  27. if exist del_mnpts2_1.txt del /q del_mnpts2_1.txt
  28. if exist del_mnpts2_2.txt del /q del_mnpts2_2.txt
  29. cls
  30. if not exist del_mountpoints2.reg (
  31.    echo.
  32.    echo Aucune occurrence trouv‚e, le Batch va se fermer.
  33.    echo.
  34.    echo.
  35.    pause
  36.    exit
  37.    )
  38. if exist del_mountpoints2.reg (
  39.    echo.
  40.    echo A l’appui sur une touche, le fichier avec les occurrences trouv‚es va s’ouvrir.
  41.    echo.
  42.    echo Veuillez le fusionner pour supprimer les entr‚es rev‚l‚es.
  43.    echo.
  44.    echo.
  45.    pause
  46.    notepad del_mountpoints2.reg
  47.    exit
  48.    )

Illustration 19 – batch suggéré pour automatiser la suppression de restes en clés Mountpoints2.

Lancement du batch Mountpoints2

Illustration 20 – Exécution du batch – Cliquer sur l’image pour agrandir

Ainsi, si aucune occurrence n’est trouvée, le batch vous l’annoncera (Illustration 21).

Le batch n'a rien trouvé

Illustration 21 – le batch annonce qu’il n’a rien trouvé

Alors qu’à l’inverse si des occurrences se sont révélées, à l’appui sur une touche (Illustration 22), le Bloc-notes s’ouvrira avec le résultat de la recherche (Illustration 23).

Le batch a trouvé des occurences

Illustration 22 – le batch annonce qu’il a trouvé des occurrences

Résultat du batchIllustration 23 – Et vous ouvre le fichier .reg à consulter, puis à fermer et double-cliquer pour enregistrer les modifications

Le batch proposé n’est qu’une suggestion, libre à vous si vous le souhaitez de rédiger à votre convenance votre propre code. Vous pouvez si vous le désirez le télécharger directement. La recherche ici se cantonne aux sous-clés ExploreAutoAutorunOpen. Il est possible de trouver dans certains cas des sous-clés aux noms différents (FindInstall, etc.) ; il est alors possible de modifier le batch en conséquence.

Nous venons donc de voir ce que l’on pourrait appeler le “cache USB” et comment on pourrait -manuellement ou automatiquement- procéder au tri et au nettoyage des entrées (sous-clés) révélées. Certains outils de désinfection s’appliquent aussi à nettoyer ces entrées parfois illégitimes ; nous les aborderons succinctement dans les Annexes.

S’abonner
Notifier de
guest
12 Commentaires
plus ancien
plus récent Le plus populaire
Commentaires en ligne
Voir tous les commentaires
arkanax

très bon travail d’information,merci 😉

Gof

Merci du commentaire arkanax 🙂

jeje cordao

super travail, bien détaillé, par contre j’ai trouvé un logiciel qui apparemment pourrait réaliser toutes ses actions : USB-set 1.2 ou 1.3?
Qu’elle est votre opinion sur ce petit utilitaire.

et encore merci aux nomx de tous

Gof

Bonsoir jeje cordao 🙂 Merci du commentaire. En effet, ce petit logiciel permet d’automatiser quasiment tous les éléments recensés et indiqués dans le tutoriel. Le logiciel en question a été créé par Loup blanc, un ami, pour permettre d’automatiser facilement les conseils suggérés du PDF. J’en avais parlé en commentaire du billet de ce Guide, sur le blog La mare du Gof. Ainsi, pour ceux qui veulent comprendre et faire les manipulations manuellement, je leur suggère de consulter le PDF et d’appliquer par eux-mêmes les suggestions qui leur conviennent. Pour les autres, moins à l’aise ou plus pressés, l’outil USB-SET… Lire la suite »

Gof

Bonsoir,

Le document est à présent disponible sur le lien suivant : cliquer ici.

Suite à la mise à jour du forum, le lien a changé. Pour ceux qui ont inséré ce billet sur leur site/blog, pensez à changer/modifier le lien de téléchargement, merci.

dzork

Bonjour et merci pour cette info.
Par contre, j’aimerais savoir s’il est possible de bloquer l’écriture d’un seul port usb sans bloquer les autres ports.

cordialement.

hossec

Bonsoir, Tout d’abord merci pour votre tuto. Cependant je rencontre un problème pour créé le bat. J’ai rajouté des lignes comme vous l’avez préconisé, pour créé plusieurs répertoire mais sans succès. il ne me créé qu’un seul répertoire Voici mon bat: 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"… Lire la suite »

Gof
hossec a dit :

(…) Pouvez vous me précisez ou j’ai fait une erreur

Bonjour hossec 🙂

Pour les lecteurs, il est préférable de poser vos questions éventuelles sur le forum, ici je risque de passer à côté et ne pas voir les questions.

Je réponds dans ton sujet hossec 😉

Gof
dzork a dit :

(…) Par contre, j’aimerais savoir s’il est possible de bloquer l’écriture d’un seul port usb sans bloquer les autres ports.
cordialement.

Bonjour 🙂

Dans la méthode proposée, tous les périphériques ne seront pas disponibles en écriture. Je n’ai pas la réponse à ta question, à savoir isoler un seul périphérique afin d’interdire l’écriture sur tous les autres. Il faudrait pour cela trouver une solution différente de celle que j’ai proposée, car cette dernière ne permet pas cette distinction.

Yann

Bonjour, Voici deux scripts supplémentaires envoyé par Jean-Michel, un de nos lecteur. Merci à lui ! – VaccinUSB_On-Off_Select_Drive.bat – VaccinUSB_On-Off_All_Drive_and_Registre.bat Citation Les 2 versions vaccinent contre les mêmes "virus/trojan" que VaccinUSB.exe, avec en plus l’option d’installer ou de désinstaller le vaccin. Le nomrep à la fin des scripts pour simplifier l’ajout (la liste de nomrep est la même que l’actuel VaccinUSB.exe ) La version "All Drive" installe ou désinstalle VaccinUSB sur les 26 lecteurs possibles, ainsi que l’affichage registre au sujet de l’autorun (section :examreg du script). La version "Select Drive" demande le lecteur sur lequel l’on veut installer ou… Lire la suite »

Gof

Merci à Jean-Michel 🙂

ZebIxe

Cette information vaut de l’or pour moi: je n’ai lu aucune réponse-solution qui approchait celle-ci, même en anglais. De l’or… sauf qu’il est un peu tard pour moi pour l’appliquer. Éprouvant actuellement un problème d’amorçage sous OS W7 32 bits et comme tout bon internaute, j’ai fait différentes recherches, appliqué différentes solutions «post-mortem» qui n’ont malheureusement pas réglé mon problème qui consiste: message d’erreur sur écran bleu mais tellement rapide que je dois désactiver la fonction de démarrage automatique de W7 pour parvenir à le lire soit «UNMOUNTABLE_BOOT_VOLUME, code d’erreur STOP: OX…ED et la suite) Rien n’y fait: disque de… Lire la suite »

12
0
Nous serions ravis d'avoir votre avis, laissez un commentaire !x