LINUX

Cómo usar los comandos de Netcat con ejemplos

instalar comando netcat linux

El comando Netcat (nc) es una poderosa herramienta para analizar conexiones de red, escanear puertos abiertos, transferir datos, etc. Es una utilidad de red para leer y escribir en conexiones de red utilizando protocolos TCP o UDP.

Cómo instalar netcat

Es una herramienta multiplataforma y está disponible para Linux, macOS, Windows y BSD. Instalaremos netcat en la máquina Ubuntu 18.04 usando apt install o compilándolo a partir del código fuente.

Instalar usando apt es bastante simple, simplemente escriba el siguiente comando en la terminal:

sudo apt install netcat

En CentOS 8

Ncat se puede instalar con el paquete nmap en RHEL 8/CentOS 8. Use el comando dnf como se muestra a continuación

sudo dnf install nmap

Cómo instalar netcat desde el código fuente

Compilar netcat desde la fuente no es tan fácil como instalar a través de apt installpero si sigue los pasos a continuación, puede instalarlo fácilmente.

Descarga el código fuente de sitio netcat con el siguiente comando

wget http://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz

Extraiga el archivo recién descargado. Para hacer esto, puede ejecutar:

tar -xzvf netcat-0.7.1.tar.gz

cd en el directorio que contiene el código fuente y el tipo de paquete ./configure para configurar el paquete para su sistema.

cd netcat-0.7.1
./configure

Si recibe un mensaje de error como este: «no se encontró un compilador C aceptable en $PATH» cuando ejecuta el comando ./configure, asegúrese de tener instalado el compilador gcc. Para instalarlo escribe el siguiente comando:

apt-get install build-essential

Correr configure lleva algo de tiempo.

Una vez que la configuración se haya completado con éxito, ejecute:

sudo make

y

sudo make install

Puede eliminar los binarios del programa y los archivos de objetos del directorio del código fuente escribiendo make clean. Para eliminar también los archivos que configure creado, ejecutar make distclean dominio.

Ejemplos de netcat

Antes de comenzar a explorar algunos comandos de netcat, es importante saber que si se vincula a puertos conocidos (0-1023) con nc, necesita privilegios de root. De lo contrario, puede ejecutar nc como un usuario normal.

1) Probar si un puerto TCP específico de un host remoto está abierto

nc -vn 192.168.40.146 2424

Salga si el puerto 2424 en el servidor remoto está cerrado

nc: connect to 192.168.40.146 port 2424 (tcp) failed: Connection refused

Salida si el puerto en el servidor remoto está abierto (por ejemplo, puerto 22)

Connection to 192.168.40.146 22 port [tcp/*] succeeded!
SSH-2.0-OpenSSH_7.6p1 Ubuntu-4

2) Realice un escaneo de puertos TCP contra un host remoto

El siguiente comando verificará los puertos 20 a 25 en el host remoto e imprimirá el resultado.

nc -vnz -w 1 192.168.40.146 20-25

La salida se verá así

nc: connect to 192.168.40.146 port 20 (tcp) failed: Connection refused
nc: connect to 192.168.40.146 port 21 (tcp) failed: Connection refused
Connection to 192.168.40.146 22 port [tcp/*] succeeded!
nc: connect to 192.168.40.146 port 23 (tcp) failed: Connection refused
nc: connect to 192.168.40.146 port 24 (tcp) failed: Connection refused
nc: connect to 192.168.40.146 port 25 (tcp) failed: Connection refused

3) Realice un escaneo de puertos UDP contra un host remoto

nc -vnzu 192.168.40.146 1-65535

La salida solo mostrará los puertos que permiten conexiones udp.

Connection to 192.168.40.146 2424 port [udp/*] succeeded!
Connection to 192.168.40.146 12354 port [udp/*] succeeded!

4) Enviar un paquete UDP de prueba a un host remoto

echo -n "udp test" | nc -u -w1 192.168.40.146 2424

El comando anterior enviará un paquete UDP de prueba con un tiempo de espera de 1 segundo a un host remoto en el puerto 2424

5) Copie un archivo (por ejemplo, test.txt) de un host a otro

En el host receptor (192.168.40.146 en mi caso) ejecute:

nc -lp 2424 > test.txt

En el host del remitente (192.168.40.144), ejecute el siguiente comando:

nc 192.168.40.146 2424 < test.txt

Esto copiará el archivo test.txt del host remitente al host receptor a través del puerto 2424. Asegúrese de permitir las conexiones entrantes en el puerto 2424 del host receptor.

6) Transferir un directorio completo (incluido su contenido) de un host a otro

En la ejecución del host del receptor:

nc -l 2424 | tar xvf -

En el host del remitente, ejecute el siguiente comando:

tar cvf - /path/to/dir | nc 192.168.40.146 2424

7) Cree una copia de seguridad del disco duro comprimido (por ejemplo, /dev/sdc) en un host remoto

En la ejecución del host remoto:

nc -lp 2424 | sudo dd of=/path/to/image.img.gz

En localhost, ejecute el siguiente comando:

dd if=/dev/sdc | gzip -c | nc 192.168.40.146 2424

8) Restaurar un disco duro (p. ej., /dev/sdc) desde una imagen de disco comprimida almacenada en un host remoto

En localhost se ejecuta:

nc -lp 2424 | gunzip -c | sudo dd of=/dev/sdc

En el host remoto, ejecute el siguiente comando:

cat /path/to/image.img.gz | nc 192.168.40.144 2424

9) Ejecute un chat en línea inseguro entre dos hosts

En un host (p. ej., 192.168.40.144), ejecute el siguiente comando:

nc -lp 2424

En otro host (p. ej., 192.168.40.146), ejecute el siguiente comando:

nc 192.168.40.144 2424

Después de ejecutar estos comandos, todo lo que se escriba en ambos terminales se verá en ambas máquinas host.

10) Ejecutar un servidor web con una página web estática

Ejecute el siguiente comando en localhost (p. ej., 192.168.40.144) para iniciar un servidor web que sirve test.html en el puerto 80. Tenga en cuenta que debe ejecutar con privilegios sudo ya que 80 está en el rango de puerto conocido (1-1023)

while true; do sudo nc -lp 80 < test.html; done

Ahora abierto http://192.168.40.144/test.html de otro host para acceder a él.

11) Escuche en un puerto TCP usando la dirección IPv6

Puede usar el siguiente comando para permitir que nc use la dirección IPv6 cuando escucha en un puerto TCP.

nc -6 -l 2424

Compruebe si funciona con el siguiente comando

sudo netstat -nap | grep 2424

La salida se verá así

tcp6 0 0 :::2424 :::* LISTEN 15665/nc

12) Transmita un archivo de video desde un servidor para que el cliente vea el video transmitido usando el reproductor de video (por ejemplo, mplayer)

En un servidor de video (192.168.40.144):

cat sample_video.avi | nc -l 2424

En un host cliente (192.168.40.146):

nc 192.168.40.144 2424 | mplayer -vo x11 -cache 3000 –

Lea también:

Como puede ver, netcat es una gran herramienta para redes TCP/IP y es una de las herramientas preferidas por los administradores de sistemas cuando se trata de solución de problemas y experimentación de redes. Es por eso que muchas distribuciones de Linux vienen con netcat preinstalado.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar