Sécurité

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

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é - Cliquer sur l'image pour agrandir

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 introuvable
Illustration 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 Autorun, Explore, Open, Auto, 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.txt) do (
  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é - Cliquer sur l'image pour agrandir

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 - Cliquer sur l'image pour agrandir

Résultat du batch
Illustration 23 - Et vous ouvre le fichier .reg à consulter, puis à fermer et double-cliquer pour enregistrer les modifications - Cliquer sur l'image pour agrandir

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 Explore, Auto, Autorun, Open. Il est possible de trouver dans certains cas des sous-clés aux noms différents (Find, Install, 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.

Vos commentaires
Laissez un commentaire !
A découvrir également :
  1. ZebIxe en tant qu'invité
    le 20 février 2011 à 12h24

    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 réparation W7 inopérant (redémarre continuellement), copie de réinstallation W7 inopérante (je savais déjà le pourquoi mais maintenant surtout comment y remédier... lorsque je pourrai le faire évidemment), impossibilité d'appliquer aucune action avancée par F8 (retombe inévitablement sur l'écran bleue ou redémarre), impossibilité d'entrer dans le bios afin d'écrire certaines commandes clées qui pourraient régler mon problème(chksdk /r, fixboot, bootrec /fixmbc, ...).

    Rien n'y fait... de ce que j'ai essayé du moins mais il existe certainement une solution.

    Évidemment, si j'expose ainsi et ici mon problème, c'est qu'il va y avoir une suite à cette phrase style supplication:

    «POURRIEZ-VOUS M'AIDER S'IL-VOUS-PLAÎT???»

    Merci à l'avance pour les réponses qui, j'en suis certain (comprendre ici «espérance») ne manqueront pas de parvenir,

    ZebIxe

    répondre
  2. Gof en tant qu'invité
    le 27 janvier 2011 à 06h00

    Merci à Jean-Michel

    répondre
  3. Yann en tant qu'invité
    le 25 janvier 2011 à 09h32

    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

    CitationLes 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 désinstaller VaccinUSB.

    Suite à un probléme quand l'on vaccine plus d'une clef USB ajout du nettoyage du "temp" des anciens nomrep.txt, lecteur.txt et rapportVacUSB.txt en début de script pour éviter que l'ancienne vaccination soit répété, en cas de d'ajout ou de retrait de "signature" (nomrep).

    Voilà je pense avoir fait le tour des modifications du script d'origine. Merci pour votre article et à l'auteur du script original qui m'a beaucoup aidé à résoudre un soucis

    Cordialement

    Jean-Michel

    répondre
  4. Gof en tant qu'invité
    le 08 janvier 2011 à 11h00

    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.

    répondre
  5. Gof en tant qu'invité
    le 08 janvier 2011 à 10h48

    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

    répondre
  6. hossec en tant qu'invité
    le 06 janvier 2011 à 21h57

    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"
    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, y, 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 driver > %temp%\nomrep.txt
    echo myfolder > %temp%\nomrep.txt
    echo autorun.inf > %temp%\nomrep.txt
    goto vaccon

    RIEN Y FAIT, IL NE CREE QUE LE REPERTOIRE AUTORUN.INF

    Pouvez vous me précisez ou j'ai fait une erreur

    Merci d'avance

    répondre
  7. dzork en tant qu'invité
    le 06 janvier 2011 à 12h03

    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.

    répondre
  8. Gof en tant qu'invité
    le 22 juin 2010 à 22h21

    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.

    répondre
  9. Gof en tant qu'invité
    le 16 mai 2010 à 20h45

    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 conviendra parfaitement.

    USB-SET est disponible ici sur Zebulon, ou sur l'hébergement de l'auteur Loup blanc ici. La version au moment où j'écris ces lignes est la 1.4.1.

    En cas de soucis, un support peut être assuré sur le forum, dans Optimisation, Sécurisation, Prévention.

    A bientôt

    répondre
  10. jeje cordao en tant qu'invité
    le 12 mai 2010 à 15h54

    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

    répondre
Ecrire un commentaire