ncat en deux mots
Dans la série « souvent il est nécessaire de présenter un outil, un concept, le résultat d'une recherche, … brièvement », aujourd'hui, je fais quelques slides pour présenter netcat.
netcat, présenté comme le couteau suisse de TCP/IP, est un logiciel permettant de lire et écrire en utilisant le protocole TCP / UDP. Sa particularité de lecture / écriture fait de lui un outil de « communication / partage » entre machines.
Sous debian, netcat s'installe simplement grâce à apt-get install netcat
.
Les slides sont beaux1 mais que raconter ?
Commentaires
Slide 2
netcat est un logiciel qui lit et écrit en TCP / UDP, il permet donc de se connecter à n'importe quel port (il voit donc s'il est ouvert) et d'essayer de communiquer … si je « parle mail » sur le port 25, je pourrais envoyer un mail ^^
Pour l'exemple, en se basant sur la RFC 821, je peux écrire2
$ nc -vv localhost 25
localhost [127.0.0.1] 25 (smtp) open
220 seccotine.namok.be ESMTP Postfix (Debian/GNU)
MAIL FROM:<pit@example.org>
250 2.1.0 Ok
RCPT TO:<pk@mailinator.com>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Le corps du mail
Blah blah blah
.
250 2.0.0 Ok: queued as A4114EB4044
QUIT
221 2.0.0 Bye
sent 122, rcvd 250
Je constate sur le screenshot que je reçois bien le mail. Profitez-en pour voir ce que racontent vos logs …
Slide 3
Comparaison avec le programme telnet
pour le principe de connexion à un port, c'est un moyen simple de voir si un port est ouvert. L'envoi de mail fait avec nc
peut très bien se faire avec telnet
également.
J'utilise netcat en tant que client.
Slide 4
L'intérêt de netcat
par rapport à telnet
est de l'utiliser comme serveur.
Comme illustration, je lance une instance de netcat comme serveur sur un port et une autre instance comme client (sur le même port). Les deux instances peuvent communiquer. Ce que l'on illustre en faisant un chat.
Slide 5
En utilisant les redirections d'entrée / sortie, je peux envoyer / recevoir un fichier.
netcat
me permettra donc de faire du transfert de fichiers (artisanal certes) pour peu qu'un port soit disponible (au sens non filtré par les firewalls) sur les machines.
Slide 6/7/8
Last but not least, netcat
permet de passer une commande en argument !
Je peux lancer une commande sur l'une des deux machines et rediriger les entrées / sorties de celle-ci « dans le tuyau ». Ce qui a pour effet par exemple de lancer un shell sur la machine host1 et d'autoriser host2 d'utiliser ce shell avec mes privilèges.
Je m'appelle Bob (oui je sais, ça vous surprend) et j'ai besoin d'aide pour administrer ma machine MS Windows (ça vous étonne aussi hein !), je lance netcat -lvvp 4444 -e cmd.exe
ce qui a pour effet de mettre l'interprèteur de commande MS Windows en écoute sur le port 4444.
Alice veut m'aider, il lui suffit de se connecter à ma machine via netcat -vv <mon ip> 4444
et elle aura accès à mon shell \°/
L'inverse – être prêt à recevoir une commande plutôt que de l'envoyer– est également possible.
Si Alice et Bob son conscients de ce qu'il font, c'est un moyen simple de s'entraider.
Par contre, si Malory parvient à faire exécuter du code à Alice à son insu et que ce code est « simplement » netcat -lvvp 4444 -e cmd.exe
… c'est pas de bol !
Liens
- Protocole SMTP, RFC 821
- Wikipedia, cryptography characters
- Offensive security lab
- Ces slides chez Slideshare, netcat
- Crédit photo chez DeviantArt par Ritvikpandey