Consejos y trucos con el comando NetCat en Linux

Consejos y trucos con el comando NetCat en Linux

NetCat es una utilidad de red versátil que se puede usar para leer y escribir en conexiones TCP y UDP en puertos arbitrarios (como con otras utilidades utilizadas en Linux, los puertos por debajo de 1024 requieren privilegios de raíz/sudo). Por defecto, NetCat usa conexiones TCP, pero UDP se puede especificar con el -u bandera. NetCat se puede usar como servidor y cliente. Cuando se usa como servidor el -l La bandera se usa para escuchar una conexión. Similar al comando CAT, NetCat puede recibir información de Stdin y escribir a Stdout, lo que lo hace excelente para flujos de trabajo que involucran tuberías y redireccionamientos. El Carolina del Norte El comando se usa típicamente para evocar netcat para facilitar el uso.

En este tutorial aprenderá a hacer lo siguiente con Netcat:

  • Realice una solicitud HTTP para obtener una página web
  • Chatear con amigos en todas las máquinas
  • Copiar archivos entre máquinas
  • Realizar escaneo de puertos
  • Ver mensajes de NetCat en un navegador web
  • Crear y conectar a una carcasa inversa
Consejos y trucos con el comando NetCat en Linux

Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Independiente de la distribución
Software Netcat
Otro Privilegios de raíz para usar puertos por debajo de 1024
Convenciones # - Los comandos de Linux se ejecutarán con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
$ - Los comandos de Linux se ejecutarán como un usuario regular no privilegiado

Agarrando una página web

ADVERTENCIA
Las conexiones de NetCat no están encriptadas. Los siguientes ejemplos transmiten datos en el claro. No use NetCAT para transmitir datos confidenciales en redes no confiables como Internet y Wi-Fi público. Si necesita transmitir datos de forma segura, considere OpenSsh.

NetCat se puede utilizar para hacer conexiones arbitrarias con servicios de red. Como resultado, se puede usar para realizar solicitudes HTTP a un servidor web de manera muy similar a un navegador web. Sigamos adelante y tomemos la página de índice de Google.comunicarse.
Introducir el Carolina del Norte comando seguido de la anfitrión y el puerto quieres conectarte a.

$ nc google.com 80 

Ahora hagamos la solicitud HTTP. Escriba o copie/pegue lo siguiente y presione Entrar dos veces.

Obtener /índice.html http/1.1


Debería ver la salida similar a esta captura de pantalla.

Tomar el sitio web con NetCat

Charlar

Este ejemplo supone que tiene 2 computadoras en la misma red, con nombres de host host1 y anfitrión. Esta suposición también se hará en los siguientes ejemplos. Para crear una conexión de escucha de NetCat en host1, ingrese lo siguiente.

$ NC -LV 8888 

Esto escucha las conexiones en el puerto 8888. El -V El indicador especifica la salida detallada que le dará más información sobre las conexiones entrantes.

Ahora anfitrión ingresar:

$ nc host1 8888 

Notará que cualquier texto ingresado en el terminal en host1 se envía a la terminal en host2 y viceversa. Esto se puede usar como un chat adhoc entre dos usuarios en la misma red.

Transferencia de archivos

NetCat se puede usar para copiar un archivo de una máquina a otra. Supongamos que tiene un archivo llamado ncnotes.txt del que desea transferir host1 a anfitrión

En el host1, ingrese lo siguiente para crear el archivo y escuche una conexión entrante para transferirlo en el puerto 2222:

$ Echo "Estas son mis notas netcat"> ncnotes.txt $ nc -l 2222 < ncnotes.txt 

En host2 Ingrese lo siguiente para copiar/recibir el archivo y luego imprímalo a stdout para verificar que la transferencia de archivo fuera succionada.

$ nc host1 2222> ncnotes.txt $ cat ncnotes 

¿Qué pasa si desea transferir una carpeta completa en lugar de un solo archivo?? NetCat no es capaz de hacer esto por sí mismo, por lo que tendremos que utilizar el comando de alquitrán.

Ingrese lo siguiente en host1 para crear una carpeta llena con cinco archivos y luego use alquitrán para crear un archivo y colocarlo sobre la red con NetCat.

