¿Qué es Netcat y cómo funciona?
Netcat es una herramienta de línea de comandos que sirve para escribir y leer datos en la red. Para la transmisión de datos, Netcat usa los protocolos de red TCP/IP y UDP. La herramienta proviene originalmente del mundo de Unix; desde entonces, se ha expandido a todas las plataformas.
Gracias a su universalidad, a Netcat se la llama “la navaja suiza del TCP/IP”. Puede utilizarse, por ejemplo, para diagnosticar errores y problemas que afecten a la funcionalidad y la seguridad de una red. Netcat también puede escanear puertos, hacer streaming de datos o simplemente transferirlos. Además, permite configurar servidores de chat y de web e iniciar consultas por correo. Este software minimalista, desarrollado a mediados de los 90, puede operar en modo servidor y cliente.
- Certificado SSL Wildcard
- Registro privado
- 1 cuenta de correo electrónico por contrato
¿Cómo se utiliza Netcat?
Netcat puede usarse en todas las plataformas a través de la línea de comandos. En Linux y macOS, esta herramienta de línea de comandos suele estar preinstalada. En cambio, los usuarios de Windows deben descargarse el programa de internet. Para ello, no se requiere una instalación especial: basta con descargar el instalador (nc.exe). Así, podrás usar Netcat para varias tareas de red usando el símbolo del sistema (cmd.exe). Abre el símbolo del sistema de la siguiente manera:
- Pulsa la combinación de teclas [Windows] + [R]
- Escribe “cmd” en el campo de entrada (1)
- Pulsa el botón “Aceptar” (2)
Se abrirá cmd.exe. La interfaz tiene el siguiente aspecto:
Para iniciar el archivo de programa (nc.exe), debes cambiar la ubicación de almacenamiento. Si guardas el nc.exe en la carpeta “netcat” en el escritorio de Windows, la sintaxis es la siguiente:
cd C:\Usuarios\NOMBRE DE USUARIO\Escritorio\netcat\
El comando “cd” (change directory o cambiar directorio) efectúa el cambio, y la ruta de programa a continuación indica la dirección de la carpeta de almacenamiento de nc.exe. En la línea de comandos, el cambio tiene este aspecto:
Netcat requiere derechos de acceso ampliados para algunas operaciones. En Windows 10, se puede iniciar el símbolo del sistema con derechos de administrador:
- Haz clic con el botón derecho del ratón en el icono de Windows, a la izquierda de la barra de tareas, o pulsa la combinación de teclas [Windows] + [X].
- Selecciona la entrada "Windows PowerShell (Administrador)" del menú contextual.
El uso de Netcat implica ciertos riesgos de seguridad. Por lo tanto, esta herramienta solo deben utilizarla usuarios expertos y administradores de sistemas, especialmente en el modo con derechos de administrador.
Sintaxis de Netcat: ¿qué comandos y opciones están disponibles?
La sintaxis de Netcat consiste en dos componentes fundamentales: el comando básico “nc”, siempre idéntico, seguido por varias “opciones”. El comando básico direcciona al archivo de programa nc.exe, mientras que las opciones determinan el rango concreto de funciones de la versión de Netcat, por lo que varían dependiendo del sistema operativo y de la versión de Netcat utilizada.
La siguiente tabla se limita a recoger las opciones más importantes disponibles en la mayoría de las versiones para Linux, macOS y Windows. También se enumeran otras opciones útiles, en particular las extensiones de la versión GNU Netcat, ampliamente utilizada en Linux, Unix y macOS:
Opciones | Descripción |
-4 | Fuerza el uso de IPv4 (GNU Netcat) |
-6 | Fuerza el uso de IPv6 (GNU Netcat) |
-d | Elimina Netcat de la consola (operación en segundo plano; disponible en Windows y en las versiones actuales de GNU Netcat) |
-D | Habilita la opción de depurar los sockets (GNU Netcat) |
-h (display help) | Muestra la ayuda (comandos/opciones con una breve descripción) |
-i (secs) | Retardo en segundos para las líneas enviadas o los puertos escaneados |
-k | Netcat espera una nueva conexión después de que termine la anterior (solo en GNU Netcat y en combinación con “-l”) |
-l (listen mode) | Modo de escucha/listen y servidor para las solicitudes de conexión entrantes (sobre el puerto especificado) |
-L (listen harder) | Hace que Netcat funcione en modo de escucha incluso después de las desconexiones del lado del cliente (usando los mismos parámetros en todo momento; solo en la versión de Windows) |
-n (numeric-only) | Solo números IP, sin nombres DNS |
-o (file) | Se realiza un volcado hexadecimal del tráfico (el contenido de los archivos se muestra en vista hexadecimal); se utiliza para la depuración (debugging de aplicaciones de red); permite el registro de la comunicación (sniffing) para paquetes salientes y entrantes |
-p (port) | Especifica el puerto de origen local que Netcat debe utilizar para las conexiones salientes |
-r | Usa valores de puerto aleatorios al escanear (para puertos locales y remotos) |
-s (adress) | Especifica la dirección de la fuente local (dirección o nombre IP) |
-t | Modo Telnet (por ejemplo, permite el direccionamiento del servidor a través de Telnet); requiere una compilación especial de Netcat; de lo contrario, la opción no está disponible |
-u | Uso del modo UDP (en lugar de TCP) |
-U (gateway) | Netcat utiliza sockets de dominio Unix (GNU Netcat) |
-v | Salida detallada (por ejemplo, para la visualización y el alcance de los mensajes de error mostrados) |
-w (secs) | Define los tiempos muertos: para establecer y cerrar una conexión (unidad: segundos) |
-z | Modo de escáner de puerto (modo de I/O 0); solo escaneo para servicios de escucha (no envío de datos) |
Un ejemplo simple de la utilización de la sintaxis de Netcat es acceder a la ayuda con el parámetro “-h”:
C:\Usuarios\NOMBRE DE USUARIO\Escritorio\netcat>nc -h
Si, por ejemplo, quieres definir un servidor o un cliente para la transferencia de datos en la red, debes observar la siguiente sintaxis:
Modo cliente (connect to somewhere):
nc [opciones] [dirección IP/nombre del host] [puerto]
Modo de servidor (listen for inbound):
nc -l -p port [opciones] [nombre del host] [puerto]
El esquema básico para ejecutar un escaneo de puertos tiene el siguiente aspecto:
nc [opciones] [host] [puerto]
Copiar archivos con Netcat
Una característica muy popular de Netcat es la copia de archivos, que puede usarse para transferir grandes cantidades de datos, así como para clonar particiones individuales o discos duros enteros. En nuestro ejemplo, el archivo test.txt debe copiarse del ordenador A (cliente) al ordenador B (servidor) a través del puerto 6790. Es necesario seguir estos pasos:
- Determinar la dirección IP del ordenador B (PC de destino).
- Crear el archivo de prueba test.txt en el directorio Netcat del ordenador A. En este ejemplo, el archivo de prueba se encuentra en el directorio de Netcat del cliente. En el ordenador de destino B, el archivo copiado termina también en la carpeta de Netcat (se deben cambiar las otras rutas de archivo en consecuencia).
- Introducir la sintaxis de Netcat en la línea de comandos.
Ordenador B (actúa como servidor receptor):
nc -l -p 6790 > test.txt
INTRO
Ordenador A (actúa como cliente que envía):
nc [dirección IP del ordenador B] 6790 < test.txt
INTRO
El éxito de la transferencia no se confirma en el símbolo del sistema. Puedes comprobar si el archivo se ha transferido correctamente buscándolo en la carpeta de destino.
Escanear puertos
Puedes ejecutar un escaneo y encontrar puertos abiertos, por ejemplo, para detectar errores y problemas de seguridad. En el siguiente ejemplo, el ordenador tiene la dirección IP 192.168.11.1. Después de la dirección IP, se puede especificar si se desean escanear puertos individuales (por ejemplo, 1), varios puertos (1, 2, 3, etc.) o un rango completo (1-1024):
nc -w 2 -z 192.168.10.1 1-1024
La opción “-w” determina la duración de un tiempo muerto (en este ejemplo, “Intentar conectarse a los puertos durante dos segundos”). La opción “-z” indica a Netcat que busque solo servicios de escucha y que no envíe ningún dato.
La opción “-v” sirve para obtener información más detallada sobre el escaneo:
nc -v -w 2 -z 192.168.11.1 1-1024
Netcat confirma entonces un puerto abierto que ha encontrado con el mensaje “succeeded!”.
Connection to 192.168.11.1 25 port [tcp/smtp] succeeded!
En los puertos escaneados 1-1024, se ejecutan los servicios más conocidos, como correo electrónico, FTP o SSH. En este ejemplo, Netcat ha encontrado el puerto SMTP abierto de un cliente de correo electrónico.
Netcat como programa de chat simple
Netcat puede establecer una conexión TCP o UDP simple entre dos ordenadores y luego abrir un canal de comunicación. En el siguiente ejemplo, el receptor se instala primero en el sistema remoto y se pone en modo de listening (escucha). De este modo, actúa como la parte de “escucha” y utiliza el puerto 1605 para recibir mensajes, a los que se puede acceder a través de la dirección IP 192.168.11.1:
nc -l -p 1605
INTRO
A continuación, el ordenador local (PC emisor) establece una conexión con el destinatario del mensaje mediante el siguiente comando:
nc 192.168.11.1 1605
INTRO
Si la conexión se establece correctamente, los mensajes pueden intercambiarse en ambas direcciones.
Configurar un servidor web simple
Netcat también sirve para configurar un servidor web simple. Si, por ejemplo, no se puede acceder al servidor original debido a problemas técnicos, se puede al menos responder a las solicitudes con un mensaje de error predeterminado (en forma de archivo .html) con información sobre el error:
nc -l -v -p 85 -w10 -L < mensaje de error.html
Netcat espera a las solicitudes en el puerto 85 y responde a ellas con el archivo mensaje de error.html. La opción “-L” asegura que Netcat mantenga este procedimiento más allá de una sola solicitud. El parámetro “-w” termina la conexión después de 10 segundos (tiempo muerto). El parámetro “-v” proporciona al operador del servidor información sobre las solicitudes y documentos, como el sistema operativo y el tipo de navegador del ordenador cliente solicitante mediante mensajes de estado.
¿Supone Netcat un riesgo para la seguridad?
Netcat es, sin duda alguna, una herramienta muy versátil que puede realizar multitud de tareas en la red. Por lo tanto, no es de extrañar que sea muy popular entre los administradores de redes y sistemas, sobre todo porque escribir código Netcat es fácil y solo requiere una mínima formación.
Sin embargo, Netcat tiene un lado oscuro: también es una herramienta de hackeo que se usa para espiar la red, detectar agujeros en la seguridad, esquivar cortafuegos y utilizar puertas traseras para apoderarse de los ordenadores. Por ejemplo, los programas de virus dan la alarma si hay una versión de Netcat en el ordenador que, a través de una compilación especial, permite ejecutar la opción “-e”.
Con el interruptor electrónico del código, se puede iniciar una interfaz interactiva (backdoor shell) en un ordenador remoto. Todos los usuarios que puedan acceder sin obstáculos al cmd.exe en Windows, por ejemplo, pueden causar un daño considerable. Es también posible utilizar un backdoor shell para cargar malware. Los hackers también suelen utilizar el parámetro “-d” de Netcat en el código para permitir que la herramienta de línea de comandos de Windows funcione en segundo plano, invisible para el usuario, y así causar daño a distancia.
Para evitar versiones pirateadas, siempre debes descargar Netcat de fuentes seguras en internet. Además, los expertos en seguridad recomiendan sopesar cuidadosamente si es necesario incluir una herramienta como Netcat en la instalación de los sistemas (especialmente los sistemas de frontend).
Otro riesgo de seguridad es que Netcat transfiere los datos en texto simple sin cifrar. Por eso, esta herramienta solo debe utilizarse en redes muy bien protegidas o, mejor aún, separadas de internet. El sucesor de Netcat, Cryptocat, es más adecuado para transferir datos a través de internet, ya que los encripta. Asimismo, al transferir datos relevantes para la seguridad, las conexiones se pueden tunelizar a través de SSH.
Las ventajas y los posibles riesgos lo dejan claro: Netcat es una herramienta con la que los usuarios ambiciosos, los administradores de sistemas y los responsables de TI deben estar familiarizados. Quienes conozcan las ventajas de esta herramienta de administración remota, podrán beneficiarse de su versatilidad y eficacia. Si se evalúan y determinan las amenazas a la seguridad de la propia red con mayor precisión, pueden adoptarse medidas preventivas para evitar los ataques de los piratas informáticos, o, al menos, limitar los daños.
Sin embargo, la herramienta, que fue desarrollada hace más de 20 años en el mundo de la piratería informática, hoy en día se considera bastante anticuada e, incluso, obsoleta. Desde entonces, han aparecido mejores programas para diversas actividades en la red. Además de Cryptocat, está Socat, que, aparte de TCP y UDP, también puede utilizar SCTP, funciona con servidor de proxy y es compatible con cifrado. Además, como Netcat, funciona en todas las plataformas más habituales.
Como herramienta todoterreno rápida de aplicar con una sintaxis de comandos bastante sencilla, Netcat todavía disfruta de una posición especial. Se puede utilizar, por ejemplo, en combinación con la herramienta de administración Netsh para ampliar y mejorar las posibilidades de diagnóstico y administración de la red.