L’original de cet article est publié par Txon sur
Open-Files.
IceSword
a été développé par un chinois dont le pseudo est « pjf_ »
de la Xfocus Team.
IceSword
est un des deux seuls IDS détecteurs de « rootkits »
et autres « services furtifs » qui traînent
dans un PC qui ait été considéré « difficile à contourner »
par « Hacker Defender » (maintenant passé dans
la clandestinité). C’est une grande référence, surtout
pour un logiciel gratuit. Il utiliserait un algorithme
semblable à celui de Blacklight (inclus dans les produits
payants de F-Secure).
C’est
un simple programme qui utilise un service en kernel mode
(mode noyau) (’’IsPubDrv.sys’’).
Il peut être considéré comme un gestionnaire de tâches
évolué ayant la capacité de lister les fichiers cachés.
IceSword affiche les processus, les services, les ports
ouverts ou en attente, les modules qui fonctionnent en
mode noyau, les entrées du SSDT (tableau du descripteur
de services du système), les plugins BHO, les messages
de « crochetage ». C’est aussi un petit
outil pour lister les clefs du Registre de Windows (« regedit »)
et les disques et dossiers du PC (« explorer »).
IceSword
se base sur les APIs originales et non modifiées de ’’advapi32.dll’’.
Si un rootkit cache son service du Windows Service Controller
(’’services.exe’’) par « crochetage »
d’APIs spécifiques (EnumServiceStatus, EnumServiceGroup
etc..), IceSword détecte la différence et la considère
suspecte. Cet outil est facile à employer et n’exige
pas de connaissances avancées.
Il
demeure cependant peu compréhensible des parfaits débutants.
Ne vous attendez pas à l’interface agréable d’un
outil bourré de petits renseignements qui simplifient
la vie des néophytes ou des paresseux comme vous en avez
trouvé dans SEEm. C’est un outil efficace, mais
assez rustique. IceSword ne requiert pas d’installation,
passe inaperçu de Jetico, Spybot (tea timer) et de Ad-Aware
(Ad-watch). Suivant les activités qu’il doit analyser,
il peut occuper entre moins de 4Mo et environ 12Mo de
mémoire.
Liste
des processus en activité avec des renseignements comme
l’identification du bloc ’’EPROCESS’’
(structure de données en mode noyau contenant des informations
qui peuvent permettre de cacher un processus) et l’utilisation
de la mémoire dynamique et maximale. Un « clic droit »
sur un des processus provoque l’ouverture d’une
fenêtre d’information où se trouve la possibilité
d’interrompre l’intrus ...Terminate Process.
Liste
des applications qui ouvrent des ports du PC avec indication
des adresses IP (locale et distante), des ports utilisés,
de l’identifiant PID et du statut de chaque connexion.
Liste
des fonctions logicielles du noyau (système ou gestion
de périphérique) chargées dynamiquement en mémoire lorsqu’un
programme requiert leurs services. Les rootkits en mode
noyau « crochètent » le système, apportent des
modifications au kernel. L’accès à celui-ci est
généralement interdit aux utilisateurs et requiert des
autorisations spéciales. Le « crochetage » du
système est peut-être la méthode la plus fiable et la
plus robuste parce qu’il se situe au niveau le plus
bas.
La
section Kernel Module affiche les fichiers actuellement
chargés en mémoire noyau qui va offrir différents services :
accès matériel, noyau Windows ... Si un rootkit agit en
mode noyau, il aura forcément chargé son driver et sera
visible dans cette section.
Liste
des applications au démarrage (équivalent de « fichier
et dossier de démarrage » et de « clés communes »
de SEEm. Les rootkits y installent souvent une procédure
de lancement automatique au démarrage du système, surtout
quand ils ne sont pas des rootkits en « mode virtuel ».
On
peut charger dynamiquement un driver ’’.sys’’
par un exécutable ce qui implique qu’il faut lancer
cet exécutable. Après, le driver peut être chargé automatiquement
par la mise en place d’un service driver ou par
un service normal qui chargera l’exécutable ce qui
nécessite de regarder les services démarrés automatiquement.
Liste
des modules (fonctions logicielles système ou de gestion
de périphérique) présents dans le PC. IceSword reprend
les descriptions incluse dans l’aide de Microsoft
incorporée au système ; elles apparaissent donc dans
la langue d’installation. Ainsi, un doute éventuel
est plus facilement levé en ce qui concerne ceux qui proviennent
effectivement de Windows.
Un
« clic droit » sur l’un des services permet
de le démarrer (ou au contraire, de l’arrêter),
de le mettre en pause, de le neutraliser etc.
(Service
Provider Interface). Liste d’Interfaces logicielles
(pilotes) de périphériques développées selon le standard
de programmation ’WOSA’ pour permettre un
accès commun aux services.
(Browser
Helper Object - pour Internet Explorer ...). Liste des
modules « dll » qui fournissent une fonctionnalité
supplémentaire.
Exemple
... le plugin qui permet à des utilisateurs d’Internet
Explorer de lire les dossiers ’’.pdf’’
d’Adobe Acrobat est un BHO. L’API BHO est
exposé au « crochetage » en vue de la prise
de contrôle de la navigation.
(System
Service Descriptor Table) Tableau utilisé par Windows
pour diriger des appels de système vers un traitement
approprié : table d’adressage des APIs.
Le
« crochetage » du tableau de descripteur de
service du système (SSDT) en vue de sa modification est
une autre technique fréquemment utilisée. En modifiant
cette table, le rootkit peut réorienter l’exécution
vers son code au lieu de l’appel original du système.
Liste
des processus qui utilisent certains fonctions API de
Windows comme la sollicitation des périphériques d’entrée
de données (clavier, souris etc.) et autres. Le processus
système ’’USER32.DLL]’’ met en
place une fonction d’interception des activités.
Exemples ...
“WH_GETMESSAGE”
... tous les événements passent par ce filtre, il contrôle
tout type de message envoyé à une application.
“WH_MSGFILTER”
... capte les événements générés à la suite d’une
saisie dans une boite de dialogue, une zone de message,
un menu ou une barre de défilement.
“WH_KEYBOARD”
... capte les événements déclenchés par la frappe des
touches du clavier.
Le
« crochetage » de ces activités peut, par exemple,
permettre à un rootkit de « sniffer » discrètement
les saisies confidentielles etc. Attention cependant ...
SEEM « hook » les événements clavier seulement
pour lui-même afin de gérer les raccourcis clavier. Donc
on le voit apparaître dans cette section.
Liste
générale des « évènements » rapportés par les
différentes applications installées sur le PC, applications
Microsoft ou non, et liés au démarrage (ou à la fermeture)
et aux activités des différents processus en fonction.
Cette liste présente les différents identificateurs PID
(Process Identifier) et TID (Thread Identifier). Tous
les modules d’un même processus ont le même PID
mais ont leur propre identificateur TID.