$ Mkdir archivos; Touch Files/1 ... 5 $ Tar -Cvz Archivos | NC -L 8888 

Ingrese lo siguiente en anfitrión Para transferir la carpeta y verificar que incluya los cinco archivos.

$ NC Host1 8888 | Tar -xvz $ LS archivos 

En host1 el -C El indicador se usa para crear el archivo que se meterá en Netcat, -V se usa para la salida verbosa para que tengamos retroalimentación visual que nos haga saber que esto está sucediendo y -z se utiliza para comprimir el archivo para que la transferencia de red sea más rápida. En nuestro ejemplo, la compresión no hace mucha diferencia desde el archivos La carpeta está llena de archivos vacíos, pero es posible que desee transferir directorios/archivos grandes, por lo que es bueno saberlo. En host2 el -X La bandera se usa para extraer el archivo que se tiene en cuenta desde Netcat, -V es para extracción verbosa, y -z es descomprimir el archivo.

Escaneo de puertos

NetCat se puede usar como un escáner de puerto rudimentario utilizando el -z bandera.

Supongamos que estás en host1 y quieres saber si un servidor SSH se está ejecutando en host2. Suponiendo que se esté ejecutando en el puerto predeterminado (22) y no hay acceso de bloqueo de firewall, puede usar el siguiente comando para ver si el servicio se está ejecutando.

$ nc -zv host2 22 

NetCat también puede escanear una gama de puertos para ver cuál de ellos está abierto si. Esto se puede utilizar para inferir qué servicios se está ejecutando esa máquina. Supongamos que estás en anfitrión y quieres ver si algún puerto entre 1 y 1024 están abiertos host1; puedes usar el siguiente comando.

$ NC -ZV HOST1 1-1024 

Dependiendo de la versión de NetCat que haya instalado en su sistema, el comando anterior informará solo los puertos abiertos o imprimirá una línea para cada puerto abierto y cerrado. Si el primero es el caso, entonces la salida es muy fácil de leer, pero si el segundo es el caso, la salida puede resultar difícil de analizar y el siguiente comando debe usarse en su lugar para que solo se muestren puertos abiertos.

$ NC -ZV Host1 1-1024 2> & 1 | Grep tuvo éxito 


Ver mensaje en el navegador

En host1 introduzca la siguiente. El -k La bandera mantiene la conexión viva para que pueda volver a conectarse nuevamente por la misma máquina o por otras máquinas. Sin esta bandera host1 dejará de escuchar más conexiones una vez que se realice la primera conexión.

$ Echo "Hola" | NC -LKV 5555 

En anfitrión Abra un navegador y navegue a Host1: 5555

Deberías ver las palabras hola mostrado en el navegador.

Caparazón

NetCat también se puede utilizar para establecer un shell inverso para administrar de forma remota una máquina sobre la red. Esto se hace con el -mi bandera. En este ejemplo, queremos conectarnos a un shell de Bash en anfitrión para administrarlo desde host1.

En host1 ingresar:

$ NC -LV 6666 

En anfitrión ingresar:

$ nc -v host1 6666 -e /bin /bash 

Ahora host1 Ingrese lo siguiente y será evidente que tenemos acceso remoto a la shell Bash en anfitrión.

$ hostname $ whoami $ ls 

Deberías ver el nombre de host para anfitrión, el nombre de usuario del usuario que inició Carolina del Norte en anfitrión y sus archivos. Muchas versiones de NetCat no incluyen el -mi opción debido a su potencial de abuso. Establecer una carcasa remota en una máquina que tenga una versión de NetCat que no incluya la opción -E requeriría realizar los mismos comandos NetCat en Host1, mientras usa un programa diferente para crear el shell inverso en anfitrión. Las soluciones para esto existen para Bash, Python, Perl, PHP y más.

Tutoriales de Linux relacionados:

  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Mastering Bash Script Loops
  • Cosas para instalar en Ubuntu 20.04
  • Ubuntu 20.04 trucos y cosas que quizás no sepas
  • Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 1
  • Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 3
  • Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 4
  • Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 2
  • Introducción a las tuberías con nombre en Bash Shell
  • Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 5