Netcat es una he­rra­mie­n­ta de línea de comandos que sirve para escribir y leer datos en la red. Para la tra­n­s­mi­sión de datos, Netcat usa los pro­to­co­los de red TCP/IP y UDP. La he­rra­mie­n­ta proviene ori­gi­na­l­me­n­te del mundo de Unix; desde entonces, se ha expandido a todas las pla­ta­fo­r­mas.

Gracias a su uni­ve­r­sa­li­dad, a Netcat se la llama “la navaja suiza del TCP/IP”. Puede uti­li­zar­se, por ejemplo, para dia­g­no­s­ti­car errores y problemas que afecten a la fu­n­cio­na­li­dad y la seguridad de una red. Netcat también puede escanear puertos, hacer streaming de datos o si­m­ple­me­n­te tra­n­s­fe­ri­r­los. Además, permite co­n­fi­gu­rar se­r­vi­do­res de chat y de web e iniciar consultas por correo. Este software mi­ni­ma­li­s­ta, de­sa­rro­lla­do a mediados de los 90, puede operar en modo servidor y cliente.

Dominios web
Compra y registra tu dominio ideal
  • Domina el mercado con nuestra oferta 3x1 en dominios
  • Función Domain Connect para una co­n­fi­gu­ra­ción DNS si­m­pli­fi­ca­da gratis
  • Registro privado y gratis para mayor seguridad

¿Cómo se utiliza Netcat?

