Ventanas.  virus  Cuadernos.  Internet.  oficina.  Utilidades.  Conductores

Original: ejemplos útiles de netcat en Linux
Autor: Dan Nanni
Fecha de publicación: 27 de enero de 2014
Traducción: A.Panin
Fecha de transferencia: 7 de septiembre de 2016

Comúnmente conocida como la "navaja suiza" de las redes TCP/IP, la utilidad es una herramienta extremadamente flexible que le permite hacer casi cualquier cosa. acciones posibles con sockets TCP/UDP en Linux. Es una de las herramientas más populares para diagnosticar y experimentar con redes entre los administradores de sistemas.

Tenga en cuenta que al usar nc para aceptar conexiones en puertos conocidos servicios de red(0-1023) necesitará privilegios de root. En todos los demás casos, los derechos de usuario normales son suficientes para el correcto funcionamiento de nc.

1. Comprobar si existe un puerto TCP abierto específico en un host remoto

$ nc -vn 192.168.233.208 5000 nc: conexión a 192.168.233.208 5000 (tcp) fallida: Conexión rechazada $ nc -v 192.168.233.208 22 Conexión a 192.168.233.208 22 puerto exitosa! SSH-2.0-OpenSSH_6.0p1 Debian-4

2. Envío de un paquete UDP de prueba a un host remoto

El siguiente comando es enviar un paquete UDP de prueba con un retraso de 1 segundo al puerto 5000 del host remoto con la dirección dada.

$ echo -n "foo" | nc -u -w1 192.168.1.8 5000

3. Escaneo de puertos TCP en un host remoto

El siguiente comando es para escanear puertos desde rangos y listar puertos abiertos.

$ nc -vnz -w 1 192.168.233.208 1-1000 2000-3000

4. Copiar un archivo (por ejemplo, mi.jpg) desde un host llamado hostA.com a un host llamado hostB.com

$nc -lp 5000 > mi.jpg

$nchostB.com 5000< my.jpg

5. Transferir el directorio (con todo el contenido) de hostA.com a hostB.com

En un host llamado hostB.com (host):

$ nc -l 5000 | tarxvf-

En un host llamado hostA.com (lado de transmisión):

$ tar cvf - /ruta/a/dir | nc hostB.com 5000

6. Escaneo de puertos UDP en un host remoto

$ nc -vnzu 192.168.1.8 1-65535 ¡La conexión al puerto 192.168.1.8 68 se realizó correctamente! ¡Conexión al puerto 192.168.1.8 5353 exitosa! ¡La conexión al puerto 192.168.1.8 16389 se realizó correctamente! ¡La conexión al puerto 192.168.1.8 38515 se realizó correctamente! ¡La conexión al puerto 192.168.1.8 45103 se realizó correctamente!

El comando anterior le permite listar puertos abiertos que aceptan UDP en un servidor remoto.

7. Esperando datos en el puerto UDP y emitiendo los datos recibidos en formato de texto

El siguiente comando le permite recibir mensajes (cadenas de texto) en un puerto UDP determinado.

$ nc -u servidor local 5000

Tenga en cuenta que comando dado completará su trabajo inmediatamente después de recibir el primer mensaje. Si quieres recibir una serie de mensajes tendrás que utilizar mientras bucle de la siguiente manera:

$ mientras sea verdadero; hacer nc -u localhost 5000; hecho

8. Guardar un archivo de imagen de disco duro (comprimido) (por ejemplo, /dev/sdb) en un servidor remoto

En un servidor remoto:

$ nc -lp 5000 | sudo dd of=/backup/sdb.img.gz

En el host local donde disco duro:

$ dd if=/dev/sdb | gzip-c | nc servidor_remoto.com 5000

9. Restaurar el contenido de un disco duro desde un archivo de imagen comprimido guardado en un servidor remoto

En host local:

$ nc -lp 5000 | gunzip-c | sudo dd of=/dev/sdb

En el servidor remoto donde se almacena el archivo imagen de duro disco (por ejemplo, /backup/sdb.img.gz):

$ gato /copia de seguridad/sdb.img.gz | nc my_local_host.com 5000

10. Transferir una página web estática similar a un servidor web

