
Suite completa de ataque de credenciales para pruebas de seguridad autorizadas — SSH, FTP, Inicio de sesión web, Fuerza bruta, Ataques de diccionario
⚠️ AVISO LEGAL — Solo pruebas de seguridad autorizadas.
Usar esta herramienta contra sistemas que no posees o para los que no tienes permiso escrito explícito es ilegal según la Computer Fraud and Abuse Act (EE. UU.), la Computer Misuse Act (Reino Unido) y leyes equivalentes en todo el mundo. Consulta SECURITY.md.
CredAttack es un conjunto de pruebas de credenciales modular y de nivel de producción para compromisos de pruebas de penetración autorizados. Cubre el ciclo de vida completo del ataque de credenciales:
| Fase | Capacidad de CredAttack |
|---|---|
| Reconocimiento | Base de datos de credenciales por defecto (200+ pares), generación inteligente de patrones derivados del nombre de usuario |
| Ataque | 17 atacantes de protocolo, 6 modos de ataque, campañas multi-objetivo |
| Evasión | Detección de bloqueo, limitación de velocidad configurable, jitter, rotación de proxies |
| Informes | Registro de auditoría JSONL, informe HTML Jinja2, banner de credenciales encontradas + volcado de archivos |
| Modo | Comando | Descripción |
|---|---|---|
| Diccionario | ssh, ftp, smb, … | Lista de palabras contra un usuario |
| Spray | spray | Una contraseña contra una lista de usuarios (seguro contra bloqueos) |
| Combo | combo | Cada usuario × cada contraseña |
| Inteligente | smart | Generación de patrones derivados del nombre de usuario/empresa |
| Por defecto | defaults | Probar más de 200 valores por defecto conocidos de servicios |
| Multi-objetivo | multi | Mismo ataque contra una lista de hosts |
| Pipeline completo | full | Todos los protocolos, un informe |
| # | Protocolo | Módulo | Puerto por Defecto | Notas |
|---|---|---|---|---|
| 1 | SSH | ssh.py | 22 | paramiko, autenticación por clave/contraseña |
| 2 | FTP | ftp.py | 21 | Modo activo y pasivo |
| 3 | Formulario HTTP | http_form.py | 80/443 | Detección automática de token CSRF |
| 4 | HTTP Basic | http_basic.py | 80 | RFC 7617 |
| 5 | HTTP Digest | http_digest.py | 80 | RFC 7616 |
| 6 | SMB | smb.py | 445 | impacket, NTLM |
| 7 | RDP | rdp.py | 3389 | impacket NLA |
| 8 | SMTP | smtp.py | 587 | STARTTLS |
| 9 | POP3 | pop3.py | 110 | Soporte APOP |
| 10 | IMAP | imap.py | 143 | STARTTLS |
| 11 | MySQL | mysql.py | 3306 | mysql-connector-python |
| 12 | MSSQL | mssql.py | 1433 | pymssql |
| 13 | Redis | redis_proto.py | 6379 | Comando AUTH |
| 14 | MongoDB | mongodb.py | 27017 | pymongo |
| 15 | WinRM | winrm.py | 5985 | NTLM, pywinrm |
| 16 | LDAP | ldap_proto.py | 389 | ldap3, auto-detección rootDSE |
| 17 | Telnet | telnet.py | 23 | TCP sin procesar |
| 18 | VNC | vnc.py | 5900 | Desafío-respuesta DES sin procesar |
credattack.py ← shim delgado: `python credattack.py ...` desde un checkout
│
├── credattack/cli.py ← CLI (Typer) — 8 subcomandos de modo de ataque; también el
│ script de consola `credattack` cuando se instala con pip
├── credattack/core/
│ ├── config.py ← Configuraciones Pydantic v2, anulaciones de variables de entorno CREDATTACK_*
│ ├── engine.py ← AttackEngine (ThreadPoolExecutor + interfaz de progreso Rich)
│ ├── lockout.py ← LockoutDetector (ventana deslizante, seguro para subprocesos)
│ ├── proxy.py ← ProxyRotator (round-robin, verificación de salud, degradación)
│ ├── mutator.py ← PasswordMutator (leet, estacional, sufijo, recorrido de teclado…)
│ ├── result.py ← Clases de datos AttemptResult + SessionReport
│ ├── report.py ← Generador de informes HTML Jinja2
│ └── logger.py ← Registro Rich + escritor de auditoría JSONL
│
├── credattack/protocols/
│ └── *.py ← 18 implementaciones de ProtocolAttacker
│
├── credattack/data/
│ ├── default_creds.json ← Más de 200 pares reales de credenciales por defecto
│ ├── smart_patterns.json ← Más de 140 plantillas de contraseñas empresariales
│ └── wordlists/ ← Listas de contraseñas por defecto por servicio
│
└── tests/ ← Más de 50 pruebas pytest (unitarias + mocks de protocolo)
# Clonar y configurar
git clone https://github.com/amibhai/credential-attacks-toolkit.git
cd credential-attacks-toolkit
python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
# Comprobar versión
python credattack.py --version
# Ejecución de prueba (sin conexiones — verifica tus listas de palabras)
python credattack.py ssh -t 192.168.1.100 -u admin -P wordlists/common_passwords.txt --dry-run
# Ataque de diccionario SSH real
python credattack.py ssh -t 192.168.1.100 -u admin -P /path/to/rockyou.txt
# Spray de contraseñas (con limitación de velocidad, seguro contra bloqueos)
python credattack.py spray -t 192.168.1.100 --protocol ssh -U users.txt -p "Summer2024!" --delay 30
# Modo inteligente — generar patrones a partir del nombre de usuario + empresa
python credattack.py smart -t 192.168.1.100 --protocol ssh -u john.doe --company ACME
# Probar valores por defecto del servicio
python credattack.py defaults -t 192.168.1.100 --protocol mysql
# Campaña multi-objetivo
python credattack.py multi --targets hosts.txt --protocol ssh -U users.txt -P passes.txt
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install --upgrade pip
pip install -r requirements.txt
make install # dependencias principales
make install-dev # + pytest-cov, ruff, mypy
pip install -e . # solo dependencias principales
pip install -e .[full] # + SMB/RDP/MySQL/MSSQL/Redis/MongoDB/WinRM/LDAP
pip install -e .[dev] # + pytest/ruff/mypy
credattack --version # script de consola, equivalente a `python credattack.py`
docker build -t credattack -f docker/Dockerfile .
docker run --rm credattack --help
# Monta tus listas de palabras y recoge la salida
docker run --rm \
-v $(pwd)/wordlists:/app/wordlists:ro \
-v $(pwd)/output:/app/output \
credattack ssh -t 192.168.1.100 -u admin -P wordlists/common_passwords.txt