[Linux] Masquer un programme malveillant

Salut à tous,

 

Ça fait un bout de temps que je ne vous ai pas écrit ...
Cela n'est pas vraiment une faute de temps, mais plutôt une espèce d’immense trou noir.
Une page blanche qui a commencé il y a quelques mois et qui ne s'arrête plus vraiment ...
Je vous le dis mes amis, c'est une période où j'ai besoin de me ressourcer, de prendre le temps !

Mais lorsque me vient une idée lumineuse, je n’hésite pas à vous en faire profiter.
C'est d'ailleurs le cas aujourd'hui !
Nous allons prendre le temps de parler des processus Linux ... et de comment cacher le processus d'un programme malveillant ....

 

Un processus qu'est-ce que c'est ?

Lorsque je lance une commande sous Linux (ou sous n'importe quel système) ...

 

 

Il se crée un processus ...
Dans la commande ci-dessus, je fais un "ping dyrk.org", un processus va se créer et je vais le récupérer ainsi :

Ci-dessus je vois que j'ai un processus de créer pour mon ping.
Il est possible de visualiser l'ensemble des processus avec des commandes comme

$ ps aux

ou encore

$ top

ou bien

$ htop

Bref les outils de visualisation des processus sont nombreux.

Ces outils permettent donc de visionner ce qui se passe sur une machine, et parfois de trouver des comportements anormaux ... des programmes qui ne devraient pas être là ...

Comme vous pouvez le constater je vois bien la ligne de commande exécutée ...

Comment modifier la ligne de commande d'un processus

Une commande toute simple vous permettra sournoisement de larguer plus d'un admin système sur deux ^^

exec -a "la ligne de commande que je veux afficher"      "script que je veux exécuter

"exec -a" permet de remplacer le premier argument d'une ligne de commande parce que vous voulez.

exec -a "word.exe" "telnet"

word.exe ( les linuxiens comprendront ;) ) est donc ce qui va s'afficher, l'utilisateur ne verra donc pas le "telnet"

 

 

Comment fonctionne les processus sous Linux

Chaque processus possède un Id, qui correspond à un chemin /proc/<processus id>

Par exemple, dans la capture d'écran un peu plus haut, vous pouvez voir le processus "JeSuisUnVirus" qui est "25598"

Donc si je me rends dans le dossier "/proc/25598"

 

Je constate un ensemble de dossiers et de fichiers.
Chacun contenant des informations sur le processus ...

La ligne de commande du processus :

Les variables d'environnements de là où est exécuté le processus

Bref tout un tas de trucs rigolos !

Comment démasquer une fausse commande ?

En une ligne de commande :

Pid=<id du processus>;cat /proc/$Pid/cmdline; echo ""; readlink -f /proc/$Pid/exe

Qu'est-ce que ça fait concrètement.
Cette ligne de commande va afficher la ligne de commande du processus (fausse ou non).
Elle va retourner également le binaire correspondant ...

 

Dans notre cas, on voit que le processus 27677 correspond à la commande "word.exe" mais ... en réalité c'est /usr/bin/telnet qui est exécuté !!!
Nous avons donc démasqué un processus déguisé !

 

Astuce

 

Vous pouvez même balancer des trucs sur la sortie standard d'un processus en particulier :

<Ligne de commande> > /proc/<id du processus>/fd/0

Conclusion

Il ne faut pas toujours croire dans ce que vous voyez ;)
La méfiance est de rigueur lorsque l'on administre une machine !
Un grand pouvoir implique de grandes responsabilités !

2 comments

Répondre à IngDev Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site est protégé par reCAPTCHA et le GooglePolitique de confidentialité etConditions d'utilisation appliquer.