Ejecute el siguiente comando para iniciar un servidor web que sirva una página web llamada test.html a los clientes que se conectan en el puerto 8000.

$ mientras sea verdadero; hacer nc -lp 8000< test.html; done

Ahora verifique la disponibilidad de la página web navegando con su navegador web a: http:// :8000/prueba.html. Tenga en cuenta que para utilizar el puerto del servidor web estándar número 80, deberá ejecutar nc con privilegios de usuario raíz siguiente forma:

$ mientras sea verdadero; haz sudo nc -lp 80< test.html; done

11. Organización de un chat inseguro entre dos nodos

En el primer nodo (192.168.233.203):

$ nc -lp 5000

En el segundo nodo:

$nc 192.168.233.203 5000

Después de ejecutar los dos comandos anteriores, todos los caracteres escritos en la ventana de terminal de cualquiera de los nodos aparecerán en la ventana de terminal del otro nodo.

12. Lanzamiento de un "shell de comando remoto" que le permite ejecutar comandos arbitrarios en un host remoto mientras trabaja con un host local

En el host remoto (192.168.233.208):

$ nc -lp 5000 -e /bin/bash

En host local:

$nc 192.168.233.208 5000

Después de ejecutar el comando anterior en el host local, podrá ejecutar cualquier comando en el host remoto a través de la ventana de terminal del host local. Los comandos se ejecutarán en el host remoto y la salida de estos comandos aparecerá en la ventana de terminal del host local. Este enfoque se puede utilizar para crear una puerta trasera en un host remoto.

13. Cree un proxy web para un sitio web específico (por ejemplo, google.com)

$ mkfifo proxypipe $ while verdadero; hacer nc -l 5000 0 canalización proxy; hecho

Los comandos anteriores crean una tubería con nombre llamada proxypipe y usan la utilidad nc para redirigir todas las conexiones TCP en el puerto localhost 5000 a http://www.google.com a través de una tubería bidireccional. Después de ejecutar estos comandos, podrá acceder página de inicio buscador sistemas de google al entrar en Barra de dirección dirección del navegador web http://127.0.0.1:5000.

14. Cree un proxy SSL para un sitio web específico (por ejemplo, google.com)

$ mkfifo canal proxy $ mkfifo canal proxy2 $ nc -l 5000 -k > canal proxy< proxypipe2 & $ while true do; openssl s_client -connect www.google.com:443 -quiet < proxypipe >proxypipe2; hecho

Los comandos anteriores le permiten usar la utilidad nc para crear un servidor proxy que admita protocolo SSL, que le permite establecer conexiones con el sitio web google.com.

15. Transmita un archivo de video desde el servidor y visualícelo con mplayer en la máquina del cliente

En el servidor de transmisión de video (192.168.233.208):

$ gato video.avi | nc -l 5000

En el sistema cliente:

$nc 192.168.233.208 5000 | mplayer -vo x11 -cache 3000 -

16. Aceptar conexiones TCP en un puerto específico usando una dirección IPv6

Los siguientes comandos permiten que la utilidad nc use una dirección IPv6 al aceptar conexiones en un puerto TCP. Esto puede ser necesario en el proceso de prueba de la corrección de la configuración de direccionamiento IPv6 en la red.

$ nc -6 -l 5000 $ sudo netstat -nap | grep 5000 tcp6 0 0:::5000:::* ESCUCHAR 4099/nc

Si te ha gustado este artículo, compártelo con tus amigos:

¡Hola querido lector X!

Creo que este dibujo se puede llamar una mini-prueba "¿Eres un hacker?". intenta decir eso
significa este gracioso gatito. Bueno, si aún surgen dificultades, sepa que frente a usted está lo más querido de todas las personas avanzadas, de una forma u otra.
relacionado con la Red, y su nombre es Netcat.

