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 en a connaissance, comme il a besoin de le faire pour pouvoir les programmer, il vient d’être empêché de le faire savoir au monde extérieur.
Je suis curieux, comment réussissent-ils cet exploit? Cela semble être quelque chose que Windows ne devrait pas autoriser en premier lieu. Je veux dire, même les "processus d'
affichage
2
@Raestloz: Ils réussissent l'exploit en obtenant un accès root, puis en réécrivant Windows pour supprimer les bits qui l'interdisent. J'ai entendu dire que certains d'entre eux le font en "démarrant" dans le rootkit en tant que système d'exploitation, en modifiant Windows, puis ils exécutent Windows. Par conséquent, ni l'utilisateur ni Windows n'ont la moindre idée que quelque chose est inhabituel.
Mooing Duck
3
bien dang, peut-être que quelqu'un devrait inventer un anti-virus fonctionnant sur le BIOS lol
Raestloz
1
@zyboxenterprises Les mises à jour Windows réelles sont signées et ne peuvent pas être falsifiées, mais vous pouvez falsifier simplement la boîte de dialogue de demande de redémarrage, inciter l'utilisateur à redémarrer autrement, forcer un redémarrage ( shutdown -r -t 0aucun privilège requis) ou simplement attendre le redémarrage de l'utilisateur.
gronostaj
4
@zyboxenterprises Peut-être, peut-être pas;) Flame a exploité Windows Update à ses propres fins en forgeant un certificat, mais cette vulnérabilité a déjà été corrigée. Il n'y a aucun exploit WU connu, mais cela ne signifie pas qu'il n'en existe aucun. Celui utilisé par Flame n'était pas connu auparavant. (voir attaque de 0 jour
gronostaj
16
Tous les programmes normaux y apparaîtront, mais ...
sans compte administrateur, vous ne pourrez voir que votre propre processus (les comptes administrateurs peuvent choisir d'afficher les processus de tout le monde)
Les rootkits essaieront de cacher son existence en cachant son processus de la liste, compromettant le gestionnaire de tâches (pour qu'il ne le montre pas), se cachant dans un autre espace d'adressage de processus ...
les services s'exécutent en tant que threads dans un svchostprocessus (dans la plupart des cas), il est donc difficile de savoir à quel service le service s'exécute sous 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 à un niveau élevé, 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. Celles-ci sont généralement appelées APT (Advanced Advanced Threat ).
Sysinternals Process Explorer a partiellement invalidé certains de ces points . Les utilisateurs limités peuvent voir les noms de fichiers des processus exécutés par un autre utilisateur et les info-bulles de svchosts listent ce qu'ils hébergent.
Kirb
Vouliez-vous dire «menace» ou voulez-vous dire «fil»? Cela fonctionne réellement là;)
Konerak
Comment un détecteur de rootkit énumère-t-il les threads ou les processus? Si c'est un moyen typique / WinAPI, un rootkit ne peut-il pas manipuler l'énumération et le détecteur de rootkit ne le remarquera pas?
Ray
1
@ DebugErr, ils examinent les niveaux bas et supérieur, puis signalent les différences (en produisant parfois des faux positifs, par exemple lorsqu'un fichier a été modifié entre les deux). En vérifiant la liste des threads programmés pour l'exécution, je me référais à la liste à double liaison utilisée par le planificateur de système d'exploitation, c'est-à-dire. complètement bas niveau: si ce n'est pas là, il n'a pas une tranche de temps (althogh il y a plus d'endroits à vérifier, comme les ISR).
Angel
5
Contexte
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.
Les processus
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 des 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 cette table. 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 des 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
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 selon les besoins, 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.
Sommaire
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 pouvoir faire tout ce pour quoi il a été conçu. cette détection dépend du malware en question.
Si vous envisagez de vous fier au Gestionnaire des tâches pour rechercher les virus, arrêtez-vous 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 "masquer un virus" en dehors de ceux déjà expliqués dans d'autres réponses:
Une DLL compromise (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 (un fichier .exe et plusieurs fichiers .dll dotés des fonctionnalités essentielles, 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.
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. Étant donné que la possibilité de comparer les sommes de contrôle du fichier 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 inaperçus (à moins qu'un programme antivirus ne détecte et l’utilisateur accepte la suppression - vous voyez déjà le motif).
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 de tâches de Windows est assez limité dans ses tâches et * il ne montrera jamais tous les processus en cours d'exécution sur votre système. Vous voulez une preuve? Comptez (approximativement) la quantité de RAM utilisée par les processus affichés dans le Gestionnaire des tâches et comparez-la à l'utilisation de la RAM par le système. Vous devez disposer d'au moins 100 Mo de RAM, et parfois jusqu'à 1 Go, en fonction de l'utilisation du système. Les cartes graphiques peuvent également utiliser une partie de la mémoire de la mémoire vive avec sa propre mémoire vive GDDR. *
Pour développer 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 leurs tricheurs.
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 veut 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.
shutdown -r -t 0
aucun privilège requis) ou simplement attendre le redémarrage de l'utilisateur.Tous les programmes normaux y apparaîtront, mais ...
svchost
processus (dans la plupart des cas), il est donc difficile de savoir à quel service le service s'exécute sous 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 à un niveau élevé, 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. Celles-ci sont généralement appelées APT (Advanced Advanced Threat ).
la source
Contexte
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.
Les processus
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 des 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 cette table. 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 des 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
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 selon les besoins, 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.
Sommaire
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 pouvoir faire tout ce pour quoi il a été conçu. cette détection dépend du malware en question.
la source
Les virus sont assez sophistiqués de nos jours. Il peut y avoir 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, arrêtez-vous maintenant. Installez un antivirus, et même un antivirus ne parvient parfois pas à détecter un virus sur votre PC.
la source
Il existe un moyen plus simple de "masquer un virus" en dehors de ceux déjà expliqués dans d'autres réponses:
Une DLL compromise (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 (un fichier .exe et plusieurs fichiers .dll dotés des fonctionnalités essentielles, 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. Étant donné que la possibilité de comparer les sommes de contrôle du fichier 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 inaperçus (à moins qu'un programme antivirus ne détecte et l’utilisateur accepte la suppression - vous voyez déjà le motif).
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.
la source
TL; DR: Le gestionnaire de tâches de Windows est assez limité dans ses tâches et * il ne montrera jamais tous les processus en cours d'exécution sur votre système. Vous voulez une preuve? Comptez (approximativement) la quantité de RAM utilisée par les processus affichés dans le Gestionnaire des tâches et comparez-la à l'utilisation de la RAM par le système. Vous devez disposer d'au moins 100 Mo de RAM, et parfois jusqu'à 1 Go, en fonction de l'utilisation du système. Les cartes graphiques peuvent également utiliser une partie de la mémoire de la mémoire vive avec sa propre mémoire vive GDDR. *
Pour développer 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 leurs tricheurs.
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 veut 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.
la source