Un logiciel malveillant peut-il se cacher, de sorte que son activité n'apparaît pas dans la liste des processus du Gestionnaire des tâches? Peut-il se cacher de sorte que lorsque quelqu'un contrôle votre ordinateur, même si vous ouvrez le Gestionnaire des tâches, vous ne verrez aucune activité suspecte?
Si oui, comment peut-il faire cela? Quelles techniques peut-on utiliser pour se cacher de cette façon?
Oui. Il existe plusieurs façons:
AppInit_DLLs
) ou injecter du code dans la mémoire de processus et démarrer un thread (via VirtualAllocEx
/WriteProcessMemory
/CreateRemoteThread
).Process32First
/Process32Next
fonctionne dans chaque processus (y compris le gestionnaire de tâches) pour "ignorer" votre processus lorsque l'énumération est effectuée.CreateToolhelp32Snapshot
pour que la mémoire de la section mappée (voir ici pour le fonctionnement des instantanés) soit modifiée à l'avance, de sorte que Process32First
/Process32Next
finissent par lire à partir de fausses données.ntdll.dll!NtQuerySystemInformation
et, si SystemProcessInformation
est passé, corrigez les résultats pour ignorer votre processus. Il s'agit d'un crochet de niveau inférieur aux appels ci-dessus.SystemProcessInformation
. Je ne connais pas le vrai nom de ceci dans Windows (ce n'est pas documenté) mais essentiellement il y a une table de gestionnaires que NtQuerySystemInformation
recherche à cet effet, et vous n'avez qu'à accrocher le bon. Voici l'implémentation ReactOS du gestionnaire réel. En cela, vous ne feriez que jouer avec les structures retournées pour que votre processus ne soit pas affiché.EPROCESS
en mémoire afin que votre processus soit entièrement caché au noyau. Le noyau maintient une liste de structures reliées de façon circulaire qui représentent tous les processus en cours, avec les champs FLink
et BLink
comme pointeurs avant et arrière respectivement. En manipulant ces pointeurs pour sauter par-dessus votre processus, puis en manipulant les pointeurs de votre processus pour revenir à lui-même, le noyau sautera votre processus pendant l'énumération. Il s'agit d'une technique de rootkit courante.Certainement - il existe plusieurs façons de se cacher du gestionnaire de tâches. Le plus simple est de se cacher à la vue du processus nommé quelque chose d'inoffensif. Une autre option consiste à masquer en tant que sous-processus qui n'apparaît alors pas.
Il pourrait également être installé en tant que service, toujours avec un nom innocent. Il apparaîtrait dans la liste des services mais ne serait pas affiché séparément dans la liste des tâches. Il y aura, j'en suis sûr, d'autres méthodes plus complexes qu'une recherche Google afficherait.