ncat o nc es una utilidad de red con una funcionalidad similar al comando cat pero para la red. Es una herramienta CLI de propósito general para leer, escribir y redirigir datos a través de una red. Está diseñado para ser una herramienta de back-end confiable que se puede usar con scripts u otros programas. También es una gran herramienta para la depuración de redes, ya que puede crear cualquier tipo de conexión que uno pueda necesitar.
ncat/nc puede ser una herramienta de escaneo de puertos o una herramienta de seguridad o herramienta de supervisión y también es un proxy TCP simple . Debido a que tiene tantas características, se conoce como una navaja suiza de red. Es una de esas herramientas que todo administrador del sistema debería conocer y dominar.
En la mayoría de las distribuciones de Debian, 'nc' está disponible y su paquete se instala automáticamente durante la instalación. Pero en la instalación mínima de CentOS 7/RHEL 7 no encontrará nc como paquete predeterminado. Necesitas instalar usando el siguiente comando.
[[email protected] ~]# yum install nmap-ncat -y
Los administradores del sistema pueden usarlo para auditar la seguridad de su sistema, pueden usarlo para encontrar los puertos que están abiertos y luego protegerlos. Los administradores también pueden usarlo como un cliente para auditar servidores web, servidores telnet, servidores de correo, etc. Con 'nc' podemos controlar cada carácter enviado y también podemos ver las respuestas a las consultas enviadas.
También podemos hacer que capture los datos que envía el cliente para comprender qué están haciendo.
En este tutorial, vamos a aprender cómo usar el comando 'nc' con 10 ejemplos,
Ejemplo:1) Escuchar conexiones entrantes
Ncat puede funcionar en modo de escucha y podemos escuchar conexiones entrantes en el número de puerto con la opción 'l'. El comando completo es,
$ ncat -l número_puerto
Por ejemplo,
$ ncat -l 8080
El servidor ahora comenzará a escuchar el puerto 8080 para conexiones entrantes.
Ejemplo:2) Conectarse a un sistema remoto
Para conectarnos a un sistema remoto con nc, podemos usar el siguiente comando,
$ ncat IP_address número_puerto
Tomemos un ejemplo,
$ ncat 192.168.1.100 80
Ahora se realizará una conexión al servidor con la dirección IP 192.168.1.100 en el puerto 80 y ahora podemos enviar instrucciones al servidor. Como podemos obtener el contenido de la página completa con
OBTENER/HTTP/1.1
u obtén el nombre de la página,
OBTENER/HTTP/1.1
o podemos obtener un banner para la toma de huellas digitales del sistema operativo con lo siguiente,
CABEZA / HTTP/1.1
Esto le indicará qué software se está utilizando para ejecutar el servidor web.
Ejemplo:3) Conexión a puertos UDP
De manera predeterminada, la utilidad nc realiza conexiones solo a los puertos TCP. Pero también podemos hacer conexiones a puertos UDP, para eso podemos usar la opción ‘u’,
$ ncat -l -u 1234
Ahora nuestro sistema comenzará a escuchar un puerto udp '1234', podemos verificar esto usando el siguiente comando netstat,
$ netstat -tunlp | grep 1234 udp 0 0 0.0.0.0:1234 0.0.0.0:* 17341/nc udp6 0 0 :::1234 :::* 17341/nc
Supongamos que queremos enviar o probar la conectividad del puerto UDP a un host remoto específico, luego use el siguiente comando,
$ ncat -v -u {host-ip} {udp-port}
ejemplo:
[[email protected] ~]# ncat -v -u 192.168.105.150 53 Ncat: Version 6.40 ( http://nmap.org/ncat ) Ncat: Connected to 192.168.105.150:53.
Ejemplo:4) NC como herramienta de chat
NC también se puede usar como herramienta de chat, podemos configurar el servidor para escuchar un puerto y luego puede conectarse al servidor desde una máquina remota en el mismo puerto y comenzar a enviar mensajes. En el lado del servidor, ejecute
$ ncat -l 8080
En la máquina cliente remota, ejecute
$ ncat 192.168.1.100 8080
Luego comience a enviar mensajes y se mostrarán en la terminal del servidor.
Ejemplo:5) NC como proxy
NC también se puede utilizar como proxy con un simple comando. Tomemos un ejemplo,
$ ncat -l 8080 | ncat 192.168.1.200 80
Ahora todas las conexiones que lleguen a nuestro servidor en el puerto 8080 se redirigirán automáticamente al servidor 192.168.1.200 en el puerto 80. Pero como estamos usando una canalización, los datos solo se pueden transferir y para poder recibirlos de vuelta, necesitamos crear una tubería de dos vías. Use los siguientes comandos para hacerlo,
$ mkfifo 2way $ ncat -l 8080 0<2way | ncat 192.168.1.200 80 1>2way
Ahora podrá enviar y recibir datos a través del proxy nc.
Ejemplo:6) Copiar archivos usando nc/ncat
NC también se puede utilizar para copiar los archivos de un sistema a otro, aunque no se recomienda y la mayoría de los sistemas tienen ssh/scp instalado de forma predeterminada. No obstante, si se ha topado con un sistema sin ssh/scp, también puede usar nc como último esfuerzo.
Comience con la máquina en la que se recibirán los datos e inicie nc en el modo de escucha,
$ ncat -l 8080 > file.txt
Ahora, en la máquina desde donde se copiarán los datos, ejecute el siguiente comando,
$ ncat 192.168.1.100 8080 --send-only < data.txt
Aquí, data.txt es el archivo que debe enviarse. La opción de solo envío cerrará la conexión una vez que se haya copiado el archivo. Si no usa esta opción, tendremos que presionar ctrl+c para cerrar la conexión manualmente.
También podemos copiar particiones de disco completas con este método, pero debe hacerse con precaución.
Ejemplo:7) Crear una puerta trasera a través de nc/nact
El comando NC también se puede usar para crear una puerta trasera en sus sistemas y los piratas informáticos usan mucho esta técnica. Debemos saber cómo funciona para asegurar nuestro sistema. Para crear una puerta trasera, el comando es,
$ ncat -l 10000 -e /bin/bash
'e La bandera adjunta un bash al puerto 10000. Ahora un cliente puede conectarse al puerto 10000 en el servidor y tendrá acceso completo a nuestro sistema a través de bash,
$ ncat 192.168.1.100 1000
Ejemplo:8) Reenvío de puertos a través de nc/ncat
También podemos usar NC para el reenvío de puertos con la ayuda de la opción 'c', la sintaxis para lograr el reenvío de puertos es,
$ ncat -u -l 80 -c 'ncat -u -l 8080'
Ahora todas las conexiones del puerto 80 se reenviarán al puerto 8080.
Ejemplo:9) Establecer tiempos de espera de conexión
El modo de escucha en ncat continuará ejecutándose y deberá finalizarse manualmente. Pero podemos configurar tiempos de espera con la opción 'w',
$ ncat -w 10 192.168.1.100 8080
Esto hará que la conexión finalice en 10 segundos, pero solo se puede usar en el lado del cliente y no en el lado del servidor.
Ejemplo:10) Forzar al servidor a permanecer activo usando la opción -k en ncat
Cuando el cliente se desconecta del servidor, después de un tiempo, el servidor también deja de escuchar. Pero podemos obligar al servidor a permanecer conectado y continuar escuchando el puerto con la opción 'k'. Ejecute el siguiente comando,
$ ncat -l -k 8080
Ahora el servidor permanecerá activo, incluso si se interrumpe la conexión del cliente.
Con esto finalizamos nuestro tutorial, no dude en hacer cualquier pregunta sobre este artículo utilizando el cuadro de comentarios a continuación.