Tutorial de netcat
Tabla de contenido:
- Sintaxis de Netcat
- Escaneo de puertos
- Envío de archivos a través de Netcat
- Crear un servidor de chat simple
- Realizar una solicitud HTTP
- Conclusión
Netcat (o nc) es una utilidad de línea de comandos que lee y escribe datos a través de conexiones de red, utilizando los protocolos TCP o UDP. Es una de las herramientas más poderosas en el arsenal de administradores de redes y sistemas y es considerada como una navaja suiza de herramientas de redes.
Netcat es multiplataforma y está disponible para Linux, macOS, Windows y BSD. Puede usar Netcat para depurar y monitorear conexiones de red, buscar puertos abiertos, transferir datos, como proxy y más. El paquete Netcat está preinstalado en macOS y distribuciones populares de Linux como Ubuntu.
Sintaxis de Netcat
La sintaxis más básica de la utilidad Netcat toma la siguiente forma:
nc host port
En Ubuntu, puede usar
netcat
o
nc
. Ambos son enlaces simbólicos a la versión openBSD de Netcat.
De forma predeterminada, Netcat intentará iniciar una conexión TCP con el host y el puerto especificados. Si desea establecer una conexión UDP, use la opción
-u
:
Escaneo de puertos
Escanear puertos es uno de los usos más comunes para Netcat. Puede escanear un solo puerto o un rango de puertos.
Por ejemplo, para buscar puertos abiertos en el rango 20-80, usaría el siguiente comando:
nc -z -v 10.10.8.8 20-80
La opción
-z
le indicará a
nc
que solo busque puertos abiertos, sin enviarles ningún dato, y la opción
-v
para proporcionar información más detallada.
La salida se verá más o menos así:
nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused Connection to 10.10.8.8 22 port succeeded! nc: connect to 10.10.8.8 port 23 (tcp) failed: Connection refused… nc: connect to 10.10.8.8 port 79 (tcp) failed: Connection refused Connection to 10.10.8.8 80 port succeeded!
nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded
Connection to 10.10.8.8 22 port succeeded! Connection to 10.10.8.8 80 port succeeded!
También puede usar Netcat para encontrar el software del servidor y su versión. Por ejemplo, si envía un comando "EXIT" al servidor en el puerto SSH predeterminado 22:
echo "EXIT" | nc 10.10.8.8 22
La salida se verá más o menos así:
SSH-2.0-OpenSSH_7.6p1 Ubuntu-4 Protocol mismatch.
Para buscar puertos UDP, simplemente agregue la opción
-u
al comando como se muestra a continuación:
nc -z -v -u 10.10.8.8 20-80
En la mayoría de las situaciones, Nmap es una herramienta mejor que Netcat para escanear puertos complejos.
Envío de archivos a través de Netcat
Netcat se puede usar para transferir datos de un host a otro creando un modelo básico de cliente / servidor.
Esto funciona configurando el Netcat para escuchar en un puerto específico (usando la opción
-l
) en el host receptor y luego estableciendo una conexión TCP regular desde el otro host y enviando el archivo a través de él.
En la recepción, ejecute el siguiente comando que abrirá el puerto 5555 para la conexión entrante y redirigirá la salida al archivo:
nc -l 5555 > file_name
Desde el host emisor, conéctese al host receptor y envíe el archivo:
nc receiving.host.com 5555 < file_name
Para transferir un directorio, puede usar tar para archivar el directorio en el host de origen y extraer el archivo en el host de destino.
En el host receptor, configure la herramienta Netcat para escuchar una conexión entrante en el puerto 5555. Los datos entrantes se canalizan al comando tar que extraerá el archivo:
nc -l 5555 | tar xzvf -
En el paquete de host de envío, el directorio y los datos se conectan al proceso de escucha de
nc
en el host de recepción:
tar czvf - /path/to/dir | nc receiving.host.com 5555
Puede ver el progreso de la transferencia en ambos extremos. Una vez completado, escriba
CTRL+C
para cerrar la conexión.
Crear un servidor de chat simple
El procedimiento para crear un chat en línea entre dos o más hosts es el mismo que cuando se transfieren archivos.
En el primer host, inicie un proceso de Netcat para escuchar en el puerto 5555:
nc -l 5555
Desde el segundo host, ejecute el siguiente comando para conectarse al puerto de escucha:
nc first.host.com 5555
Ahora, si escribe un mensaje y presiona
ENTER
, se mostrará en ambos hosts.
Para cerrar la conexión, escriba
CTRL+C
Realizar una solicitud HTTP
Aunque existen herramientas mucho mejores para las solicitudes HTTP, como curl, también puede usar Netcat para enviar varias solicitudes a servidores remotos.
Por ejemplo, para recuperar la página de manual de Netcat del sitio web de OpenBSD, escriba:
printf "GET /nc.1 HTTP/1.1\r\nHost: man.openbsd.org\r\n\r\n" | nc man.openbsd.org 80
La respuesta completa, incluidos los encabezados HTTP y el código HTML, se imprimirá en el terminal.
Conclusión
En este tutorial, ha aprendido a usar la utilidad Netcat para establecer y probar conexiones TCP y UDP.
Para obtener más información, visite la página de manual de Netcat y lea sobre todas las otras opciones poderosas del comando Netcat.
terminal netcatDocker ejecuta el comando con ejemplos
El comando docker run crea un contenedor a partir de una imagen dada y lo inicia usando un comando dado. Es uno de los primeros comandos con los que debe familiarizarse cuando comience a trabajar con Docker.
Comando Echo en Linux con ejemplos
El comando echo es uno de los comandos más básicos y de uso más frecuente en Linux. Los argumentos pasados a echo se imprimen en la salida estándar.
Comando curl en linux con ejemplos
Curl es una utilidad de línea de comandos para transferir datos desde o hacia un servidor diseñado para funcionar sin interacción del usuario. En este tutorial, le mostraremos cómo usar la herramienta de rizo a través de ejemplos prácticos y explicaciones detalladas de las opciones de rizo más comunes.







