Sécurité

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

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.

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