Backdoor: herramienta ligera en Python para acceso oculto y formación en pentesting

Backdoor: herramienta ligera en Python para acceso oculto y formación en pentesting

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 subprocess en 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, quit y 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

  1. Configurar la IP: en ambos scripts hay que reemplazar YOUR-IP-HERE por la dirección del servidor.
  2. Arranque: primero python server.py en la máquina del operador y luego python backdoor.py en la máquina víctima.
  3. 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

  1. Cifrar el tráfico (por ejemplo, mediante una capa TLS con ssl.wrap_socket) — esto dificultará la detección en la red.
  2. Añadir escalada de privilegios automática en vulnerabilidades específicas del sistema operativo.
  3. Empaquetar el cliente en un ejecutable (PyInstaller, Nuitka) e incorporar mecanismos de arranque diferido para aumentar la resistencia ante antivirus.
  4. 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.

Alt text