InicioLinuxNetcat, la navaja suiza de TCP/IP

Netcat, la navaja suiza de TCP/IP



Netcat es una de las herramientas más potentes y flexibles que existen en el campo de la programación, depuración, análisis y manipulación de redes y servicios TCP/IP. Es un recurso imprescindible tanto para expertos en seguridad de redes como para hackers. Esta receta incluye varios ejemplos de uso de GNU netcat.

Wikipedia: netcat es una herramienta de red originalmente desarrollada por Hobbit en 1996 y liberada bajo una licencia de software libre permisiva (no copyleft, similar a BSD, MIT) para UNIX. Posteriormente fue portada a Windows y Mac OS X entre otras plataformas. Netcat permite a través de intérprete de comandos y con una sintaxis sencilla abrir puertos TCP/UDP en un HOST (quedando netcat a la escucha), asociar una shell a un puerto en concreto (para conectarse por ejemplo a MS-DOS o al intérprete bash de Linux remotamente) y forzar conexiones UDP/TCP (útil por ejemplo para realizar rastreos de puertos o realizar transferencias de archivos bit a bit entre dos equipos). Existen muchos forks de esta herramienta que añaden características nuevas como GNU Netcat o Cryptcat.

Entre sus múltiples aplicaciones, es frecuente la depuración de aplicaciones de red. También es utilizada a menudo para abrir puertas traseras en un sistema.

Introducción


Aunque netcat puede hacer muchas cosas, su función principal es muy simple:

Crea un socket con el destino indicado si es cliente, o en el puerto indicado, si es servidor.
Una vez conectado, envía por el socket todo lo que llegue en su entrada estándar y envía a su salida estándar todo lo que llegue por el socket.
Algo tan simple resulta ser extraordinariamente potente y flexible como vas a ver e continuación. Por simplicidad se utilizan conexiones locales aunque, por supuesto, se pueden utilizar entre máquinas diferentes.


Ingredientes


dijo:

netcat
bash (o equivalente)
utilidades GNU básicas



Sintaxis


dijo:

nc [-options] hostname port[s] [ports]
nc -l -p port [-options] [hostname] [port]



Parámetros básicos


dijo:

-l: modo ‘listen’, queda a la espera de conexiones entrantes.
-p: puerto local
-u: modo UDP
-e: ejecuta el comando dado después de conectar
-c: ejecuta órdenes de shell (hace /bin/sh -c [comando] después de conectar





Posibles usos de netcat


Un chat para dos


Servidor

dijo:

$ nc -l -p 2000



Cliente

dijo:

$ nc localhost 2000



Transferencia de ficheros


La instancia de nc que escucha recibe el fichero. El receptor ejecuta:

dijo:

$ nc -l -p 2000 > fichero.recibido



Y el emisor:

dijo:

$ nc localhost 2000 < fichero



Servidor de echo


Ponemos un servidor que ejecuta cat de modo que devolverá todo lo que se le envíe.

dijo:

$ nc -l -p 2000 -e /bin/cat



Y en otra consola:

dijo:

$ nc localhost 2000
hola
hola



Servidor de daytime


Exactamente lo mismo que el ejemplo anterior pero ejecutando date en lugar de cat.

dijo:

$ nc -l -p 2000 -e /bin/date



Y en otra consola:

dijo:

$ nc localhost 2000
lun feb 23 21:26:48 CET 2004



Shell remota estilo telnet


Servidor

dijo:

$ nc -l -p 2000 -e /bin/bash



Cliente

dijo:

$ nc localhost 2000



Telnet inverso


En esta ocasión es el cliente quien pone el terminal remoto.

Servidor

dijo:

$ nc -l -p 2000



Cliente

dijo:

$ nc server.example.org 2000 -e /bin/bash



Cliente de IRC


dijo:

$ nc irc.freenode.net 6666
NOTICE AUTH :*** Looking up your hostname…
NOTICE AUTH :*** Found your hostname, welcome back
NOTICE AUTH :*** Checking ident
NOTICE AUTH :*** No identd (auth) response
NICK nadie
USER nadie nadie nadie :nadie
:kubrick.freenode.net 001 nadie :Welcome to the freenode IRC Network nadie
:kubrick.freenode.net 002 nadie :Your host is kubrick.freenode.net[kubrick.freenode.net/6666], running version hyperion-1.0.2b
[…]



y a partir de ahí puedes introducir cualquier comando de IRC:

dijo:

LIST
JOIN #canal
PART #canal
PRIVMSG #canal :mensaje
WHO #canal
QUIT



Cliente de correo SMTP


Podemos usar netcat para enviar correo electrónico por medio de un servidor SMTP, utilizando el protocolo directamente:

dijo:

~$ nc mail.servidor.com
220 mail.servidor.com ESMTP Postfix
HELO yo
250 mail.servidor.com
MAIL FROM:[email protected]
250 Ok
RCPT TO:[email protected]
250 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Aviso: su licencia ha caducado. Me deben un pastón.
.
250 Ok: queued as D44314A607
QUIT
221 Bye



Servidor HTTP


Es sencillo conseguir un cliente y un servidor HTTP rudimentarios.

Servidor

dijo:

$ nc -l -p http -c “cat index.html”



Al cual podemos conectar con cualquier navegador HTTP, como por ejemplo firefox.

Cliente

dijo:

$ echo “GET /” | nc www.google.com 80 > index.html



Streaming de audio


Un sencillo ejemplo para hacer streaming de un fichero .mp3:

Servidor

dijo:

$ nc -l -p 2000 < fichero.mp3



y para servir todos los .mp3 de un directorio:

dijo:

$ cat *.mp3 | nc -l -p 2000



Cliente

dijo:

$ nc server.example.org 2000 | madplay –



Streaming de video


Servidor

dijo:

$ nc -l -p 2000 < pelicula.avi



Cliente

dijo:

$ nc server.example.org 2000 | mplayer –



Proxy


Sirva para redirigir una conexión a otro puerto u otra máquina:

dijo:

$ nc -l -p 2000 -c “nc example.org 22”



La trafico recibido en el puerto 2000 de esta máquina se redirige a la máquina example.org:22. Permite incluso que la conexión entrante sea UDP pero la redirección sea TCP o viceversa!

Clonar un disco a través de la red


Esto se debe usar con muchísima precaución. ¡Si no estás 100% seguro, no lo hagas! No digas que no te avisé.

Es este ejemplo voy a copiar un pen drive USB que está conectado al servidor a un fichero en el cliente y después lo voy a montar para acceder al contenido.

Servidor

dijo:

$ dd if=/dev/sda1 | nc -l -p 2000



Cliente

dijo:

$ nc server.example.org 2000 | dd of=pendrive.dump
$ mount pendrive.dump -r -t vfat -o loop /mnt/usb



Ratón remoto


Es decir, usar el ratón conectado a una máquina para usar el entorno gráfico de otra. El ejemplo está pensado para Xorg.

Servidor

dijo:

# nc -l -p 2000 < /dev/input/mice



Cliente

Editar el fichero /etc/X11/xorg.conf y modificar la configuración del ratón para que queda así:

dijo:

Section "InputDevice"
Driver "mouse"
...
Option "Device" "/tmp/fakemouse"
....
EndSection



dijo:

$ mkfifo /tmp/fakemouse
$ nc server.example.org 2000 > /tmp/fakemouse
# /etc/init.d/gdm restart



Medir el ancho de banda


Servidor

dijo:

$ nc -l -p 2000 | pv > /dev/null



Cliente

dijo:

$ nc server.example.org 2000 < /dev/zero



Imprimir un documento en formato PostScript


Funciona en impresoras que soporten el estándar AppSocket/JetDirect, que son la mayoría de las que se conectan por Ethernet.

dijo:

$ cat fichero.ps | nc -q 1 nombre.o.ip.de.la.impresora 9100



¡¡¡ Ver «La Guerra de las Galaxias» !!!


dijo:

$ nc towel.blinkenlights.nl 23




Instalación


Por defecto generalmente y en la inmensa mayoría de los casos, esta increible herramienta se encuentra en los repos oficiales de cada distribución, así que solo deberan buscarla e instalarla mediante el gestor de paquetes específico para su distro.

Otros “netcat“s


dijo:

cryptcat – netcat cifrado.
socat – Cuando netcat te queda corto.
socket
ncat



Referencias


The GNU Netcat project
Netcat – network connections made easy
Play with the Lovely Netcat
Usando la herramienta netcat en GNU/Linux. La navaja suiza del protocolo TCP/IP
Netcat o nc
Tutorial de netcat

ESPERO LES HAYA SIDO DE UTILIDAD. SALUDOS


Datos archivados del Taringa! original
0puntos
2,456visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
2visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

c
crapinga🇦🇷
Usuario
Puntos0
Posts93
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.