Netcat es una utilidad que le permite leer y transmitir datos a través de la red
conexiones En otras palabras, Netcat te permite conectarte a cualquier cosa y hacer cualquier cosa. Netcat es absolutamente autosuficiente, con un uso adecuado puede reemplazar cualquier herramienta de software, incluso conocido por usted
Apache. Entonces, en el mismo versión sencilla Netcat le permite crear TCP y Conexiones UDP desde cualquier a cualquier puerto, puede "escuchar" las conexiones entrantes (¡y puede decirle al "gatito" que espere las conexiones solo desde las direcciones e incluso los puertos que usted especificó!), puede escanear puertos, resolver consultas de DNS, enviar cualquier comando desde entrada estándar, ejecutar acciones predefinidas de antemano, en respuesta a la conexión que el "gatito" está escuchando, hacer un volcado hexadecimal de datos enviados y recibidos, y mucho, mucho más...

Aunque, creo que debería haberse dicho desde el principio que Netcat puede hacer todo; y las posibilidades de su uso están limitadas únicamente por el nivel de su conocimiento y su imaginación. Inicialmente, Netcat se concibió como una utilidad de Unix, pero como comprenderá, no podría haber entusiastas que no hubieran portado el "gatito" a Windows. Puede encontrar fácilmente ambas versiones en los motores de búsqueda de "Netcat". Pero las ventajas, por supuesto, van a Unix-oids, que, durante la compilación, puede modificar ligeramente el "gatito" y, por lo tanto, activar las "características adicionales" que están deshabilitadas de forma predeterminada.

Si alguna vez ha usado "ataques de software", o simplemente explotaciones, probablemente haya notado que más de la mitad de ellos usan Netcat de una forma u otra. Esto se debe principalmente al hecho de que Netcat nunca modifica los datos entrantes (así como los datos salientes) de ninguna manera, a diferencia de, por ejemplo, un cliente Telnet, que primero interpreta los datos entrantes y solo luego se los proporciona. Es por eso que Netcat se ha convertido en una poderosa herramienta para encontrar y explotar vulnerabilidades, gracias a la cual Bugtraq se ha reabastecido con cientos de nuevas publicaciones.

Pero, si la búsqueda de vulnerabilidades no es de su agrado, puede intentar usar Netcat como un navegador web o, por ejemplo, un cliente de correo electrónico; sobre todo porque en Internet Explorer-e y Outlook encontró agujeros "frescos", el viejo y bueno Unicode, je ... Además, nuestros chicos rusos se destacaron en este campo (¡El orgullo nacional está jugando!). Si está leyendo este artículo usando Explorer, vea cómo su "Burro"
lleno de agujeros .

Después de esto, cambiará a Netcat, no muy conveniente, pero
seguro... Y finalmente, ejemplos de uso "avanzado" de Netcat
(Unix):

  1. netcat como;
  2. Netcat como utilidad " "; estos a menudo se describen en X, pero en realidad solo envían solicitudes a los motores de búsqueda que conoces bien ... ¡Tu "gatito" también puede hacer este trabajo útil!;
  3. ¡Me gusta Netcat! ¡Haz que el proveedor se tome un descanso!

Preste atención, todo se hace en forma de scripts de shell, por lo que puede modificar cualquier cosa si es necesario.
Para sim quiero despedirme. ¡Lea los manuales y buena suerte con el aprendizaje de la icónica utilidad Netcat!

P.D./Private/: El sitio http://georgy.h1.ru/ está cerrado por mí. De una vez por todas. Gracias a todos los que fueron mis invitados.


Esta es la segunda publicación de una serie de artículos sobre las utilidades de Unix que debe conocer. En este artículo les presento la utilidad netcat o simplemente nc.

La utilidad Netcat a menudo se conoce como una especie de "navaja suiza", en juicio esta palabra. La funcionalidad de netcat es tan útil como la versatilidad y la manejabilidad de una navaja suiza de bolsillo probada. Algunas de sus características incluyen escaneo de puertos, transferencia de archivos, escucha de puertos y puede usarse como puerta trasera.

En 2006, netcat ocupó el cuarto lugar en las 100 empresas de servicios públicos. Seguridad de la red", así que ella es definitivamente la herramienta para saber.

como usar nc

Si recuerdas, dije que netcat es la navaja suiza. ¿Qué sería de este cuchillo si no pudiera usarse como un cuchillo normal? Esta es la razón por la que se puede usar netcat en lugar de telnet normal:

$nc www.google.com 80

En realidad, es más conveniente que telnet normal porque puede finalizar la conexión en cualquier momento presionando Ctrl+C y maneja datos binarios como de costumbre (sin secuencias de escape, nada).

