⚠️ AVISO ÉTICO: Este proyecto es de uso estrictamente educativo y para investigación en ciberseguridad defensiva. El repositorio público en GitHub contiene únicamente componentes sanitizados, sin payloads operacionales. El autor no se responsabiliza por el uso indebido de este material fuera de entornos autorizados y controlados.
Este proyecto es un Remote Access Trojan (RAT) de investigación desarrollado íntegramente en Python, diseñado para funcionar sobre sistemas Windows 10. Implementa una arquitectura clásica de Comando y Control (C2) basada en comunicación TCP/IP, con el objetivo de estudiar, desde una perspectiva técnica ofensiva-defensiva, los vectores de ataque utilizados por malware real en entornos controlados de laboratorio.
El proyecto sigue una estrategia DevSecOps de doble repositorio: el entorno de desarrollo activo y el código fuente completo residen en GitLab (privado), mientras que GitHub actúa como vitrina pública y sanitizada del portafolio técnico. Esta separación garantiza que los componentes operacionales sensibles nunca se expongan públicamente, cumpliendo con principios de divulgación responsable.
Este proyecto parece estar orientado tanto a la investigación personal en malware como a la demostración de buenas prácticas de seguridad en el ciclo de desarrollo.
- Arquitectura C2 Cliente-Servidor implementada sobre sockets TCP/IP nativos de Python, permitiendo control remoto de sistemas objetivo en red.
- Payload del lado cliente (
src/payload/) diseñado para ejecución en máquinas Windows 10, encargado de establecer la conexión reversa hacia el listener. - Servidor Listener C2 (
src/server/) responsable de recibir conexiones entrantes, emitir comandos y gestionar las sesiones activas. - Ofuscación del payload mediante integración con PyArmor, dificultando el análisis estático y la detección por soluciones antivirus convencionales.
- Sanitización automatizada del repositorio público a través del script
publish_public.ps1(PowerShell), el cual elimina componentes sensibles antes de cada publicación en GitHub. - Pipeline CI/CD en GitLab con etapas de linting (
flake8), pruebas unitarias con mocks de red (pytest) y análisis estático de seguridad (bandit). - Estructura profesional de proyecto con separación por responsabilidades: código fuente, datos de laboratorio, diagramas de arquitectura y documentación técnica.
- Gestión segura de secretos mediante
.gitignoreestricto que excluye credenciales, claves.pem, configuraciones de red y archivos.env.
| Componente | Tecnología |
|---|---|
| Lenguaje principal | Python 3.12+ |
| Comunicación de red | Sockets TCP/IP (stdlib) |
| Ofuscación de payload | PyArmor |
| Empaquetado / compilación | PyInstaller |
| Linting de código | flake8 |
| Testing | pytest |
| Análisis de seguridad estático | bandit |
| CI/CD | GitLab Pipelines (.gitlab-ci.yml) |
| Automatización de publicación | PowerShell (publish_public.ps1) |
| Plataforma objetivo | Windows 10 |
| Diagramas de arquitectura | Draw.io / C4 Model |
| Licencia | Creative Commons BY-NC-SA 4.0 |
Requisito previo: Acceso al repositorio fuente completo en GitLab (el repositorio público en GitHub no contiene el payload operacional).
git clone https://gitlab.com/group-cybersecurity-lab/Troyano.git
cd Troyano# Windows
python -m venv venv
venv\Scripts\activate
# Linux/macOS (para desarrollo)
python3 -m venv venv
source venv/bin/activatepip install -r requirements.txtCopia el archivo de ejemplo y define tus variables de entorno:
cp .env.example .env
# Edita .env con los parámetros de red: HOST, PORT, etc.Todos los pasos de uso deben realizarse exclusivamente en entornos de laboratorio aislados (máquinas virtuales sin conexión a redes productivas), con autorización explícita sobre los sistemas involucrados.
python src/server/server.pyEl servidor quedará en escucha en el host y puerto definidos en la configuración, esperando conexiones entrantes del payload.
En la máquina objetivo de prueba (VM):
python src/payload/troyano.py# Usando scripts internos del laboratorio con PyArmor
pyarmor pack -e " --onefile" src/payload/troyano.py# Desde PowerShell en el entorno de desarrollo
.\scripts\publish_public.ps1# Linting
flake8 src/
# Tests con mocks
pytest tests/
# Análisis estático de seguridad
bandit -r src/ -o bandit-report.jsonTroyano/
│
├── data/ # Muestras de sesiones, volcados y capturas de laboratorio
│ └── sample_session.json # Única muestra pública incluida (resto en .gitignore)
│
├── diagrams/ # Diagramas de arquitectura del sistema
│ # (C4 Model, flujos de red, Draw.io)
│
├── docs/ # Documentación técnica, RFCs y manuales operativos
│
├── src/
│ ├── payload/ # Componente cliente (agente de infección)
│ │ └── troyano.py # Punto de entrada del payload — ELIMINADO en repo público
│ │
│ └── server/ # Componente servidor (Listener C2)
│ └── server.py # Listener TCP que gestiona sesiones remotas
│
├── tests/ # Suite de pruebas unitarias con mocks de red
│ # ELIMINADO en repo público (protect assertion methods)
│
├── configs/ # Plantillas de configuración de red y parámetros
│ # ELIMINADO en repo público (protect secrets)
│
├── scripts/
│ └── publish_public.ps1 # Script PowerShell de sanitización y publicación a GitHub
│ # ELIMINADO en repo público (protect DevOps logic)
│
├── .gitlab-ci.yml # Pipeline CI/CD: lint → test → SAST
│ # ELIMINADO en repo público
│
├── .gitignore # Exclusiones estrictas: venv, .env, *.pem, *.key, data/*
├── LICENSE # CC BY-NC-SA 4.0 — Copyright 2025 Sebastián Zhunaula
└── README.md # Documentación principal del proyecto
Nota: Las carpetas
tests/,configs/,scripts/ysrc/payload/son deliberadamente eliminadas del repositorio público en GitHub mediante el script de sanitizaciónpublish_public.ps1, como parte de la estrategia DevSecOps de divulgación responsable.
Este proyecto modela técnicas utilizadas por malware real de tipo RAT, y su estudio tiene un valor defensivo directo: comprender cómo operan estos vectores es fundamental para diseñar detecciones, reglas SIEM, y políticas de seguridad más efectivas.
- Comunicación sin cifrado explícito en capa de aplicación: La conexión TCP/IP entre payload y servidor podría ser detectada por inspección de tráfico (DPI). En entornos de investigación avanzados, se recomienda implementar cifrado TLS o túneles cifrados.
- Ejecución remota de comandos: La arquitectura C2 implica capacidad de ejecutar instrucciones arbitrarias en el sistema objetivo.
banditdetecta y alerta sobre el uso de primitivas comosubprocess,os.systemoevalen el análisis SAST. - Ofuscación con PyArmor: Reduce la superficie de detección estática, pero no garantiza indetectabilidad frente a soluciones EDR modernas con análisis de comportamiento dinámico.
- Gestión de secretos: El
.gitignoreexcluye explícitamente*.pem,*.key,.env, ycredentials.json, previniendo fugas de configuraciones de red sensibles.
- El código del payload (
src/payload/) nunca se publica en repositorios públicos. - Cada publicación hacia GitHub pasa por el proceso de sanitización automatizado y auditable (
publish_public.ps1). - Los datos de laboratorio reales (
data/*) están excluidos del repositorio, con excepción de una muestra de referencia inofensiva. - El análisis SAST con
bandites una etapa obligatoria y bloqueante en el pipeline de CI/CD.
Este proyecto sigue una arquitectura distribuida de doble repositorio, diseñada para separar de forma auditable el entorno de investigación activo del portafolio público:
GitHub actúa como punto de presentación técnica: contiene la documentación, diagramas de arquitectura y componentes de red inofensivos. Es la cara pública del proyecto.
GitLab es el entorno de laboratorio completo y la fuente de verdad: contiene el código fuente íntegro, la suite de tests, el pipeline CI/CD (flake8 → pytest → bandit) y los componentes operacionales que nunca se exponen públicamente.
👉 Código completo disponible en GitLab: https://gitlab.com/group-cybersecurity-lab/Troyano
Basado en la arquitectura del proyecto y las herramientas detectadas, estas son las mejoras técnicas que probablemente enriquecerían el laboratorio:
- Implementar cifrado TLS en el canal C2 para simular con mayor fidelidad el comportamiento de RATs modernos y hacer el tráfico de red indistinguible de conexiones legítimas HTTPS.
- Persistencia en el sistema objetivo: Incorporar módulos de persistencia (registro de Windows, tareas programadas) como vector de estudio defensivo.
- Módulo de captura de pantalla / keylogger: Ampliar las capacidades de demostración del payload para análisis de técnicas de exfiltración.
- Dashboard web para el servidor C2: Reemplazar la interfaz CLI del listener por un panel web (Flask/FastAPI) para una gestión visual de sesiones activas.
- Integración con VirusTotal API: Automatizar el análisis de detección del payload compilado contra motores antivirus como parte del pipeline CI/CD.
- Contenedorización del entorno de laboratorio: Usar Docker para empaquetar el servidor C2 y garantizar reproducibilidad del entorno de investigación.
- Reglas YARA y Sigma: Incluir reglas de detección derivadas del propio proyecto, documentando cómo detectar el RAT que se está construyendo.
Este proyecto está distribuido bajo la licencia Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).
Esto implica que:
- ✅ Puedes estudiar, compartir y adaptar el material.
- ❌ No puedes utilizarlo con fines comerciales.
- ❌ No puedes distribuir versiones modificadas bajo términos más restrictivos.
- ✅ Debes dar crédito al autor original.
Copyright © 2025 Sebastián Zhunaula (devsebastian44)
|
Sebastián Zhunaula Security Researcher · Python Developer · DevSecOps |
Este proyecto forma parte de un portafolio profesional en ciberseguridad ofensiva-defensiva, con enfoque en investigación de malware, arquitecturas C2 y prácticas modernas de DevSecOps aplicadas a entornos de alto riesgo.