La herramienta Backdoor es un conjunto compacto de dos scripts en Python — server.py y backdoor.py — que demuestra técnicas básicas de control remoto de un sistema víctima mediante una shell inversa (reverse shell), transferencia de archivos y ejecución de comandos. El repositorio fue creado con fines educativos y de pentesting ético; su código abierto permite comprender rápidamente la mecánica de las conexiones por socket, la organización de un canal fiable y los intentos de reconexión persistente.
Propósito y escenarios de uso
El autor presenta el proyecto como un campo de entrenamiento para profesionales que estudian shells inversos, ejecución remota de comandos e intercambio de archivos al preparar equipos rojos o competencias CTF. En un contexto amplio, un backdoor es un mecanismo que evita la autenticación y permite obtener acceso administrativo oculto a un dispositivo o red. Herramientas similares son legítimas solo con permiso por escrito del propietario de la infraestructura; en otros casos su uso puede estar sujeto a la legislación penal.
Funciones clave
- Reverse shell: la iniciativa de la conexión parte de la máquina víctima, lo que ayuda a sortear NAT y cortafuegos.
- Ejecución remota de comandos: cualquier entrada en el servidor se traduce en llamadas a
subprocessen el cliente y devuelve STDOUT/STDERR por el socket. - Transferencia de archivos (upload/download) mediante serialización por bytes en JSON, lo que facilita la portabilidad entre plataformas.
- Persistencia: el script en la máquina víctima entra en un bucle infinito de reconexiones para intentar restaurar la sesión tras una pérdida de conexión.
- Interfaz CLI mínima: el operador obtiene una interfaz de comandos convencional con soporte para
cd,clear,quity cualquier comando del sistema.
Arquitectura e implementación
server.py escucha el puerto indicado (5555 por defecto) y recibe líneas JSON, analizándolas automáticamente para mostrarlas y enviar comandos. backdoor.py se ejecuta en la máquina objetivo, abre un socket TCP, codifica los resultados de los comandos en JSON y los envía de vuelta al servidor. El código está escrito exclusivamente con la biblioteca estándar de Python, lo que garantiza multiplataforma y ausencia de dependencias externas (100% Python en las estadísticas del repositorio).
Instalación y uso
- Configurar la IP: en ambos scripts hay que reemplazar
YOUR-IP-HEREpor la dirección del servidor. - Arranque: primero
python server.pyen la máquina del operador y luegopython backdoor.pyen la máquina víctima. - Comandos: se envían como texto; para salir se usa
quit, para transferir archivos —upload/download.
Seguridad y aspectos éticos
El autor subraya que el proyecto está destinado únicamente a uso educativo y puede ser ilegal si se aplica sin el consentimiento del propietario del sistema. Los backdoors dejados sin conocimiento del usuario representan una amenaza grave: permiten a un atacante eludir los mecanismos de defensa estándar y obtener acceso root. Por ello, al trabajar en ambiente de laboratorio es importante aislar la máquina de prueba y usar redes virtuales.
Ventajas y limitaciones
| Fortalezas | Debilidades |
|---|---|
| Código limpio y sencillo; fácil de modificar según las propias necesidades | Falta de cifrado del tráfico: los paquetes son visibles para IDS/IPS de inmediato |
| Soporte para transferencia de archivos y cambio de directorio | No incorpora mecanismos de escalada de privilegios ni de sigilo |
| Intentos persistentes de reconexión | Puerto/dirección fijados rígidamente; requiere edición manual |
| Emplea solo la biblioteca estándar → fácil de portar | Falta empaquetado (obfuscation) y técnicas de disfraz frente a antivirus |
Comparación con alternativas
- Meterpreter (Metasploit) ofrece migración dinámica de procesos, TLS integrado y módulos post-explotación adicionales, aunque pesa considerablemente más y depende de una base de exploits.
- Empire proporciona agentes PowerShell con evasión de AMSI, pero requiere un entorno Windows y es más complejo de desplegar.
- Backdoor resulta útil como código de referencia mínimo para aprender cómo, a partir de socket y subprocess, construir rápidamente una shell inversa funcional.
Recomendaciones de mejora
- Cifrar el tráfico (por ejemplo, mediante una capa TLS con
ssl.wrap_socket) — esto dificultará la detección en la red. - Añadir escalada de privilegios automática en vulnerabilidades específicas del sistema operativo.
- Empaquetar el cliente en un ejecutable (PyInstaller, Nuitka) e incorporar mecanismos de arranque diferido para aumentar la resistencia ante antivirus.
- Implementar un canal de control por HTTP/HTTPS (C2 sobre web) o mediante tunelización DNS para sortear redes con filtrado estricto.
Conclusión
Backdoor de Daniyal Khan es un ejemplo conciso de un backdoor en Python que permite a los principiantes entender de forma clara los principios de reverse shell, intercambio de datos y control remoto de un sistema. A pesar de las limitaciones (tráfico sin cifrar, falta de sigilo), su código fuente sirve como punto de partida conveniente para proyectos más complejos y ayuda a comprender mejor qué mecanismos de defensa son necesarios en una infraestructura productiva.