Puede agregar la opción "-v" para mostrar los resultados de las acciones con más detalle y la opción (-vv) para obtener estadísticas sobre cuántos bytes se transfirieron durante la sesión de conexión actual.

Netcat se puede utilizar como servidor. Si lo ejecuta como se muestra a continuación, escuchará en el puerto 12345 (en todas las interfaces):

$ nc -l -p 12345

Ahora, si se conecta al puerto 12345 de este host, lo que escriba se enviará al lado remoto, lo que nos dice que netcat se puede usar como servidor de chat. Ejecutar en una de las computadoras:

# En la computadora A con IP 10.10.10.10 $ nc -l -p 12345

Y conéctate a él desde otro:

# En la computadora B $ nc 10.10.10.10 12345

¡Ahora ambas partes pueden hablar!

¡Esta forma de hablar, donde ambas partes pueden hablar entre sí, hace posible usar nc para operaciones de E/S de red! Por ejemplo, puede enviar un directorio completo de una computadora a otra canalizando tar a través de nc en la primera computadora y redirigiendo la salida a otro proceso tar en la segunda.

Suponga que desea transferir archivos desde el directorio /data de la computadora A con IP 192.168.1.10 a la computadora B (con cualquier IP). Es sencillo:

# En la máquina A con IP 192.168.1.10 $ tar -cf - /data | nc -l -p 6666 # En la computadora B $ nc 192.168.1.10 6666 | tar-xf-

¡No olvide combinar la canalización con Pipe Viewer descrito en el artículo anterior para ver estadísticas sobre qué tan rápido es la transferencia!

Un único archivo se puede enviar de forma más sencilla:

# En la computadora A con IP 192.168.1.10 $ archivo cat | nc -l -p 6666 # En la máquina B $ nc 192.168.1.10 6666 > archivo

Incluso puede copiar y restaurar un disco completo usando nc:

# En la máquina A con IP 192.168.1.10 $ cat /dev/hdb | nc -l -p 6666 # En la computadora B $ nc 192.168.1.10 6666 > /dev/hdb

Nota: ¡La opción "-l" no se puede usar con "-p" en computadoras Mac! La solución es simplemente reemplazar “-l -p 6666? con “-l 6666?. Como aquí:

# ahora nc está escuchando en el puerto 6666 para computadoras Mac$ nc -l 6666

Un uso destacado de netcat es el escaneo de puertos. netcat no es mejor herramienta para tal trabajo, pero se las arregla (lo mejor, por supuesto, es nmap):

$ nc -v -n -z -w 1 192.168.1.2 1-1000 (DESCONOCIDO) 445 (microsoft-ds) abierto (DESCONOCIDO) 139 (netbios-ssn) abierto (DESCONOCIDO) 111 (sunrpc) abierto (DESCONOCIDO) 80 ( www) abierto (DESCONOCIDO) 25 (smtp): Se agotó el tiempo de conexión (DESCONOCIDO) 22 (ssh) abierto

La opción "-n" evita las búsquedas de DNS, "-z" no espera una respuesta del servidor y "-w 1? establece el tiempo de espera de la conexión en 1 segundo.

Otro uso no trivial de netcat es como proxy. Se pueden reenviar tanto el puerto como el host. Mira este ejemplo:

$ nc -l -p 12345 | www.google.com 80

Este comando inicia nc en el puerto 1234 y redirige todas las conexiones a google.com:80. Si ahora se conecta a esta computadora en el puerto 12345 y realiza una solicitud, encontrará que no recibe datos en respuesta. Esto es correcto porque no hemos configurado un canal bidireccional. Si agrega un segundo canal, recibirá sus datos en un puerto diferente:

$ nc -l -p 12345 | nc www.google.com 80 | nc -l -p 12346

Después de enviar una solicitud en el puerto 12345, reciba sus datos de respuesta en el puerto 12346.

Probablemente la característica más poderosa de netcat es ejecutar cualquier proceso como un servidor:

$ nc -l -p 12345 -e /bin/bash

La opción "-e" genera la ejecución de entrada y salida redirigida a través de un socket de red. Ahora, si se conecta al host en el puerto 12345, puede usar bash:

