lundi, novembre 27, 2006

Le cauchemard du svchost.exe résolu par l'exécutable tlist du débogueur !

Lorsqu'un administrateur système appelle notre équipe IR pour rendre compte du comportement suspect d'une machine MS Windows, nous réalisons avec lui l'étape Réponse Initiale de notre procédure de réponse aux incidents.

En quelques mots, cette étape consiste à faire recueillir par l'administrateur les premiers éléments de preuve sur la machine suspecte toujours en fonctionnement. Lors de ce recueil, les administrateurs nous ont souvent fait part de leur inquiétude vis à vis des processus visibles dans le Gestionnaire des Tâches Windows, notamment, sur le nombre inquiétant d'instances du processus svchost.exe.

En effet, plusieurs codes malveillants - dont les chevaux de Troie toujours actifs : Agobot et Backdoor.XTS - adorent se camoufler sous ce nom de fichier. Le fait est que les systèmes MS Windows possèdent toujours un certain nombre de ces processus. J'en ai compté deux sur un système WIN2K, six dans un WINXP et même sept dans un WIN2K3 !

En parcourant la prose de Microsoft rapidement, on peut lire que svchost peut être considéré comme un super processus générique qui lance des services à partir de librairies liées de manière dynamique (DLL). Chaque instance de svchost fait donc tourner un ou plusieurs services. Il nous reste à pouvoir examiner ces services !

Lorsqu'il est lancé, svchost lit la clé de registre suivante pour lancer les groupes de services qu'il doit lancer (une ligne par groupe):
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Svchost

Sur un système vivant (c'est le cas dans l'étape Réponse Initiale), on peut afficher ces services à l'aide de la commande :
- tlist -s
Il ne s'agit pas de l'exécutable tlist.exe fourni avec les Ressources Kits, mais de celui fourni avec les débogueurs Noyau Microsoft. Nous avons tout d'abord rajouté cet exécutable dans un répertoire nommé add On à la racine du cédérom HELIX. Les fichiers contenus dans un tel répertoire sont alors visibles par les deux parties d'HELIX (Linux et Windows).

Par la suite, les exécutables intéressants du débogueur Noyau Microsoft, dont tlist, ont été intégrés nativement dans HELIX (de mémoire, dans le répertoire /IR/windbg/). Ce cédérom est à la base de notre procédure de Réponse Initiale...

Pour détecter rapidement les instances suspectes de svchost, nous utilisons le même exécutable tlist.exe du débogueur Microsoft. Normalement, svchost.exe doit être lancé par le processus services.exe. Pour afficher l'arbre d'affiliation des processus en cours, on utilise le drapeau -t de tlist comme dans l'exemple suivant :
Une instance suspecte de svchost.exe aura généralement pour père le processus cmd.exe.

Le plus sympa avec tlist.exe est que son drapeau -c permet d'afficher la ligne de commande qui a lancé chacun des processus en cours :
Si, comme ici, notre administrateur trouve un svchost.exe lancé par une ligne du type : C:\svchost.exe -L -p 21 -e cmd.exe, nous avons soulevé un nouveau lièvre !

4 commentaires:

  1. Pour rebondir sur le commentaire de tho8eilae5Cu sur l'article précédent (ça doit être son mot de passe, c'est pas possible un nom pareil ;-)), ProcessExplorer est un outil très sympa et très pédago pour explorer les process !

    Mais, en fait, ce que l'on cherche dans la RI, et surtout l'étape initiale, ce sont des exécutables en ligne de commandes qui fournissent leur résultat vers la sortie standard. Comme ça, on peut facilement les scripter (quand l'administrateur est vraiment un pousse-bouton ;-)) et on peut surtout rediriger le résultat vers un serveur cryptcat sur la machine de l'opérateur IR distant.

    RépondreSupprimer
  2. C4rtman, à quelle adresse peut-on t'écrire ?

    Merci.

    RépondreSupprimer
  3. Et bien, tu peux toujours m'envoyer un commentaire avec une adresse à laquelle je puisse t'envoyer mon adresse (je modère les commentaires, donc je ne publierai pas non plus ton adresse...).

    Le fait est que je ne désire pas mettre mon adresse perso en pâture aux différents bots qui attendent que ça pour me polluer la vie.

    De plus, je tiens en ce moment à conserver un semblant d'anonymat.

    RépondreSupprimer
  4. Bon, j'ai fait un effort. J'ai maintenant un profil Technorati.

    RépondreSupprimer