[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 !