Netcat
Netcat es una herramienta de red que 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). Fue 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. Existen muchos forks de esta herramienta que añaden características nuevas como GNU Netcat o Cryptcat.
netcat | ||
---|---|---|
Información general | ||
Tipo de programa | Utilidad de red | |
Lanzamiento inicial | 28 de octubre de 1995 | |
Licencia | GNU GPL | |
Información técnica | ||
Plataformas admitidas | Microsoft Windows | |
Versiones | ||
Última versión estable | 0.7.1 ( 10 de enero de 2004) | |
Enlaces | ||
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.
Funcionamiento básico
La forma más básica de operar de netcat consiste en:
- Crear un socket para conectarse a un servidor ( o bien para hacer de servidor )
- Enviar todo lo que entre por la entrada estándar por el socket
- Sacar por la salida estándar todo lo recibido por el socket
Parámetros
A continuación se listan algunos de los parámetros más usados con Netcat:
- -l: Indica que Netcat abre el puerto para Escucha (Listen): Acepta una única conexión de un Cliente y se cierra.
- -p: Especifica el puerto
- -k: Fuerza a que el puerto permanezca abierto tras haber recibido una Conexión. Se usa con el parámetro -l y permite infinitas Conexiones.
- -u: El puerto abierto se abre como UDP, en vez de TCP que es la opción por defecto.
- -v: Muestra información de la conexión.
- -t: Las respuestas son compatibles para sesiones de Telnet.
- -q segundos: Tras haber recibido el EOF de la Entrada de datos, espera los segundos indicados para enviarla.
- -i segundos: Especifica un delay (retraso) de tiempo para el envío o recepción de las líneas de texto.
Ejemplos
Abrir nueva conexión al puerto 25 (como telnet):
nc mail.server.net 25
.
Abrir una conexión para enviar un Archivo de manera RAW (Binario) a un Cliente:
cat ARCHIVO | nc -l PUERTO
Abrir una conexión y volcar la Información recibida en ARCHIVO (Cliente del Ejemplo anterior):
nc HOST PUERTO > ARCHIVO
Simular una Respuesta HTTP (austera) a un Cliente que se conecta con un navegador web (https://web.archive.org/web/19961229112017/http://localhost/):
echo -en "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n\<h1>Hola Mundo</h1>" | nc -l -p 80