ICMP Reverse shell

ICMP Reverse shell

Aujourd'hui, je voulais partager avec vous une technique que j'ai récemment découverte, qui pourrait vous aider à contourner un pare-feu lors de vos tests d'intrusion. 🔍💻


Lorsqu'un pirate trouve un moyen d'injecter du code sur votre serveur, il va essayer d'ouvrir un shell afin de pouvoir exécuter des commandes sur votre serveur et obtenir un retour sur les commandes qu'il aura exécutées.


Cela se fait généralement de deux manières :


- Bind shell : L'attaquant lance au préalable un serveur en écoute sur la machine victime pour se connecter depuis sa machine, initialisant ainsi une connexion entrante sur la machine victime pour envoyer ses commandes (et les exécuter).
- Reverse shell : La connexion est établie dans le sens inverse.


Que ce soit pour des bind shells ou des reverse shells, les attaquants utilisent des outils tels que Netcat, le meterpreter de Metasploit ou des serveurs C2 en tout genre.


J'ai remarqué un point commun à tous ces outils : ils utilisent, pour la majorité d'entre eux, des sockets TCP ou UDP pour établir une connexion entre la victime et le serveur de contrôle.


🚧 Cependant, un pare-feu à priori bien configuré, bloquera toutes les connexions sortantes et entrantes, autorisant seulement les connexions entrantes sur les ports nécessaires en TCP et UDP.


Dans cette configuration, l'attaquant aura de grandes difficultés à ouvrir un bind ou un reverse shell sur votre serveur avec des connexions TCP/UDP.


Toutefois, à des fins de diagnostic, les administrateurs systèmes autorisent souvent les flux ICMP pour pouvoir pinguer leurs serveurs et s'assurer de leur bon fonctionnement.


💀 Et c'est en m'interrogeant sur le contournement des règles de pare-feu que j'ai découvert qu'il était possible d'établir des connexions reverse shells en utilisant le protocole ICMP !


En effet, le protocole ICMP présente un champ Optionnal Data (comme dans de nombreux protocoles) qui permet d'envoyer des informations supplémentaires. Vous l'aurez compris, dans notre cas, ce qui nous intéresse, c'est d'émettre des commandes à travers ce champ pour que la victime puisse les réceptionner et les exécuter en contournant le pare-feu.

J'ai dédié une page à ce sujet sur mon wiki pour la partie exploitation, si ça vous intéresse : 📚
https://wiki.neopipe.fr/books/exploitation/page/reseau-icmp-reverse-shell


Maintenant que vous êtes au courant qu'un protocole aussi inoffensif que l'ICMP peut être exploité, je vous recommande de reconfigurer vos pare-feux et d'ajouter des règles sur vos IDS pour surveiller les flux ICMP.


Si ce post vous a intéressé et que vous avez appris quelque chose, n'hésitez pas à republier ce post. À l'avenir, je partagerai d'autres techniques concrètes utilisées par les attaquants, afin que vous puissiez correctement vous protéger de votre côté et renforcer vos compétences en sécurité. 👨‍💻🔒