Remote shell avec netcat (multi OS)
Aujourd'hui, présentation d'une petite astuce avec netcat, un des outils réseaux qui a certainement un ratio nombre d'octets/fonctionnalités parmi les plus élevés dans le monde du logiciel libre.
En quelques mots, comment ouvrir un accès sur une machine afin de récupérer un shell de manière distante sans passer par des mécanismes d'authentification ?
Tout simplement grâce à l'option -e qui permet d'envoyer l'entrée à un programme et dans ce cas, à bash :
$ netcat -l -p 6666 -e /bin/bash
Et si vous vous connectez à ce poste avec une ligne de commande telle que :
$ netcat 127.0.0.1 6666
Vous obtenez un accès au shell :
uptime 11:26 up 19:51, 3 users, load averages: 0,46 0,41 0,40 ls /tmp 006fb4dc3fddd adb.log icssuis501 launch-E5vsgK launch-ZMjtj4 launch-eeBhJ7 launchd-173.krC00r
Inutile de vous dire a quoi peut servir ce genre d'astuce, et quelles peuvent en être les conséquences.
Heureusement, si vous suspectez quelque chose dans ce genre, vous pouvez utiliser netstat pour lister vos connexions en attente et acceptées, et avoir une chance de vous protéger contre ce problème.
Le cas Apple
MacOsX a une version embarquée de netcat (sous l'alias nc
), mais on ne peut pas utiliser l'option -e
avec.
$ nc -l -p 6666 -e /bin/bash nc: illegal option -- e usage: nc [-46DdhklnrtUuvz] [-i interval] [-p source_port] [-s source_ip_address] [-w timeout] [-X proxy_version] [-x proxy_address[:port]] [hostname] [port[s]]
Le problème vient de la version de netcat qui est utilisée dans l'OS (on peut voir les logiciels utilisés dans OSX sur la section Open Source du site Apple). Si on regarde la source de netcat, on constate que la version ne supporte pas l'option shell distant, car elle est considérée comme non sécurisée.
La solution est donc d'installer une autre version, en passant par Homebrew par exemple :
$ brew install netcat
Merci aux StackOverflowiens Apple pour m'avoir orienté dans la bonne direction.
Le cas Windows
Il existe aussi une version de netcat développée pour Windows. Elle est souvent détectée comme un malware par les antivirus (on peut se demander pourquoi )
Plus de détails sur SecurityFocus.
Autres utilisations de netcat
Connaissez vous d'autres utilisations sympathiques de netcat ? Je pense qu'il y a beaucoup de possibilité avec cet outil.
Par exemple, cette page recense quelques exemples qui peuvent être utiles.