Un
thread à son propre espace mémoire et est donc indépendant
d’autres thread. Un processus peut lancer deux threads
(ou plus) qui vont réaliser deux traitements différents
en même temp. Le deuxième thread ne sera pas obligé d’attendre
que le premier se termine. C’est ce que l’on
appelle du multi-thread. La technique d’injection
de code, consiste la plupart du temps, à accéder à la
mémoire d’un processus, d’y injecter du code,
et d’exécuter ce code (par ce processus) dans un
nouveau thread. Malgré cela, il n’est pas évident
de savoir si tel ou tel thread est sain. (Excepté si l’on
a développé le programme)
A
l’ouverture d’IceSword, à partir de la v1.16,
contrôle général de l’existant sur le PC (processus
cachés, drivers modifiés) ...
Global
Descriptor Table (GDT) & Interrupt Descriptor Table
(IDT) , sont des tables spécifiques aux processeurs de
type x86 gérées par le NTLDR. Le GDT est employé pour
décrire les segments de mémoire qui sont employés par
le noyau. La modification des clefs GTD peut permettre
à des applications malicieuses qui n’ont pas les
privilèges nécessaires de modifier cependant la mémoire
du noyau. Dans le cadre d’une utilisation malveillante
de l’IDT, il est possible d’intercepter les
« interruptions » IRQ créées par certains matériels
ou logiciels avant qu’elles soient transmises au
noyau, afin de cacher les actions de ces matériels et
logiciels. Pour activer le contrôle de ces tables il faut
cliquer sur le bouton GDT/IDT.
Créez
un petit fichier vide (par exemple ’’Log-IS.log’’
) et indiquez-en le chemin dans la fenêtre qui s’ouvre
en cliquant sur le bouton Log. IceSword y enregistrera
les processus en fonction et les anomalies afin que vous
puissiez en garder la trace et étudier les problèmes éventuels
à tête reposée.
En
standard, l’option "Don’t display ’’Deleting’’
state process" est activée. En la désactivant on obtient
un liste de Process plus étoffée où figurent des processus
signalés en rouge :
Exemples
...
“ssmypics.scr” :
Microsoft slide show screen saver - dont l’utilité
est incertaine, “savedump.exe” : processus
de NT, memory dump : qui écrit automatiquement l’ensemble
de la mémoire dans le “pagefile.sys” lors
d’un crash BSOD.
Au
reboot, Windows copie l’ensemble du “pagefile.sys”
dans le “memory.dmp”.
Certains
le considèrent comme important pour la stabilité du système
et qu’il ne doit donc pas être supprimé. D’autres
pensent au contraire qu’il n’est pas essentiel
et peut être neutralisé pour booster le système.
Renseignez-vous
avant d’agir (Google est votre ami ...)
Notez
que IceSword fonctionne très bien avec ses paramètres
standards.
IceSword
permet la création de règles pour les processus et les
« threads ». Il suffit d’indiquer les
références (PID compris) de ce qui doit être autorisé
ou, au contraire, interdit.
Exemple :
Une
règle vas définir qu’aucun processus portant le
nom de ‘hxdef100.exe’ ne pourra s’exécuter.
Le résultat attendu est concluant :
Filtrage
sur le processus parent. Dans cet exemple, on refuse que
le processus portant le PID 1516 ne puisse lancer de programme.
Le résultat est également concluant, ainsi quelque soit
le programme lancé, un message d’erreur apparait :
Ces
règles restent pour le moment assez sommaires. Il n’est
pas possible par exemple de gérer les multiples caractères
avec ‘*’. L’interface de gestion reste
également basique et s’avère peu pratique à l’utilisation.
Ce
système de filtre est tout de même peu concluant puisque
un simple changement de nom permet à un programme de se
lancer. Le filtrage sur les PID ou TID reste compliqué
à mettre en place puisque ces identifiants sont fournis
aléatoirement par le système.
Si
l’on connaît exactement la règle à définir, en sachant
que les critères ne seront pas variables, cela peut être
intéressant.
Pour
détecter les traces d’un processus douteux, consultez
en priorité Process et Win32 services. Si des programmes
exécutables où des services sont cachés, ils seront affichés
en rouge.
Ils
peuvent également avoir laissé des traces et être repérés
dans d’autres modules d’IceSword ... Kernel
Module, Startup, SSDT etc.
Attention
cependant, tous les fichiers cachés ne sont pas des rootkits
malsains. Dans l’exemple ci-dessous, il s’agit
de l’utilitaire PrevX (Prevx Home Intrusion Prevention)
dont ’’pxfsf.sys’’ fait partie.
Plus haut, dans la liste des modules de IceSword - image
de SSDT - ’’bfcdi.sys’’ est un
service du firewall Jetico que SEEm sait très bien voir
aussi et qui ne doit pas être interrompu.
Utilisez
Google (ou autre moteur de recherche) pour trouver des
explications sur les fichiers douteux afin d’agir
en toute connaissance de cause.
IceSword
a la capacité d’interrompre le fonctionnement d’un
rootkit voir Process et Win32 services ci-dessus rendant
ainsi « visible » par des outils plus ordinaires
les processus et fichiers qu’il cache.
Il
permet aussi d’accéder de façon rustique :
au
Registre de Windows pour enlever les entrées non désirées,
aux
fichiers du PC pour éradiquer définitivement les fichiers
parasites (des dossiers comme "Prefetch" par exemple)

Une
fois que le rootkit est devenu visible, vous pouvez aussi
utiliser des outils plus confortables comme par exemple
Seem
pour éliminer le processus du « démarrage »
de Windows, un outil de nettoyage du registre etc.
Il
demeure cependant plus sûr de disposer d’un DVD
de sauvegarde « propre » du système et des applications
installées et de repartir de cette base saine après un
formatage.
L’original
de cet article est publié par Txon sur Open-Files.