Introducción
En este proyecto, aprenderás a crear un shell inverso utilizando Python, el cual te permitirá controlar múltiples máquinas comprometidas, también conocidas como "bots". A diferencia de los shells tradicionales, un shell inverso inicia una conexión desde el bot hacia el controlador, lo que permite la gestión de hosts remotos incluso detrás de firewall o NAT. Este método se utiliza ampliamente en prácticas de ciberseguridad para pruebas de penetración y gestión de entornos controlados de manera segura.
Antes de adentrarnos en la implementación, es importante entender los conceptos fundamentales detrás de nuestra aplicación de shell inverso, incluyendo la arquitectura cliente-servidor (C/S) y el Protocolo de Control de Transmisión (TCP).
La arquitectura C/S implica un cliente que solicita servicios y un servidor que los proporciona. En nuestro caso, los bots actúan como clientes que inician conexiones hacia nuestro servidor, lo que nos permite ejecutar comandos en ellos de manera remota.
Utilizaremos TCP para la comunicación confiable y orientada a conexiones entre el servidor y los clientes. TCP asegura que los datos se entregan de manera precisa y en orden, lo cual es esencial para ejecutar comandos y recibir respuestas sin errores.
👀 Vista previa

🎯 Tareas
En este proyecto, aprenderás:
- Cómo entender la arquitectura cliente-servidor (C/S) y el Protocolo de Control de Transmisión (TCP) como la base de las comunicaciones de red.
- Cómo configurar un servidor que escuche conexiones entrantes de múltiples clientes (bots).
- Cómo crear scripts de clientes que se conecten al servidor y ejecuten los comandos recibidos.
- Cómo implementar la funcionalidad de ejecución de comandos y recuperación de resultados en el servidor para interactuar con los clientes conectados.
- Cómo manejar simultáneamente múltiples conexiones de clientes y cambiar entre ellas para emitir comandos.
🏆 Logros
Después de completar este proyecto, podrás:
- Demostrar el dominio de los conceptos básicos del modelo cliente-servidor y TCP para una comunicación de red confiable.
- Implementar un servidor de shell inverso multi-cliente en Python.
- Crear scripts de clientes que puedan conectarse a un servidor remoto y ejecutar los comandos enviados por el servidor.
- Manejar múltiples conexiones y gestionar la comunicación con múltiples clientes en un entorno controlado.
- Aplicar la experiencia práctica en programación de redes y la comprensión de sus aplicaciones en ciberseguridad y gestión de sistemas remotos.