$ nc localhost 12345 ls -las total 4288 4 drwxr-xr-x 15 usuarios de pkrumins 4096 2009-02-17 07:47 . 4 drwxr-xr-x 4 usuarios de pkrumins 4096 2009-01-18 21:22 .. 8 -rw------- 1 usuarios de pkrumins 8192 2009-02-16 19:30 .bash_history 4 -rw-r- -r-- 1 usuarios de pkrumins 220 2009-01-18 21:04 .bash_logout ...

Las implicaciones son que nc es una herramienta popular de piratas informáticos y es muy fácil crear una puerta trasera con ella. En servidor linux puede ejecutar /bin/bash y en Windows cmd.exe y tener el control total en sus manos.

Eso es todo lo que quería decir. ¿Estás familiarizado con otros trucos útiles de netcat que no se tratan aquí?

¿Cómo instalar nc?

Si tiene Debian o un sistema basado en Debian como Ubuntu, haga lo siguiente:

$ sudo aptitude install netcat

Si tiene Fedora o un sistema basado en Fedora como CentOS, haga lo siguiente:

$ sudo yum instalar netcat

Si tiene Slackware, FreeBSD, NetBSD, Solaris o Mac, descargue las fuentes nc y haga:

$ tar -zxf nc-version.tar.gz $ cd nc-version $ ./configure && sudo make install

Otra forma de hacer esto en una Mac si tiene MacPorts:

$ puerto sudo instalar netcat

En Slackware, puede instalarlo como un paquete desde el directorio del paquete:

$ sudo installpkg nc-1.10-i386-1.tgz

Si tiene Windows, descargue el puerto de Windoze desde securityfocus.

El manual de utilidades se puede encontrar en man nc.

¡Disfruta tu tiempo con nc, hasta la próxima!

nc [-46bCDdhklnrStUuvZz] [-I longitud][-i intervalo][-O longitud][-PAG nombre_de_usuario_proxy][-pag Puerto de origen][-q segundos][-s fuente][-T palabra clave][-V mesa] [-w se acabó el tiempo][-X protocolo_proxy][-X dirección proxy[:puerto]] [destino] [puerto]

Opciones

