Comment les malware se cachent en s'installant en service


Lorsque vous supprimez un malware d'un ordinateur, vous avez souvent l'habitude de regarder les entrées via un log HijackThis. Cependant, de plus en plus de spywares, s'installent en services, ce qui signifie que ces entrées ne sont pas visibles à travers les logs d'HijackThis. C'est le cas par exemple des malware Ssearch.biz et Home Search Assistant.

Lorsque vous nettoyez une machine, vous avez l'habitude de regarder les entrées de la "startup list". Cependant, cela n'est pas suffisant. En effet, certains malware s'installent en service et donc la machine est toujours infectée. Un service est un programme qui démarra automatiquement au démarrage de Windows NT/XP/2000/2003 en fond, de plus, ils n'apparaissent pas dans le gestionnaire de tâches.

Les Services

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

Lister et analyser les services

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:

Getservices.zip

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
Home Search Assistant Example

Les informations importantes sont :

  1. Le nom du service qui apparaîtra dans le gestionnaire du Service est Remote Procedure Call (RPC) Helper
  2. Le nom du service dans la base de registre est O?’ŽrtñåȲ$i
  3. Il est démarré automatiquement avec Windows
  4. Le fichier qui démarre le service est C:\WINDOWS\system32\d3xi.exe

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
SSearch.biz Example

L'hijacker SSearch.biz  utilise un service qui ne fait pas parti de l'infection. Les informations importantes sont :

  1. Le nom du service qui apparaîtra dans le gestionnaire du Service est Plug and Play svc service
  2. Le nom du service dans la base de registre est pnpsvc
  3. Il est démarré automatiquement avec Windows
  4. Le fichier qui démarre le service est C:\WINNT\system32\svchost.exe -k netsvcs

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.

Supprimer un service

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.

Liens

Cet article a été écrit à partir de celui de bleepingcomputer.com (anglais)

Retour à la page d'accueil