8 Ordre Netcat (nc) amb exemples


Netcat (o nc en resum) és una eina de línia d'ordres de xarxa senzilla però potent que s'utilitza per realitzar qualsevol operació a Linux relacionada amb sockets de domini TCP, UDP o UNIX.

Netcat es pot utilitzar per a l'exploració de ports, la redirecció de ports, com a escolta de ports (per a connexions entrants); també es pot utilitzar per obrir connexions remotes i tantes altres coses. A més, podeu utilitzar-lo com a porta posterior per accedir a un servidor objectiu.

En aquest article, explicarem les ordres d'ús de Netcat amb exemples.

Com instal·lar i utilitzar Netcat a Linux

Per instal·lar el paquet netcat al vostre sistema, utilitzeu el gestor de paquets predeterminat per a la vostra distribució Linux.

$ yum install nc                  [On CentOS/RHEL]
$ dnf install nc                  [On Fedora 22+ and RHEL 8]
$ sudo apt-get install Netcat     [On Debian/Ubuntu]

Un cop instal·lat el paquet netcat, podeu continuar per aprendre l'ús de l'ordre netcat als exemples següents.

Netcat es pot utilitzar per a l'exploració de ports: per saber quins ports estan oberts i executant serveis en una màquina de destinació. Pot escanejar un únic o múltiples ports oberts o una sèrie de ports.

Aquí hi ha un exemple, l'opció -z estableix que nc simplement escanegeixi els dimonis que escolten, sense enviar-los realment cap dada. L'opció -v activa el mode detallat i -w especifica un temps d'espera per a la connexió que no es pot establir.

$ nc -v -w 2 z 192.168.56.1 22     #scan a single port
OR
$ nc -v -w 2 z 192.168.56.1 22 80  #scan multiple ports
OR
$ nc -v -w 2 z 192.168.56.1 20-25  #scan range of ports

Netcat us permet transferir fitxers entre dos ordinadors o servidors Linux i tots dos sistemes han de tenir nc instal·lat.

Per exemple, per copiar un fitxer d'imatge ISO d'un ordinador a un altre i supervisar el progrés de la transferència (mitjançant la utilitat pv), executeu l'ordre següent a l'ordinador remitent/servidor (on existeix el fitxer ISO).

Això executarà nc en mode d'escolta (marca -l) al port 3000.

$ tar -zcf - debian-10.0.0-amd64-xfce-CD-1.iso  | pv | nc -l -p 3000 -q 5

I a l'ordinador receptor/client, executeu l'ordre següent per obtenir el fitxer.

$ nc 192.168.1.4 3000 | pv | tar -zxf -

També podeu utilitzar Netcat per crear un simple servidor de missatgeria de línia d'ordres a l'instant. Com en l'exemple d'ús anterior, nc s'ha d'instal·lar als dos sistemes utilitzats per a la sala de xat.

En un sistema, executeu l'ordre següent per crear el servidor de xat que escolta al port 5000.

$ nc -l -vv -p 5000

A l'altre sistema, executeu l'ordre següent per iniciar una sessió de xat a una màquina on s'està executant el servidor de missatgeria.

$ nc 192.168.56.1 5000

Utilitzeu l'opció -l de l'ordre nc que s'utilitza per crear un servidor web bàsic i insegur per servir fitxers web estàtics amb finalitats d'aprenentatge. Per demostrar-ho, creeu un fitxer .html tal com es mostra.

$ vim index.html

Afegiu les següents línies HTML al fitxer.

<html>
        <head>
                <title>Test Page</title>
        </head>
        <body>
                      <p>Serving this file using Netcat Basic HTTP server!</p>
        </body>
</html>

Desa els canvis al fitxer i surt.

A continuació, publiqueu el fitxer anterior mitjançant HTTP executant l'ordre següent, que permetrà que el servidor HTTP s'executi contínuament.

$ while : ; do ( echo -ne "HTTP/1.1 200 OK\r\n" ; cat index.html; ) | nc -l -p 8080 ; done

A continuació, obriu un navegador web i podeu accedir al contingut mitjançant l'adreça següent.

http://localhost:8080
OR
http://SERVER_IP:8080

Tingueu en compte que podeu aturar el servidor HTTP Netcat prement [Ctrl+C].

Un altre ús útil de Netcat és resoldre problemes de connexió del servidor. Aquí, podeu utilitzar Netcat per verificar quines dades envia un servidor en resposta a les ordres emeses pel client.

L'ordre següent recupera la pàgina d'inici d'exemple.com.

$ printf "GET / HTTP/1.0\r\n\r\n" | nc text.example.com 80

La sortida de l'ordre anterior inclou les capçaleres enviades pel servidor web que es poden utilitzar per resoldre problemes.

També podeu utilitzar Netcat per obtenir banners de port. En aquest cas, us indicarà quin servei s'està executant darrere d'un port determinat. Per exemple, per saber quin tipus de servei s'executa darrere del port 22 en un servidor específic, executeu l'ordre següent (substituïu 192.168.56.110 per l'adreça IP del servidor de destinació). El senyalador -n significa desactivar les cerques de DNS o de serveis.

$ nc -v -n 192.168.56.110 80

Netcat també admet la creació de sockets de flux de domini UNIX. L'ordre següent crearà i escoltarà en un sòcol de flux de domini UNIX.

$ nc -lU /var/tmp/mysocket &
$ ss -lpn | grep "/var/tmp/"

També podeu executar Netcat com a porta posterior. Tanmateix, això demana més feina. Si Netcat està instal·lat en un servidor de destinació, podeu utilitzar-lo per crear una porta posterior, per obtenir un indicador d'ordres remot.

Per actuar com una porta posterior, necessiteu que Netcat escolti en un port escollit (per exemple, el port 3001) al servidor de destinació i després us podeu connectar a aquest port des de la vostra màquina de la següent manera.

Aquesta és l'ordre destinada a executar-se al servidor remot on l'opció -d inhabilita la lectura des de stdin, i -e especifica l'ordre que s'executarà al sistema de destinació.

$ nc -L -p 3001 -d -e cmd.exe 

Finalment, però no menys important, Netcat es pot utilitzar com a servidor intermediari per a diferents serveis/protocols, inclosos HTTP, SSH i molts més. Per obtenir més informació, consulteu la seva pàgina de manual.

$ man nc

En aquest article, hem explicat 8 exemples pràctics d'ús d'ordres Netcat. Si coneixeu algun altre cas d'ús pràctic, compartiu-lo amb nosaltres mitjançant el formulari de comentaris que trobareu a continuació. També pots fer una pregunta.