Méthodologie d’un test intrusion d’un serveur web en pratique. Partie 4 – La phase de post-exploitation : Installer une backdoor

Petit rappel : si vous désirez faire réaliser un audit, vous trouverez toutes les informations sur mon site : https://resistez-aux-hackeurs.com

Nous avons obtenu l’accès au compte root, néanmoins il est possible que l’administrateur de la station change le mot de passe et dans ce cas, nous n’aurions plus accès à la machine. Afin d’éviter ça, nous allons installer une backdoor, ce qui va nous permettre de garder un accès au système et d’y retourner quand bon nous semble. Il peut néanmoins y avoir d’autres motivations pour installer une backdoor : installation d’autres codes malveillants, recherche de listes de mots de passe, utilisation de la machine infectée pour le lancement d’attaques sur d’autres ordinateurs ou serveurs, etc. Les motivations sont nombreuses.

Attention en cas d’audit (pentest, scan de vulnérabilités), l’installation de backdoors est à proscrire. En effet, si un tel accès se retrouve ré-utilisé lors d’une attaque ultérieure, il en sera de la responsabilité des auditeurs.

1.     Installer une porte dérobée pour un accès distant

Comme backdoor, nous allons utiliser tiny shell [1](disponible sur packetstormsecurity).

On ouvre un shell SSH sur notre cible et on télécharge notre backdoor.

Une fois l’archive téléchargée, on la dézippe puis on consulte la documentation.

Une fois configurée, on compile, puis on l’installe.

La backdoor étant installée sur notre système cible, reste à tester son bon fonctionnement. Pour cela, on utilise le client disponible dans l’archive et on se connecte avec sur notre cible.

Nous avons désormais une backdoor installée sur le système cible qui nous permettra ainsi de le contrôler à distance.

2     Port-knocking Backdoor

Le port-knocking est une méthode permettant de modifier le comportement d’un firewall en temps réel pour provoquer l’ouverture d’un port suite au lancement préalable d’une suite de connexions sur des ports distincts dans le bon ordre, à l’instar d’un code frappé à une porte.

Cette technique est notamment utilisée pour protéger l’accès au port 22 dédié au Secure shell (SSH) ; elle ne nécessite pas beaucoup de ressources et reste facile à mettre en œuvre[2].

En résumé, le port knocking est donc une méthode simple pour autoriser un accès distant sur un port non constamment ouvert. Cela permet d’éviter les scans de ports et certaines attaques.

Sur l’exemple suivant, le port 22223 (où un accès ssh a été configuré) a été configuré pour être accessible après la connexion sur les ports 5438, 3428, 3280 et 4480 (commande : knock <ip> 5438 3428 3280 4480)

Il existe une backdoor utilisant ce principe. : Knock-out – a port-knocking based backdoor

3     Backdoorer un serveur par ajout du bit suid

Le suid et guid permettent d’exécuter un binaire avec les droits du propriétaire de ce dernier.

Le suid et le guid peuvent être positionnés avec la commande chmod :

# pour le bit suid :

chmod 4744 <fichier> ou chmod a+s <fichier>

# pour le bit guid :

chmod 2744 <fichier>

Attention, il est potentiellement très dangereux d’activer le bit SUID root, parce qu’il permet à n’importe quel utilisateur d’exécuter le fichier avec les droits root. Si cet exécutable permet de modifier des fichiers l’utilisateur pourra modifier les fichiers protégés du système. Pour exécuter des commandes avec les droits root il est conseillé d’utiliser sudo, ce qui permet de limiter à un seul utilisateur le droit d’exécuter le fichier en tant que root.

Il est ainsi possible pour un utilisateur standard de lancer ce programme sans être root et ainsi accéder à des fichiers nécessitant les droits root justement. Exemple avec le positionnement du bit suid sur le programme cat :

Avec la commande cat, nous avons pu obtenir le contenu du fichier /etc/shadow (et ainsi obtenir les mots de passe du système pour les casser ensuite) normalement uniquement accessible par l’utilisateur root.

Pour détecter les programmes possédant le bit suid et guid, il faut exécuter les commandes suivantes :

setid : find / -user root -perm -4000 -print

setgid : find / -group kmem -perm -2000 -print

4     Backdoorer Apache

Il existe de nombreuses backdoors sous Apache. L’une d’elle consiste en un module permettant d’obtenir un shell root rapidement.

Ce module appelé root-me est accessible à cette adresse : mod-rootme. Une fois installée sur le système, une simple connexion au serveur web avec une commande GET spécifique (« get root ») offre un accès root.

Cette backdoor peut être détectée par rkhunter ou en affichant les modules Apache en mémoire avec la commande « apachectl -t -D DUMP_MODULES » :


[1] http://packetstorm.igor.onlinedirect.bg/UNIX/penetration/tsh-0.6.tgz

[2] https://doc.ubuntu-fr.org/port-knocking

Visits: 288