-4 efectivo Carolina del Norte para usar direcciones IPv4 solamente.
-6 efectivo Carolina del Norte para usar direcciones IPv6 únicamente.
-b Permitir difusión.
-C Enviar como final de línea.
-D Habilite la depuración en el socket.
-d No intente leer desde stdin.
-h Imprima la ayuda de nc.
-I longitud Especifica el tamaño del búfer de recepción de TCP.
-i intervalo Especifica un intervalo de tiempo de retraso entre las líneas de texto enviadas y recibidas. Además, provoca un tiempo de retraso entre las conexiones a varios puertos.
-k efectivo Carolina del Norte para permanecer escuchando otra conexión después de que se complete su conexión actual. Es un error utilizar esta opción sin la -l opción.
-l Se usa para especificar que Carolina del Norte debe escuchar una conexión entrante en lugar de iniciar una conexión a un host remoto. Es un error utilizar esta opción junto con la -pag, -s, o -z opciones Además, cualquier tiempo de espera especificado con el -w se ignoran las opciones.
-norte No realice ninguna búsqueda de DNS o servicio en ninguna dirección, nombre de host o puerto especificado.
-O longitud Especifica el tamaño del búfer de envío de TCP.
-PAG nombre_de_usuario_proxy Especifica un nombre de usuario para presentar a un servidor proxy que requiere autenticación. Si no se especifica ningún nombre de usuario, no se intentará la autenticación. Actualmente, la autenticación de proxy solo es compatible con los proxies HTTP CONNECT.
-pag Puerto de origen Especifica el puerto de origen que debe usar nc, sujeto a restricciones de privilegios y disponibilidad.
-q segundos después de EOF en stdin, espere el número especificado de segundos y luego salga. Si los segundos son negativos, espere para siempre.
-r Especifica que los puertos de origen o destino deben elegirse aleatoriamente en lugar de secuencialmente dentro de un rango o en el orden en que los asigna el sistema.
-S Habilita la opción de firma RFC 2385 TCP MD5.
-s fuente Especifica el de la interfaz que se utiliza para enviar los paquetes. Para sockets de datagramas de dominio UNIX, especifica el archivo de socket temporal local que se creará y usará para que se puedan recibir los datagramas. Es un error utilizar esta opción junto con la -l opción.
-T palabra clave Cambie el valor de TOS de IPv4. palabra clave puede ser uno de crítico, inetcontrol, bajo costo, baja demora, control de red, rendimiento, fiabilidad, o uno de los puntos de código de DiffServ: ef, af11 ... af43, cs0 ... cs7; o un número en hexadecimal o decimal.
-t Causas Carolina del Norte para enviar respuestas RFC 854 DON"T y WON"T a solicitudes RFC 854 DO y WILL. Esto hace posible usar nc para secuencias de comandos de sesiones de telnet.
-T Especifica el uso de sockets de dominio UNIX.
-tu Utilice UDP en lugar de la opción predeterminada de TCP. Para sockets de dominio UNIX, use un socket de datagrama en lugar de un socket de flujo. Si se utiliza un socket de dominio UNIX, se crea un socket de recepción temporal en /tmp a menos que el -s se da la bandera.
-V mesa Establezca la tabla de enrutamiento que se utilizará. El valor predeterminado es 0.
-v Tener Carolina del Norte dar una salida más detallada.
-w se acabó el tiempo Las conexiones que no se pueden establecer o están inactivas se agotan después de segundos de tiempo de espera. El -w bandera no tiene ningún efecto en el -l opción, es decir nc escuchará para siempre en busca de una conexión, con o sin el -w bandera. El valor predeterminado es sin tiempo de espera.
-X protocolo_proxy Solicita que nc use el protocolo especificado cuando se comunica con el servidor proxy. Los protocolos admitidos son " 4 " (CALCETINES v.4), " 5 " (CALCETINES v.5) y " conectar" (proxy HTTPS). Si no se especifica el protocolo, se utiliza la versión 5 de SOCKS.
-X dirección_proxy[:puerto] Solicitudes que Carolina del Norte debe conectarse al destino usando un proxy en dirección proxy y puerto. Si puerto no se especifica, se utiliza el puerto conocido para el protocolo proxy (1080 para SOCKS, 3128 para HTTPS).
-Z Modo DCCP.
-z Especifica que nc solo debe buscar demonios de escucha, sin enviarles ningún dato. Es un error utilizar esta opción junto con la -l opción.

destino puede ser una dirección IP numérica o un nombre de host simbólico (a menos que el -norte se da la opción). En general, se debe especificar un destino, a menos que el -l se da la opción (en cuyo caso se utiliza el host local). Para sockets de dominio UNIX, se requiere un destino y es la ruta del socket para conectarse (o escuchar si el -l se da la opción).

port puede ser un entero único o un rango de puertos. Los rangos están en la forma nn-mm. En general, se debe especificar un puerto de destino, a menos que el -T se da la opción.

Modelo cliente/servidor

Es bastante simple construir un modelo cliente/servidor muy básico usando Carolina del Norte. En una consola, comience Carolina del Norte escuchando en un puerto específico para una conexión. Por ejemplo:

Nc-l 1234

nc ahora está escuchando en el puerto 1234 para una conexión. En una segunda consola (o una segunda máquina), conéctese a la máquina y al puerto que se está escuchando:

Nc 127.0.0.1 1234