Netcat puede usarse en todas las pla­ta­fo­r­mas a través de la línea de comandos. En Linux y macOS, esta he­rra­mie­n­ta de línea de comandos suele estar prei­n­s­ta­la­da. En cambio, los usuarios de Windows deben de­s­ca­r­gar­se el programa de internet. Para ello, no se requiere una in­s­ta­la­ción especial: basta con descargar el in­s­ta­la­dor (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:

  1. Pulsa la co­m­bi­na­ción de teclas [Windows] + [R]
  2. Escribe “cmd” en el campo de entrada (1)
  3. 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 al­ma­ce­na­mie­n­to. Si guardas el nc.exe en la carpeta “netcat” en el es­cri­to­rio de Windows, la sintaxis es la siguiente:

cd C:\Usuarios\NOMBRE DE USUARIO\Escritorio\netcat\

El comando “cd” (change directory o cambiar di­re­c­to­rio) efectúa el cambio, y la ruta de programa a co­n­ti­nua­ción indica la dirección de la carpeta de al­ma­ce­na­mie­n­to de nc.exe. En la línea de comandos, el cambio tiene este aspecto:

Netcat requiere derechos de acceso ampliados para algunas ope­ra­cio­nes. En Windows 10, se puede iniciar el símbolo del sistema con derechos de ad­mi­ni­s­tra­dor:

  1. 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 co­m­bi­na­ción de teclas [Windows] + [X].
  2. Se­le­c­cio­na la entrada "Windows Po­we­r­She­ll (Ad­mi­ni­s­tra­dor)" del menú co­n­te­x­tual.
Nota

El uso de Netcat implica ciertos riesgos de seguridad. Por lo tanto, esta he­rra­mie­n­ta solo deben uti­li­zar­la usuarios expertos y ad­mi­ni­s­tra­do­res de sistemas, es­pe­cia­l­me­n­te en el modo con derechos de ad­mi­ni­s­tra­dor.

Sintaxis de Netcat: ¿qué comandos y opciones están di­s­po­ni­bles?

La sintaxis de Netcat consiste en dos co­m­po­ne­n­tes fu­n­da­me­n­ta­les: el comando básico “nc”, siempre idéntico, seguido por varias “opciones”. El comando básico di­re­c­cio­na al archivo de programa nc.exe, mientras que las opciones de­te­r­mi­nan el rango concreto de funciones de la versión de Netcat, por lo que varían de­pe­n­die­n­do del sistema operativo y de la versión de Netcat utilizada.

La siguiente tabla se limita a recoger las opciones más im­po­r­ta­n­tes di­s­po­ni­bles en la mayoría de las versiones para Linux, macOS y Windows. También se enumeran otras opciones útiles, en pa­r­ti­cu­lar las ex­te­n­sio­nes de la versión GNU Netcat, am­plia­me­n­te utilizada en Linux, Unix y macOS:

Opciones De­s­cri­p­ció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; di­s­po­ni­ble 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 de­s­cri­p­ción)
-i (secs) Retardo en segundos para las líneas enviadas o los puertos es­ca­nea­dos
-k Netcat espera una nueva conexión después de que termine la anterior (solo en GNU Netcat y en co­m­bi­na­ción con “-l”)
-l (listen mode) Modo de escucha/listen y servidor para las so­li­ci­tu­des de conexión entrantes (sobre el puerto es­pe­ci­fi­ca­do)
-L (listen harder) Hace que Netcat funcione en modo de escucha incluso después de las de­s­co­ne­xio­nes del lado del cliente (usando los mismos pa­rá­me­tros 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 he­xa­de­ci­mal del tráfico (el contenido de los archivos se muestra en vista he­xa­de­ci­mal); se utiliza para la de­pu­ra­ción (debugging de apli­ca­cio­nes de red); permite el registro de la co­mu­ni­ca­ción (sniffing) para paquetes salientes y entrantes
-p (port) Es­pe­ci­fi­ca el puerto de origen local que Netcat debe utilizar para las co­ne­xio­nes salientes
-r Usa valores de puerto alea­to­rios al escanear (para puertos locales y remotos)
-s (adress) Es­pe­ci­fi­ca la dirección de la fuente local (dirección o nombre IP)
-t Modo Telnet (por ejemplo, permite el di­re­c­cio­na­mie­n­to del servidor a través de Telnet); requiere una co­m­pi­la­ción especial de Netcat; de lo contrario, la opción no está di­s­po­ni­ble
-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 vi­sua­li­za­ción y el alcance de los mensajes de error mostrados)
-w (secs) Define los tiempos muertos: para es­ta­ble­cer 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 uti­li­za­ció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 tra­n­s­fe­re­n­cia 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 ca­ra­c­te­rí­s­ti­ca muy popular de Netcat es la copia de archivos, que puede usarse para tra­n­s­fe­rir grandes ca­n­ti­da­des de datos, así como para clonar pa­r­ti­cio­nes in­di­vi­dua­les 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:

  1. De­te­r­mi­nar la dirección IP del ordenador B (PC de destino).
  2. Crear el archivo de prueba test.txt en el di­re­c­to­rio Netcat del ordenador A. En este ejemplo, el archivo de prueba se encuentra en el di­re­c­to­rio 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 co­n­se­cue­n­cia).
  3. In­tro­du­cir 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 tra­n­s­fe­re­n­cia no se confirma en el símbolo del sistema. Puedes comprobar si el archivo se ha tra­n­s­fe­ri­do co­rre­c­ta­me­n­te bu­s­cá­n­do­lo 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 es­pe­ci­fi­car si se desean escanear puertos in­di­vi­dua­les (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 co­ne­c­tar­se 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 in­fo­r­ma­ció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 en­co­n­tra­do con el mensaje “succeeded!”.

Connection to 192.168.11.1 25 port [tcp/smtp] succeeded!

En los puertos es­ca­nea­dos 1-1024, se ejecutan los servicios más conocidos, como correo ele­c­tró­ni­co, FTP o SSH. En este ejemplo, Netcat ha en­co­n­tra­do el puerto SMTP abierto de un cliente de correo ele­c­tró­ni­co.

Netcat como programa de chat simple

Netcat puede es­ta­ble­cer una conexión TCP o UDP simple entre dos or­de­na­do­res y luego abrir un canal de co­mu­ni­ca­ció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 co­n­ti­nua­ción, el ordenador local (PC emisor) establece una conexión con el de­s­ti­na­ta­rio del mensaje mediante el siguiente comando:

nc 192.168.11.1 1605
INTRO

Si la conexión se establece co­rre­c­ta­me­n­te, los mensajes pueden in­te­r­ca­m­biar­se en ambas di­re­c­cio­nes.

Co­n­fi­gu­rar un servidor web simple

Netcat también sirve para co­n­fi­gu­rar 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 so­li­ci­tu­des con un mensaje de error pre­de­te­r­mi­na­do (en forma de archivo .html) con in­fo­r­ma­ción sobre el error:

nc -l -v -p 85 -w10 -L < mensaje de error.html

Netcat espera a las so­li­ci­tu­des en el puerto 85 y responde a ellas con el archivo mensaje de error.html. La opción “-L” asegura que Netcat mantenga este pro­ce­di­mie­n­to 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” pro­po­r­cio­na al operador del servidor in­fo­r­ma­ción sobre las so­li­ci­tu­des y do­cu­me­n­tos, como el sistema operativo y el tipo de navegador del ordenador cliente so­li­ci­ta­n­te mediante mensajes de estado.

¿Supone Netcat un riesgo para la seguridad?

Netcat es, sin duda alguna, una he­rra­mie­n­ta 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 ad­mi­ni­s­tra­do­res 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 he­rra­mie­n­ta de hackeo que se usa para espiar la red, detectar agujeros en la seguridad, esquivar co­r­ta­fue­gos y utilizar puertas traseras para apo­de­rar­se de los or­de­na­do­res. 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 co­m­pi­la­ción especial, permite ejecutar la opción “-e”.

Con el in­te­rru­p­tor ele­c­tró­ni­co del código, se puede iniciar una interfaz in­ter­ac­ti­va (backdoor shell) en un ordenador remoto. Todos los usuarios que puedan acceder sin ob­s­tácu­los al cmd.exe en Windows, por ejemplo, pueden causar un daño co­n­si­de­ra­ble. 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 he­rra­mie­n­ta 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 pi­ra­tea­das, siempre debes descargar Netcat de fuentes seguras en internet. Además, los expertos en seguridad re­co­mie­n­dan sopesar cui­da­do­sa­me­n­te si es necesario incluir una he­rra­mie­n­ta como Netcat en la in­s­ta­la­ción de los sistemas (es­pe­cia­l­me­n­te los sistemas de frontend).

Otro riesgo de seguridad es que Netcat tra­n­s­fie­re los datos en texto simple sin cifrar. Por eso, esta he­rra­mie­n­ta solo debe uti­li­zar­se en redes muy bien pro­te­gi­das o, mejor aún, separadas de internet. El sucesor de Netcat, Cryptocat, es más adecuado para tra­n­s­fe­rir datos a través de internet, ya que los encripta. Asimismo, al tra­n­s­fe­rir datos re­le­va­n­tes para la seguridad, las co­ne­xio­nes se pueden tunelizar a través de SSH.

Las ventajas y los posibles riesgos lo dejan claro: Netcat es una he­rra­mie­n­ta con la que los usuarios am­bi­cio­sos, los ad­mi­ni­s­tra­do­res de sistemas y los re­s­po­n­sa­bles de TI deben estar fa­mi­lia­ri­za­dos. Quienes conozcan las ventajas de esta he­rra­mie­n­ta de ad­mi­ni­s­tra­ción remota, podrán be­ne­fi­ciar­se de su ve­r­sa­ti­li­dad y eficacia. Si se evalúan y de­te­r­mi­nan las amenazas a la seguridad de la propia red con mayor precisión, pueden adoptarse medidas pre­ve­n­ti­vas para evitar los ataques de los piratas in­fo­r­má­ti­cos, o, al menos, limitar los daños.

Sin embargo, la he­rra­mie­n­ta, que fue de­sa­rro­lla­da hace más de 20 años en el mundo de la piratería in­fo­r­má­ti­ca, hoy en día se considera bastante anticuada e, incluso, obsoleta. Desde entonces, han aparecido mejores programas para diversas ac­ti­vi­da­des 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 co­m­pa­ti­ble con cifrado. Además, como Netcat, funciona en todas las pla­ta­fo­r­mas más ha­bi­tua­les.

Como he­rra­mie­n­ta to­do­te­rreno 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 co­m­bi­na­ción con la he­rra­mie­n­ta de ad­mi­ni­s­tra­ción Netsh para ampliar y mejorar las po­si­bi­li­da­des de dia­g­nó­s­ti­co y ad­mi­ni­s­tra­ción de la red.

Ir al menú principal