Búsqueda de sitios web

8 Comando Netcat (nc) con ejemplos


Netcat (o nc en resumen) es una herramienta de línea de comandos de red simple pero potente que se utiliza para realizar cualquier operación en Linux relacionada con TCP, UDP o sockets de dominio UNIX.

Netcat se puede utilizar para escanear puertos, redireccionamiento de puertos, como escucha de puertos (para conexiones entrantes); también se puede utilizar para abrir conexiones remotas y muchas otras cosas. Además, puede utilizarlo como puerta trasera para acceder a un servidor de destino.

En este artículo, explicaremos los comandos de uso de Netcat con ejemplos.

Cómo instalar y utilizar Netcat en Linux

Para instalar el paquete netcat en su sistema, utilice el administrador de paquetes predeterminado para su distribución de Linux.

yum install nc                  [On CentOS/RHEL]
dnf install nc                  [On Fedora 22+ and RHEL 8]
sudo apt-get install Netcat     [On Debian/Ubuntu]

Una vez instalado el paquete netcat, puede continuar para aprender el uso del comando netcat en los siguientes ejemplos.

Escaneo de puertos

Netcat se puede utilizar para escanear puertos: para saber qué puertos están abiertos y ejecutando servicios en una máquina de destino. Puede escanear uno, varios o varios puertos abiertos.

A continuación se muestra un ejemplo: la opción -z configura nc para que simplemente busque demonios de escucha, sin enviarles ningún dato. La opción -v habilita el modo detallado y -w especifica un tiempo de espera para la conexión que no se puede establecer.

nc -v -w 2 z 192.168.56.1 22     #scan a single port
OR
nc -v -w 2 z 192.168.56.1 22 80  #scan multiple ports
OR
nc -v -w 2 z 192.168.56.1 20-25  #scan range of ports

Transferir archivos entre servidores Linux

Netcat le permite transferir archivos entre dos computadoras o servidores Linux y ambos sistemas deben tener nc instalado.

Por ejemplo, para copiar un archivo de imagen ISO de una computadora a otra y monitorear el progreso de la transferencia (usando la utilidad pv), ejecute el siguiente comando en la computadora remitente/servidor (donde existe el archivo ISO).

Esto ejecutará nc en modo de escucha (indicador -l) en el puerto 3000.

tar -zcf - debian-10.0.0-amd64-xfce-CD-1.iso  | pv | nc -l -p 3000 -q 5

Y en la computadora receptora/cliente, ejecute el siguiente comando para obtener el archivo.

nc 192.168.1.4 3000 | pv | tar -zxf -

Crear un servidor de chat de línea de comandos

También puedes utilizar Netcat para crear instantáneamente un servidor de mensajería de línea de comandos simple. Como en el ejemplo de uso anterior, nc debe instalarse en ambos sistemas utilizados para la sala de chat.

En un sistema, ejecute el siguiente comando para crear el servidor de chat escuchando en el puerto 5000.

nc -l -vv -p 5000

En el otro sistema, ejecute el siguiente comando para iniciar una sesión de chat en una máquina donde se ejecuta el servidor de mensajería.

nc 192.168.56.1 5000

Crear un servidor web básico

Con la opción -l del nc comando se utiliza para crear un servidor web básico e inseguro para servir archivos web estáticos con fines de aprendizaje. Para demostrar esto, cree un archivo .html como se muestra.

vim index.html

Agregue las siguientes líneas HTML en el archivo.

<html>
        <head>
                <title>Test Page</title>
        </head>
        <body>
                      <p>Serving this file using Netcat Basic HTTP server!</p>
        </body>
</html>

Guarde los cambios en el archivo y salga.

Luego, entregue el archivo anterior a través de HTTP ejecutando el siguiente comando, que permitirá que el servidor HTTP se ejecute continuamente.


while : ; do ( echo -ne "HTTP/1.1 200 OK\r\n" ; cat index.html; ) | nc -l -p 8080 ; done

Luego abra un navegador web y podrá acceder al contenido utilizando la siguiente dirección.

http://localhost:8080
OR
http://SERVER_IP:8080

Tenga en cuenta que puede detener el servidor HTTP Netcat presionando [Ctrl+ C].

Solucionar problemas de conexión del servidor Linux

Otro uso útil de Netcat es solucionar problemas de conexión del servidor. Aquí, puede utilizar Netcat para verificar qué datos envía un servidor en respuesta a los comandos emitidos por el cliente.

El siguiente comando recupera la página de inicio de ejemplo.com.

printf "GET / HTTP/1.0\r\n\r\n" | nc text.example.com 80

El resultado del comando anterior incluye los encabezados enviados por el servidor web que pueden usarse para solucionar problemas.

Encuentre un servicio que se ejecute en el puerto

También puedes utilizar Netcat para obtener banners de puertos. En este caso, le dirá qué servicio se está ejecutando detrás de un determinado puerto. Por ejemplo, para saber qué tipo de servicio se ejecuta detrás del puerto 22 en un servidor específico, ejecute el siguiente comando (reemplace 192.168.56.110 con la dirección IP del servidor de destino). El indicador -n significa deshabilitar DNS o búsquedas de servicios.

nc -v -n 192.168.56.110 80

Crear sockets de flujo

Netcat también admite la creación de sockets de flujo de dominio UNIX. El siguiente comando creará y escuchará en un socket de transmisión de dominio UNIX.

nc -lU /var/tmp/mysocket &
ss -lpn | grep "/var/tmp/"

Crear una puerta trasera

También puedes ejecutar Netcat como puerta trasera. Sin embargo, esto requiere más trabajo. Si Netcat está instalado en un servidor de destino, puede usarlo para crear una puerta trasera y obtener un símbolo del sistema remoto.

Para actuar como puerta trasera, necesita que Netcat escuche en un puerto elegido (por ejemplo, el puerto 3001) en el servidor de destino y luego puede conectarse a este puerto desde su máquina de la siguiente manera.

Este es el comando destinado a ejecutarse en el servidor remoto donde la opción -d deshabilita la lectura desde stdin y -e especifica el comando a ejecutar en el sistema de destino.

nc -L -p 3001 -d -e cmd.exe 

Por último, pero no menos importante, Netcat se puede utilizar como proxy para diferentes servicios/protocolos, incluidos HTTP, SSH y muchos más. Para obtener más información, consulte su página de manual.

man nc

En este artículo, hemos explicado 8 ejemplos prácticos de uso del comando Netcat. Si conoce algún otro caso de uso práctico, compártalo con nosotros a través del formulario de comentarios a continuación. También puedes hacer una pregunta.