Introducción
En este proyecto, aprenderás a crear una shell inversa utilizando Python, lo que te permitirá controlar múltiples máquinas comprometidas, también conocidas como "bots". A diferencia de las shells tradicionales, una shell inversa inicia una conexión desde el bot hacia el controlador, permitiendo la gestión de hosts remotos incluso si están detrás de firewalls o NAT. Este método es ampliamente utilizado en prácticas de ciberseguridad para pruebas de penetración y para gestionar entornos controlados de manera segura.
Antes de profundizar en la implementación, es importante comprender los conceptos fundamentales detrás de nuestra aplicación de shell inversa, incluyendo la arquitectura cliente-servidor (C/S) y el Protocolo de Control de Transmisión (TCP).
La arquitectura C/S involucra a 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, permitiéndonos ejecutar comandos en ellos de forma remota.
Utilizaremos TCP para una comunicación fiable y orientada a la conexión entre el servidor y los clientes. TCP garantiza que los datos se entreguen con precisión 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 comprender la arquitectura cliente-servidor (C/S) y el Protocolo de Control de Transmisión (TCP) como 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 cliente 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 gestionar múltiples conexiones de clientes simultáneamente y alternar entre ellos para enviar comandos.
🏆 Logros
Al finalizar este proyecto, serás capaz de:
- Demostrar el dominio de los conceptos básicos del modelo cliente-servidor y TCP para una comunicación de red fiable.
- Implementar un servidor de shell inversa multicliente en Python.
- Crear scripts de cliente que puedan conectarse a un servidor remoto y ejecutar comandos enviados desde el servidor.
- Manejar múltiples conexiones y gestionar la comunicación con varios clientes en un entorno controlado.
- Aplicar experiencia práctica en programación de redes y comprender sus aplicaciones en ciberseguridad y gestión remota de sistemas.





