La raison pour laquelle je pose cette question est parce que je suis curieux de savoir s'il peut exister un virus dans l'ordinateur sans que je puisse jamais le savoir. Pour être plus précis, un virus qui n'émet aucun signe d'aucune sorte.
Il existe une classe de logiciels malveillants pouvant se cacher complètement du système d'exploitation, appelée rootkit .
Les rootkits sont utilisés pour dissimuler les preuves d'autres logiciels malveillants au travail et sont très profondément intégrés au système d'exploitation. En raison de leur intégration profonde, ils sont capables de manipuler des listes de processus, des tables de systèmes de fichiers et d'autres structures importantes à la volée.
En manipulant les structures de système de fichiers en mémoire, ils peuvent renvoyer des résultats faux ou trompeurs pour les répertoires, en particulier en ne montrant pas les fichiers liés au programme malveillant principal lui-même. Les fichiers sont là, et le démarrage sur un système d'exploitation non infecté tel qu'un Linux LiveCD affichera les fichiers, car ils doivent être stockés quelque part.
De même, les rootkits peuvent simplement empêcher certains processus d'être signalés à des programmes tels que le gestionnaire de tâches. Le noyau du système d'exploitation est au courant de ces informations, car il a été empêché de le faire savoir au monde extérieur.
Tous les programmes normaux y apparaîtront, mais ...
svchost
(dans la plupart des cas), il est donc difficile d'indiquer à quel service le service s'exécute dans une instance donnée de svchost.Certains programmes sont conçus pour détecter les rootkits. Ils le font en vérifiant par exemple la liste des threads programmés pour l'exécution et la liste des processus du système (un thread n'appartenant à aucun processus est le signe d'un processus caché), ou la liste des fichiers vus au plus haut niveau, et en le comparant aux fichiers qu'il lit manuellement à partir de la partition de disque.
Néanmoins, une fois que vous êtes infecté, il est possible qu'un virus dissimule si bien sa présence qu'il est presque impossible à détecter. Ceux-ci sont généralement appelés APT (menace persistante avancée).
Le système d'exploitation a un composant appelé noyau. Une des responsabilités (nombreuses) du noyau est de gérer la mémoire système (physique et virtuelle).
Pour ce faire, le noyau divise la mémoire disponible en deux régions distinctes, appelées mode utilisateur et mode noyau. Le noyau et les pilotes partagent la mémoire en mode noyau, et les programmes utilisateur et les composants système moins critiques résident dans la région mémoire en mode utilisateur.
Les processus en mode utilisateur ne peuvent généralement pas communiquer avec ceux en mode noyau, sauf par le biais de canaux spécialement désignés et contrôlés.
Pour être complet, il convient de mentionner que les processus exécutés en mode utilisateur sont également isolés les uns des autres, mais peuvent communiquer plus librement les uns avec les autres à l'aide des fonctions fournies par le système d'exploitation, à condition que les programmes soient conçus pour le faire.
Le noyau offre la possibilité de lancer des processus en mode utilisateur. Lorsqu'un processus est créé, il est ajouté à une liste interne de processus existants. Lorsqu'un programme tel que le gestionnaire de tâches demande une liste de processus, il reçoit un sous-ensemble des informations de cette liste, filtré par autorisations par utilisateur.
L'un des moyens par lesquels un logiciel malveillant, tel qu'un rootkit, cache son existence est de se supprimer directement de ce tableau. Cela fait, il peut toujours s'exécuter, mais n'apparaîtra plus dans une liste de processus obtenue par des moyens normaux.
Étant donné que ces processus existent toujours et s’exécutent, ils pourraient être trouvés en inspectant d’autres structures de données du noyau, telles que les tables de descripteurs, qui contiennent des informations sur les ressources ouvertes par un processus (par exemple, des fichiers), ou en examinant les allocations de mémoire à partir desquelles il est plus important difficile à cacher sans entraver la capacité du logiciel à fonctionner.
Pilotes en mode noyau utilisés pour de nombreuses choses, y compris pour interagir avec des périphériques matériels physiques. Ils s'exécutent sous le contrôle du noyau si nécessaire, mais comme ils ne sont pas un processus en mode utilisateur, ils n'apparaissent pas dans la table des processus. et n'apparaîtra donc pas dans le Gestionnaire des tâches ni dans d'autres outils exclusivement liés aux processus.
Pouvoir exécuter du code en mode noyau est une étape importante pour pouvoir cacher efficacement l’existence d’un code en cours d’exécution. Dans des circonstances normales, Windows exige que le code en mode noyau soit signé pour pouvoir fonctionner. Les logiciels malveillants doivent donc utiliser des exploits du système d'exploitation, d'autres logiciels ou même de l'ingénierie sociale pour arriver ici, mais une fois que le code s'exécute en mode noyau, le masquage devient plus facile.
En résumé, il est possible de cacher la preuve de l’existence d’un processus, il y aura probablement toujours une indication de l’existence du processus, car il faudra généralement toujours utiliser une forme de ressource pour faire tout ce pour quoi il a été conçu. cette détection dépend du malware en question.
Les virus sont assez sophistiqués de nos jours. Il peut être un virus sur votre ordinateur mais ne pas apparaître dans le Gestionnaire des tâches . Il est possible que le gestionnaire de tâches (et d'autres parties du système d'exploitation) soit compromis, masquant ainsi le virus. Par exemple, un rootkit.
Si vous envisagez de vous fier au Gestionnaire des tâches pour rechercher les virus, vous devez vous arrêter maintenant. Installez un antivirus, et même un antivirus ne parvient parfois pas à détecter un virus sur votre PC.
Il existe un moyen plus simple de "cacher un virus" en dehors de ceux déjà expliqués dans d'autres réponses:
Un DLL compromis (bibliothèque liée dynamiquement)
Un grand nombre de programmes - presque tous ceux qui ne le sont pas - ont besoin d'une ou de plusieurs DLL pour s'exécuter. Certains appartiennent au système d’exploitation proprement dit (par exemple, hal.dll, qui résume l’accès matériel à Windows), d’autres ne sont utilisés que par un programme, qui se décompose en plusieurs petits morceaux plugins, etc.) Votre virus ne s'exécute pas tout le temps comme un processus ou un service ordinaire, mais votre virus sera très difficile à trouver, car il ressemblera à un programme ou à un composant de programme totalement innocent.
Lectures supplémentaires: http://msitpros.com/?p=2012
Et il y a une chose très séduisante dans ce type de virus: il existe une multitude de sites Web proposant un téléchargement gratuit (sans paiement) de dll qui, pour telle ou telle raison, peuvent disparaître sur votre ordinateur. Etant donné que la possibilité de comparer les sommes de contrôle de l'original et du nouveau fichier .dll est très limitée et que presque personne ne s'en soucie, les dll-virus peuvent entrer et rester dans le système pendant longtemps sans être remarqués (à moins, bien sûr, qu'un programme antivirus les détecte et que l'utilisateur accepte la suppression - vous voyez déjà le modèle).
De la question que je suppose que nous parlons de Windows ici, mais cette technique peut très bien s’appliquer également à d’autres systèmes d’exploitation.
TL; DR: Le Gestionnaire des tâches de Windows est assez limité dans ce qu'il peut faire, et il * ne le fera pas jamais montre tous les processus en cours d'exécution sur votre système. Vous voulez une preuve? Comptez (approximativement) la quantité de RAM que les processus affichés dans le Gestionnaire des tâches utilisent et comparez-la à l'utilisation de RAM du système; vous devez disposer d'au moins 100 Mo RAM, et parfois jusqu'à 1 Go, en fonction de l'utilisation du système. Les cartes graphiques peuvent également utiliser un peu de mémoire du RAM avec sa propre mémoire vive GDDR. *
Pour approfondir la réponse de Pavel Petman, je pourrais ajouter que de nombreux moteurs de triche sophistiqués pour les jeux reposent sur l’injection de code dans des DLL de jeu qui activent leur triche.
Ce type de compromis est assez difficile à détecter et la même technique peut être appliquée à cette question. Si, par exemple, un virus souhaite rester non détecté, il peut se présenter comme une mise à jour Windows du type qui s’extrait lui-même dans les répertoires système, le virus pourrait alors écraser un fichier système critique. La plupart des programmes antivirus ne détectent pas ce type de virus, ce qui signifie que le virus peut continuer en injectant le code du virus dans les DLL Windows critiques (ainsi que les fichiers .ex).
Lorsqu'un de mes clients raconte un comportement inhabituel, j'exécute toujours Process Explorer (téléchargement de Microsoft) pour détecter tout virus en cours d'exécution. Process Explorer peut vous dire exactement quels processus sont en cours d'exécution (même ceux qui ne sont pas dans le gestionnaire de tâches), ainsi que les modules DLL qu'ils utilisent.