
Cette page évoque les différentes méthodes dont peut se servir un programme, légitime ou non, pour se lancer automatiquement au démarrage d'un système d'exploitation Windows 32 bits.
Cette page est une annexe de la FAQ du forum de discussion Usenet fr.comp.securite.virus.
Avertissement
Le registre et les fichiers mentionnés dans cette page sont des éléments sensibles de votre système d'exploitation, ils sont donc à manipuler avec précaution :
- Registre : Edition avec regedit.exe. Faire une sauvegarde avant toute modification en lancant scanregw.exe, et exporter (registre/exporter) au préalable les clefs que vous voulez supprimer. En cas de problème, vous pourrez toujours les réimporter dans le registre.
- Fichiers : Au lieu de les supprimer, il vaut mieux les renommer, les archiver ou leurs ajouter une extension .old.
1. Dossiers de démarrage
Les dossiers vers lesquels pointent ces clefs verront tous les fichiers exécutables qu'ils contiennent exécutés. Valable pour tous les Windows.
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders] Startup = "C:\windows\menu démarrer\programmes\démarrage" [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders] Startup = "C:\windows\menu démarrer\programmes\démarrage" [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders] Common Startup = "C:\windows\menu démarrer\programmes\démarrage" [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders] Common Startup = "C:\windows\menu démarrer\programmes\démarrage"
Exemple 1 : C:\windows\Menu Démarrer\Programmes\Démarrage
Exemple 2 : C:\windows\All Users\Menu Démarrer\Programmes\Démarrage
Exemple 3 : C:\winnt\Documents and Settings\All Users\Start menu\Programs\Startup
Section Fichiers
2. Win.ini
Fichier impliqué dans le démarrage de Windows, localisé dans le répertoire de Windows.
Il peut être édité plus facilement avec msconfig.exe (non présent d'origine sous 95/NT/2k).
[windows] load = fichier1.exe run = fichier2.exe
fichier1.exe et fichier2.exe sont exécutés à chaque démarrage normal de windows.
3. System.ini
Fichier impliqué dans la configuration système. Editable facilement avec msconfig.exe.
[boot] Shell = Explorer.exe fichier.exe
Dans cette section, Explorer.exe et fichier.exe seront exécutés.
Voir aussi le point 17 pour le problème concernant le démarrage de l'explorateur Windows.
[386Enh] device = virus.vxd
En s'enregistrant dans la section [386Enh], un malware se lancera à chaque démarrage en tant que pilote virtuel de périphérique. Un exemple, le virus Win95.Fono.
4. Autoexec.bat
Ce batch est exécuté à chaque démarrage au niveau du DOS (Win9x, ME) il est localisé à la racine du disque dur (C:\). Sous Windows NT/2k/XP, il est analysé et seules les variables d'environnement sont prises en compte.
5. Config.sys
Config.sys est un fichier de configuration hérité du DOS au même titre qu'autoexec.bat. Il est aussi localisé à la racine du disque dur uniquement pour les versions Windows 9x et Millenium. Il peut exécuter des commandes grâce à l'interpréteur de commandes command.com:
shell=c:\command.com /e:32768 /k c:\infected.bat
Sur les Windows NT, ce fichier n'est présent que pour des raisons de compatibilité.
6. Winstart.bat
Se comporte comme un batch habituel. Utilisé pour supprimer des fichiers spécifiques, il s'exécute à chaque démarrage si présent dans le répertoire Windows .
N'est pas pris en compte sous Windows NT/2k/XP.
7. Wininit.ini et Wininit.exe
Uniquement valable pour Win9x et WinME.
-
Wininit.iniFichier utilitaire présent dans le dossier Windows souvent utilisé par les programmes d'installation pour supprimer des fichiers au redémarrage. S'il existe, il est utilisé une fois par le programme wininit.exe puis renommé en wininit.bak.
Il ne permet pas le lancement automatique direct, mais il peut être utiliser pour déplacer des fichiers vers des points de démarrage automatique (comme les dossiers de démarrage, voir le point 1.)
[Rename] NUL=c:\temp\programme.exe c:\windows\system\fichier.exe=c:\temp\fichier.tmp
Dans cet exemple, le fichier c:\temp\programme.exe va être supprimé.
Fichier.tmp va être renommé en fichier.exe et déplacé dans le sous-répertoire System.
-
ininit.exeCe programme est systèmatiquement exécuté peu après l'affichage du logo Windows. Il peut donc être remplacé ou modifié pour effectuer des tâches illégitimes.
Section Registre
Attention, toutes les clefs décrites dans cette section peuvent aussi contenir d'autres clefs. Dans la plupart des cas leur contenu sera lui aussi pris en compte. En d'autres termes, description de la clef [...\clef1] concerne aussi la clef [...\clef1\clef2].
8. Les Clefs Run
Les "clefs Run" du registre Windows sont l'endroit le plus populaire pour faire démarrer un programme illégitime.
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run] [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce] [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices] [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce] [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run] [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run] [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce] [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices] [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce] [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run] [HKEY_USERS\xxxxxx\Software\Microsoft\Windows\CurrentVersion\Run] [HKEY_USERS\xxxxxx\Software\Microsoft\Windows\CurrentVersion\RunOnce]
xxxxxx étant le nom chiffré d'un utilisateur.
(Pour toutes les clefs:) Une valeur = c:\Dossier\programme.exe
(Avec les flux sous NTFS:) Une valeur = rundll32.exe c:\winnt\system32:malware.dll, init
programme.exe sera exécuté à chaque démarrage normal s'il est enregistré dans l'une de ces clefs.
malware.dll sera exécuté comme un .exe grâce à rundll32.exe. Cette dll est invisible car en utilisant une fonctionnalité de NTFS, son flux de donnée a été ajouté à celui du dossier system32.
Un exemple d'utilisation de la technique: la backdoor Afcore.q.
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnceEx] [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx] [HKEY_USERS\xxxxxx\Software\Microsoft\Windows\CurrentVersion\RunOnceEx] Une application = ||notepad.exe
Le fichier notepad.exe sera aussi exécuté à chaque démarrage.
Plus d'informations sur: http://support.microsoft.com/default.aspx?scid=KB;fr;q232509
9. Les Services
Au démarrage, Svchost.exe scrute la partie du registre réservée aux services pour générer une liste de ceux qu'il doit charger. Les groupes sont identifiés à la clef de registre suivante :
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Svchost]
Chaque groupe Svchost peut contenir un ou plusieurs noms de service extraits de la clef de registre suivante :
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Un_Nom_de_Service]
Le ver Welchia procède ainsi. Pour plus d'informations sur Svchost.exe, voir les explications pour Windows 2000 et Windows XP sur le site de Microsoft.
10. Control
Plusieurs possibilités depuis cette clef :
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager] BootExecute = programme.exe
Ici, programme.exe sera exécuté à tous les démarrages.
Wininit.exe n'existant pas sur les WindowsNT, il faut utiliser PendingFileRenameOperations pour déplacer/renommer des programmes qui étaient en cours d'utilisation. Bien sûr comme pour wininit, ce procédé ne peut être utilisé que pour un lancement indirect.
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager] PendingFileRenameOperations = \??\c:\temp\worm.sys !\??\c:\winnt\system32\prog.sys
Dans cet exemple, le fichier worm.sys sera déplacé dans c:\winnt\system32 et renommé prog.sys. Si le ficher existait, il sera écrasé.
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\MPRServices]
Pour plus de précisions, voir les descriptions des backdoors Haxdoor.i, et NetCrack.11.a.
11. AppInit_DLLs, Load et Run
Sous les WindowsNT (NT, 2k, XP), toutes les dll spécifiées à cet endroit seront chargées par chaque application win32 s'exécutant lors d'une ouverture de session.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows] AppInit_DLLs = programme.exe Load = c:\Dossier\programme.exe Run = c:\explorer.scr
La technique AppInit_DLLs est utilisée par le virus Elkern largué par le ver Klez.e. Plus d'info sur microsoft.com. Les deux autres valeurs sont mises en oeuvre par le ver Kullan.
12. Winlogon
Une possibilité offerte sur les OS WindowsNT (NT, 2k, XP) :
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon] Userinit = c:\windows\system32\svcpack.exe
Autres valeurs concernées : Notify, Shell, System, VmApplet.
Cette technique est utilisée par le ver Fagot. La clef Winlogon permet d'autres lancements, par exemple, la backdoor Haxdoor.i démarre depuis [...\Winlogon\Notify\debugg].
Pour le démarrage du shell, voir aussi le point 17.
13. ShellServiceObjectDelayLoad
Aussitôt lancé, l'Explorateur exécute les applications enregistrées à cette clef.
Valable pour tous les Windows.
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad]
{Une_clef} = 'Un Nom de Service'
Il faut que [HKEY_CURRENT_USER\Software\Classes\CLSID\{Une_clef}\InProcServer32] existe.
Pour plus de détails, reportez-vous à la description du Trojan.Bookmarker.C.
14. SharedTaskScheduler
Sous tous les Windows, pour démarrer une application en même temps que l'explorateur :
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\SharedTaskScheduler]
{Une_clef} = 'Un Nom de Service'
Il faut que la valeur {Une_clef} soit déclarée dans [HKEY_CLASSES_ROOT\CLSID]
Pour plus de détails, reportez-vous à la description du Trojan.Bookmarker.C.
15. Autorun
Sous Windows NT/2k/XP, un fichier de commandes (.cmd) peut être exécuté au démarrage :
[HKEY_CURRENT_USER\Software\Microsoft\Command Processor] [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor] AutoRun = c:\Startup.cmd
16. Détournement de commandes dans le registre
Chaque clef devrait avoir la valeur "%1" %*. Si elle est changée en serveur.exe "%1" %*, le fichier serveur.exe sera exécuté à chaque fois qu'un exe/pif/com/bat/hta sera lancé. Notez que le principe peut être étendu à d'autres types de fichiers.
A condition que dans [HKEY_CLASSES_ROOT\], les extensions .exe, .com, .bat, .hta, .pif pointent respectivement sur exefile, comfile, batfile, htafile et piffile. Exemple:
[HKEY_CLASSES_ROOT\.exe] (Défaut) = "exefile"
Normalement :
[HKEY_CLASSES_ROOT\exefile\shell\open\command] [HKEY_CLASSES_ROOT\comfile\shell\open\command] [HKEY_CLASSES_ROOT\batfile\shell\open\command] [HKEY_CLASSES_ROOT\htafile\shell\open\command] [HKEY_CLASSES_ROOT\piffile\shell\open\command] [HKEY_LOCAL_MACHINE\Software\CLASSES\batfile\shell\open\command] [HKEY_LOCAL_MACHINE\Software\CLASSES\comfile\shell\open\command] [HKEY_LOCAL_MACHINE\Software\CLASSES\exefile\shell\open\command] [HKEY_LOCAL_MACHINE\Software\CLASSES\htafile\shell\open\command] [HKEY_LOCAL_MACHINE\Software\CLASSES\piffile\shell\open\command] (Pour toutes ces clefs :) (Défaut) = "%1" %*
Cette méthode est appelée « Unknown Starting Method » ou « Méthode de Lancement Inconnue », elle est utilisée par la célèbre backdoor Subseven et le ver I-Worm.Navidad.
17. Démarrage de l'Explorateur Windows
-
Windows 95, 98, ME :
Explorer.exe est lancé par une entrée dans system.ini. Cette entrée elle-même ne contient, originellement, aucun chemin d'accés (voir plus bas pour les conséquences). -
Windows NT/2000/XP :
Le Shell Windows est l'environnement qui est utilisé pour interagir avec Windows. Pendant le démarrage du système, les Windows NT/2k/XP consultent les entrées registre du Shell :[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell]
pour déterminer le nom de l'exécutable qui sera chargé en tant que Shell. Par défaut, cette valeur est 'explorer.exe' (sans chemin d'accès).
Le problème est dû à l'ordre de recherche qui est effectué, lors du démarrage du système, s'il n'y a pas de chemin d'accès spécifié. En effet, par défaut l'entrée du registre ou de system.ini (suivant la version de Windows) nomme le programme de Shell, mais pas son chemin d'accès. Windows lance donc une recherche pour trouver son emplacement. Cette recherche se fait dans cet ordre :
- Répertoire courant,
- Répertoires éventuellement spécifiés dans
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment\Path], - Répertoires éventuellement spécifiés dans
[HKEY_CURRENT_USER\Environment\Path].
Si un troyen s'auto-installe en tant que c:\explorer.exe, aucune autre entrée n'est nécessaire. Si c:\explorer.exe est un fichier endommagé le système sera bloqué.
Affecte toutes les versions non patchées de Windows.
Plus d'info et patch : http://support.microsoft.com/default.aspx?scid=kb;fr;269049
18. Composants ActiveX
Croyez-le ou non, ceci lance Programme.exe avant le Shell et tous les autres programmes présents dans les clefs Run du registre!
[HKEY_LOCAL_MACHINE\Software\Microsoft\Active Setup\Installed Components\{Une_clef}]
StubPath = c:\chemin d'accès\Programme.exe
Exemple: Backdoor.Beasty.
19. Politiques de Groupe (Group Policies)
Cette technique permet de lancer des scripts ou des programmes juste avant ou juste après l'ouverture d'une session sur un Windows NT/2k/XP. Les paramètres peuvent facilement être édités avec GPEdit.msc.
Juste avant l'ouverture d'une session :
[HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\System\Scripts] Startup = C:\winNT\system32\GroupPolicy\Machine\Scripts\Startup
Ici, la clef indique que le dossier C:\winNT\system32\GroupPolicy\Machine\Scripts\Startup contient les scripts qui seront exécutés avant l'ouverture de la session.
Juste après l'ouverture d'une session :
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System\Scripts] Startup = C:\winNT\system32\GroupPolicy\User\Scripts\Logon
Ici, la clef indique que le dossier C:\winNT\system32\GroupPolicy\User\Scripts\Logon contient les scripts qui seront exécutés juste après l'ouverture de la session.
20. Planificateur de tâches
Le planificateur de tâches est souvent activé par défaut dans la configuration initiale de Windows. Il se lance généralement depuis le registre et la clef RunServices (voir le point 8) :
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices] SchedulingAgent = mstask.exe
Les tâches à effectuer sont stockées dans le répertoire Windows sous-répertoire Tasks sous forme de fichiers .job.
21. ICQ
Ces clefs contiennent les applications qui seront exécutées si le logiciel ICQ détecte une connexion internet.
[HKEY_CURRENT_USER\Software\Mirabilis\ICQ\Agent\Apps\test] Path = test.exe Startup = c:\test Parameters = Enable = Yes
Autres techniques automatiques
Cette partie regroupe les techniques de lancement automatiques qui ne peuvent se produire au démarrage de Windows.
22. FileExts
Cette technique permet d'exécuter un programme lorsque l'utilisateur lance un .exe depuis l'Explorateur de fichier. Ne fonctionne que sur les Windows NT.
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.exe] Application = c:\programme.exe
Si depuis l'explorateur on veut lancer un fichier à l'extension .exe, c'est c:\programme.exe qui s'exécutera. Le chemin vers programme.exe doit être spécifié dans la variable d'environnement path. Exemple d'utilisation: la backdoor Easydor.d.