Dyrk.org
Do You Really Know

[Linux] Masquer un programme malveillant

Publié le 30 octobre 2017 par #Ro0t

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 !