Un service est chargé au démarrage de Windows par le processus svchost.exe, il peut être aussi lancé directement par Windows. Si un service est démarré directement par Windows, il se trouve dans la clef suivante de la base de registre :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\servicename
Quand un service est lancé par svchost.exe, il est alors placé dans un groupe de service particulier qui est ensuite lancé par svchost.exe. Une liste de ces groupes et services peut être trouvé dans la base de registre à la clef suivante :
HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Svchost
Dans cette clef, vous trouvez plusieurs groupes (netsvcs, LocalServices, etc) qui contiennent plusieurs services qui sont lancés lorsque svchost.exe charge le groupe. Ces groupes sont chargés par la commande :
svchost.exe -k netsvcs
Cela lance tous les services trouvés dans le groupe netsvcs et apparaît avec un seul service dans le gestionnaire de tâches. Ce qui signifie qu'à chaque fois qu'un nouveau groupé est chargé par svchost.exe, vous trouvez un nouveau processus svchost.exe dans le gestionnaire de tâches. C'est pour cette raison, que vous avez plusieurs processus svchost.exe dans le gestionnaire de tâches. Si vous utilisez Windows XP, vous pouvez voir les services de chaque processus svchost.exe avec la commande : tasklist /SVC
Lorsqu'un service est lancé de cette manière, le fichier du service peut-être trouvé à la clef :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\servicename\Parameters\ServiceDll
Un simple fichier batch utilise le programme SysInternals PSSERVICE pour avoir la liste des services dans le bloc-note.
Ce fichier peut être trouvé ici:
Pour utiliser ce script, Dézipé le sur le disque C:, vous trouverez un dossier c:\getservice. Dans ce dossier, vous trouverez un fichier getservice.bat et psservice.exe. Double-cliquez sur getservice.bat qui crééra la liste des services installés sur l'ordinateur dans le bloc-note. Note: Vous devez avoir les privilèges administrateurs pour pouvoir utiliser ce script sinon cela ne fonctionnera pas où vous n'aurez que des informations partielles.
La sortie de ce script contient les informations des services installés sur l'ordinateur. Les informations importantes sont de la forme :
| SERVICE_NAME | Ceci est le nom du service comme il est stocké dans la base de registre. |
| BINARY_PATH_NAME | Ceci est le nom du fichier utilisé par le service. |
| DISPLAY_NAME | Ceci est le nom du service tel qu'il apparaît dans services.msc (panneau de configuration/outils d'administrations/services) |
| START_TYPE | Ceci vous informe si le service est désactivé, démarré manuellement ou automatiquement. |
Voici ci-dessous un exemple d'une entrée pour les
différentes infections et comment les informations doivent
être interprétées :
| SERVICE_NAME:
O?’ŽrtñåȲ$Ó (null) TYPE : 20 WIN32_SHARE_PROCESS START_TYPE : 2 AUTO_START ERROR_CONTROL : 0 IGNORE BINARY_PATH_NAME : C:\WINDOWS\system32\d3xi.exe /s LOAD_ORDER_GROUP : TAG : 0 DISPLAY_NAME : Remote Procedure Call (RPC) Helper DEPENDENCIES : SERVICE_START_NAME: LocalSystem |
|
|
Les informations importantes sont :
Armé de ces informations, nous savons que le service est stocké dans la base de registre et que le service est utilisé par Home Search Assistant infection.
Voici un autre exemple avec Ssearch.biz hijacker, qui est un
plus compliqué pour connaître le fichier qui cause
l'infection :
| SERVICE_NAME: pnpsvc Provides plug and play svc devices support TYPE : 120 WIN32_SHARE_PROCESS INTERACTIVE_PROCESS START_TYPE : 2 AUTO_START ERROR_CONTROL : 1 NORMAL BINARY_PATH_NAME : C:\WINNT\system32\svchost.exe -k netsvcs LOAD_ORDER_GROUP : TAG : 0 DISPLAY_NAME : Plug and Play svc service DEPENDENCIES : SERVICE_START_NAME: LocalSystem |
|
|
L'hijacker
SSearch.biz utilise un service qui ne fait pas parti de
l'infection. Les informations importantes sont : Ces informations sont inutiles sans fouillées dans
la base de
registre. Nous savons que le fichier qui démarre le service
est svchost.exe,
qui est
un programme légitime puisqu'il fait partie
intégrante de
Windows, donc nous ne pouvons pas le supprimer. Pour
connaître le
fichier qui appartient à SSearch.biz nous
devons donc utiliser les informations de la partie
précédente. Nous
savons que le service fait parti du groupe netsvcs.
Ce qui signifie que lorsque svchost charge ce groupe, qui contient
plusieurs services. Il charge aussi le fichier associé
à
ce service. Pour trouver le fichier, nous devons donc regarder la clef
: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pnpsvc\Parameters\\ServiceDll
La valeur de la clef ServiceDLL est le fichier que nous cherchons. Dans le partie suivante, nous allors voir comment supprimer cette entrée.
Les Services sont stockés dans la base de registre dans la section ControlSet qui est localisé dans :
HKEY_LOCAL_MACHINE\SYSTEM
La clef ControlSet est la copie complète
de la
configuration des services, drivers Windows et autres fichiers
importants. Il y a toujours au
minimum deux ControlSets (par
exemple ControlSet001 and ControlSet002) et un
CurrentControlSet.
Un des ControlSet est utilisé lorsque vous
démarrez avec
l'option normal et l'autre lorsque vous choisissez de
démarrer
avec l'option "dernière bonne configuration connue". Le
dernier,
CurrentControlSet est un mirroir complet du ControlSet que vous avez
utilisez pour démarrer. Ce qui signifie que si vous modifiez
CurrentControlSet vous modifiez ControlSet avec et inversement.
Si vous voulez savoir quel ControlSet vous utilisez, vous devez regarder la clef :
HKEY_LOCAL_MACHINE\SYSTEM\Select
Ces clefs donnent 'importantes informations pour savoir quel ControlSet est utilisé au dernier démarrage, celui utilisé par défaut, et celui qui est utilisé pour la dernière bonne configuration connue. Ces clefs contiennent les valeurs :
| Current | Contient le numéro du ControlSet qui est utilisé et vers lequel CurrentControlSet pointe. |
| Default | Contient le numéro du ControlSet que Windows utilise lorsqu'il démarre avec la configuration par défaut. |
| Failed | indique le ControlSet qui n'a pas réussi à démarrer au dernier démarrage. Si l'option est à 0, c'est qu'aucun démarrage n'a pas réussi. |
| LastKnownGood | Contient le numéro du ControlSet que Windows utilisera pour un démarrage "dernière bonne configuration connue". |
Si vous nous voulons supprimer un service à partir de la base de registre, nous n'avons jusqu'à le supprimer de chaque ControlSets. Par exemple, si nous voulons supprimer le service de l'hijacker SSearch de l'ordinateur, nous devons supprimer du registre les clefs :
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet1\Services\pnpsvc\
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet2\Services\pnpsvc\
Dès que la machine sera redémaré, le service n'apparaîtra plus dans la liste des services du gestionnaire de service.
Le malware s'installe aussi dans ces clefs:HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Enum\Root
avec des sous-clef nommées LEGACY_svcname. Ces entrées LEGACY_svcname doivent aussi être supprimées, pour cela vous devez changer les permissions (edition/permissions).
Avec ces connaissances, vous pouvez maintenant supprimer plus facilement des malwares.