Ahora debería haber una conexión entre los puertos. Todo lo que se escriba en la segunda consola se concatenará con la primera y viceversa. Después de establecer la conexión Carolina del Norte realmente no le importa qué lado se usa como 'servidor' y qué lado se usa como 'cliente'. La conexión se puede terminar usando un EOF (' ^D’).

No hay -C o -mi opción en netcat moderno, pero aún puede ejecutar un comando después de que se establezca la conexión redirigiendo los descriptores de archivo. Tenga cuidado aquí porque abrir un puerto y permitir que cualquier persona conectada ejecute un comando arbitrario en su sitio es PELIGROSO. Si realmente necesita hacer esto, aquí hay un ejemplo:

En el lado del 'servidor':

Rm-f /tmp/f; mkfifo /tmp/f gato /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f

En el lado del 'cliente':

nc host.ejemplo.com 1234

(solicitud de shell de host.example.com)

Comience usando Carolina del Norte para escuchar en un puerto específico, con la salida capturada en un archivo:

nc -l 1234 > nombre de archivo.fuera

Usando una segunda máquina, conéctese a la escucha Carolina del Norte proceso, alimentándolo con el archivo que se va a transferir:

nc host.ejemplo.com 1234< filename.in

Después de transferir el archivo, la conexión se cerrará automáticamente.

Hablando con los servidores

A veces es útil hablar con los servidores "a mano" en lugar de a través de una interfaz de usuario. Puede ayudar en la resolución de problemas, cuando sea necesario verificar qué datos envía un servidor en respuesta a los comandos emitidos por el cliente. Por ejemplo, para recuperar la página de inicio de un sitio web:

Imprimir "OBTENER/HTTP/1.0\r\n\r\n" | nc host.ejemplo.com 80

Tenga en cuenta que esto también muestra los encabezados enviados por La web servidor. Se pueden filtrar usando una herramienta como sed, si necesario.

Se pueden construir ejemplos más complicados cuando el usuario conoce el formato de las solicitudes requeridas por el servidor. Como otro ejemplo, se puede enviar un correo electrónico a un servidor SMTP usando:

Nc [-C] servidor local 25<< EOF HELO host.example.com MAIL FROM:< >RCPT A:< >DATOS Cuerpo del correo electrónico. . SALIR EOF

escaneo de puertos

Puede ser útil saber qué puertos están abiertos y ejecutando servicios en una máquina de destino. El -z La bandera se puede usar para decir Carolina del Norte para informar de puertos abiertos, en lugar de iniciar una conexión. Por lo general, es útil activar la salida detallada a stderr usando esta opción junto con -v opción.

Nc -zv host.example.com 20-30 ¡La conexión al puerto host.example.com 22 se realizó correctamente! ¡La conexión al puerto host.example.com 25 se realizó correctamente!

El rango de puertos se especificó para limitar la búsqueda a los puertos 20 - 30 , y se explora en orden creciente.

También puede especificar una lista de puertos para escanear, por ejemplo:

nc -zv host.example.com 80 20 22 nc: conectarse a host.example.com 80 (tcp) falló: Conexión rechazada nc: conectar a host.example.com 20 (tcp) falló: Conexión rechazada Conexión a host.example ¡Puerto .com exitoso!

Los puertos se escanean en el orden que usted dio.

Alternativamente, podría ser útil saber qué software de servidor se está ejecutando y qué versiones. Esta información suele estar contenida en los banners de saludo. Para recuperarlos, primero es necesario establecer una conexión y luego romper la conexión cuando se recuperó el banner. Esto se puede lograr especificando un pequeño tiempo de espera con el -w bandera, o tal vez emitiendo un comando "QUIT" al servidor:

Eco "SALIR" | nc host.example.com 20-30 SSH-1.99-OpenSSH_3.6.1p2 Discrepancia de protocolo. 220 host.example.com Receptor IMS SMTP Versión 0.84 Listo

Ejemplos

nc -p 31337 -w 5 host.ejemplo.com 42

Abre una conexión TCP al puerto 42 de host.ejemplo.com, utilizando el puerto 31337 como el puerto de origen, con un tiempo de espera de 5 segundos.

nc -u host.ejemplo.com 53 nc -x10.2.3.4:8080 -Xconnect -Pruser host.ejemplo.com 42

Lo mismo que el ejemplo anterior, pero esta vez habilitando la autenticación de proxy con el nombre de usuario " usuario" si el proxy lo requiere.

comandos relacionados

ifconfig- Ver o modificar la configuración de las interfaces de red.

En este artículo, analizaré la popular utilidad de red netcat y algunos trucos útiles para usarla.


Netcat es una utilidad de Unix que le permite establecer conexiones TCP y UDP, recibir datos desde allí y transmitirlos. A pesar de su utilidad y simplicidad, muchos no saben cómo usarlo y lo eluden injustamente.


Con esta utilidad, puede realizar algunos pasos al realizar pruebas de penetración. Esto puede ser útil cuando la máquina atacada no tiene (o llamará la atención) paquetes instalados, existen restricciones (por ejemplo, dispositivos IoT/Embedded), etc.


Qué se puede hacer con netcat:

  • Escanear puertos;
  • Puertos de reenvío;
  • Recopilar pancartas de servicio;
  • Puerto de escucha (enlace para conexión inversa);
  • Descargar y cargar archivos;
  • Salida de contenido HTTP sin procesar;
  • Crea una mini charla.

En general, al usar netcat, puede reemplazar parte de las utilidades de unix, por lo que esta herramienta puede considerarse una especie de combinación para realizar ciertas tareas.

Ejemplos prácticos

En muchos casos, si es necesario verificar un host en particular, usan telnet o sus propios servicios para identificar el host o el banner. Cómo puede ayudarnos netcat:

Comprobación de un puerto TCP abierto 12345

$ nc -vn 192.168.1.100 12345
nc: conexión a 192.168.1.100 12345 (tcp) falló: Conexión rechazada

$ nc -v 192.168.1.100 22
¡Conexión al puerto 192.168.1.100 22 exitosa!
SSH-2.0-OpenSSH

Escaneando puertos TCP con netcat:

$ nc -vnz 192.168.1.100 20-24

Con tal escaneo, no habrá conexión al puerto, sino solo el resultado de una conexión exitosa:


nc: connectx a 192.168.1.100 puerto 20 (tcp) falló: Conexión rechazada
nc: connectx a 192.168.1.100 puerto 21 (tcp) falló: Conexión rechazada
encontrado 0 asociaciones
encontrado 1 conexiones:
1: banderas=82
outif en0
origen 192.168.1.100 puerto 50168
horario de verano 192.168.1.100 puerto 22
información de clasificación no disponible
Información auxiliar de TCP disponible
¡La conexión al puerto 22 192.168.1.100 se realizó correctamente!
nc: connectx a 192.168.1.100 puerto 23 (tcp) falló: Conexión rechazada
nc: connectx a 192.168.1.100 puerto 24 (tcp) falló: Conexión rechazada

Escaneo de puertos UDP.

Se requieren privilegios de raíz para escanear puertos UDP con nmap. Si no están, en este caso también nos puede ayudar la utilidad netcat:


$ nc-vnzu 192.168.1.100 5550-5560
¡La conexión al puerto 192.168.1.100 5555 se realizó correctamente!

Envío de un paquete UDP

$ echo -n "foo" | nc -u -w1 192.168.1.100 161

Esto puede ser útil al interactuar con dispositivos de red.

Recepción de datos en el puerto UDP y salida de los datos recibidos

$ nc -u servidor local 7777

Después del primer mensaje, la salida se detendrá. Si necesita recibir varios mensajes, debe usar while true:


$ mientras sea verdadero; hacer nc -u localhost 7777; hecho

Transferencia de archivos. Usando netcat, puede recibir archivos y transferir archivos a un host remoto:


nc 192.168.1.100 5555< 1.txt
nc -lvp 5555 > /tmp/1.txt

Netcact como un servidor web simple.

Netcat puede actuar como un servidor web simple para mostrar páginas html.


$ mientras sea verdadero; hacer nc -lp 8888< index.html; done

Usando un navegador en: http://netcat host:8888/index.html. Para usar el puerto del servidor web estándar número 80, deberá ejecutar nc con privilegios de root:


$ mientras sea verdadero; haz sudo nc -lp 80< test.html; done

Chat entre nodos

En el primer nodo (192.168.1.100):


$ nc -lp 9000

En el segundo nodo:


$nc 192.168.1.100 9000

Después de ejecutar los comandos, todos los caracteres ingresados ​​en la ventana de terminal en cualquiera de los nodos aparecerán en la ventana de terminal del otro nodo.

caparazón inverso

Usando netcat, puede organizar un shell inverso conveniente:


nc -e /bin/bash -lp 4444

Ahora puede conectarse desde el host remoto:


$nc 192.168.1.100 4444

No debe darse por vencido si no hay ciertas herramientas, a menudo bastante engorrosas, a veces la tarea se puede resolver con medios improvisados.

Si nota un error, seleccione un fragmento de texto y presione Ctrl + Enter
COMPARTIR: