GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo usar los comandos de Netcat con ejemplos

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 usando protocolos TCP o UDP.

Cómo instalar netcat

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

La instalación usando apt es bastante simple, solo necesita escribir el siguiente comando en la terminal:

sudo apt install netcat

En CentOS 8

El 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 el código fuente no es tan fácil como instalar a través de apt install , pero si sigue los pasos a continuación, puede instalarlo fácilmente.

Descargue el código fuente del sitio web de 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 hacerlo puedes ejecutar:

tar -xzvf netcat-0.7.1.tar.gz

cd al directorio que contiene el código fuente del paquete y escriba ./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" al ejecutar el comando ./configure, asegúrese de haber instalado el compilador gcc. Para instalarlo escribe el siguiente comando:

apt-get install build-essential

Ejecutando configure toma un tiempo.

Una vez que la configuración haya finalizado 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, ejecute make distclean comando.

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 en particular de un host remoto está abierto

nc -vn 192.168.40.146 2424

Salida 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, 22 puertos)

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

2) Realizar escaneo de puertos TCP contra un host remoto

El siguiente comando verificará los puertos del 20 al 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) Realizar escaneo de puertos UDP contra un host remoto

nc -vnzu 192.168.40.146 1-65535

La salida mostrará solo 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 del remitente al host del receptor a través del puerto 2424. asegúrese de permitir las conexiones entrantes en el puerto 2424 en el host del receptor.

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

En el host del receptor ejecute:

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 comprimida del disco duro (por ejemplo, /dev/sdc) en un host remoto

En el host remoto ejecute:

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

En el host local, ejecute el siguiente comando:

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

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

En el host local ejecute:

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) Ejecutar un chat en línea no seguro entre dos anfitriones

En un host (por ejemplo, 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 comando a continuación en el host local (por ejemplo, 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 puertos conocidos (1-1023)

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

Ahora abre http://192.168.40.144/test.html desde otro host para acceder a él.

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

Puede usar el siguiente comando para permitir que nc use la dirección IPv6 cuando escuche 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 un 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 -caché 3000 -

Leer también:

  • Cómo usar Linux Netcat Command como escáner de puertos
  • Cómo crear un chat simple con netcat en Linux

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


Linux
  1. Cómo usar los comandos 'cat' y 'tac' con ejemplos en Linux

  2. Cómo usar el comando ethtool con ejemplos

  3. SSH a un puerto distinto del 22:cómo hacerlo (con ejemplos)

  4. Comando SCP en Linux:cómo usarlo, con ejemplos

  5. Cómo usar el comando Rmmod en Linux con ejemplos

Cómo usar el comando gunzip de Linux con ejemplos

Cómo usar el comando rm de Linux con ejemplos

Cómo usar los comandos de Netcat con ejemplos

Comandos de Nmap con ejemplos

Cómo usar Netcat para escanear puertos abiertos en Linux

Cómo usar el comando de apagado con ejemplos