
Suite completa di attacchi alle credenziali per test di sicurezza autorizzati — SSH, FTP, Web Login, Bruteforce, Dictionary attacks
⚠️ AVVISO LEGALE — Solo test di sicurezza AUTORIZZATI.
L'uso di questo strumento contro sistemi di cui non si è proprietari o per i quali non si dispone di esplicita autorizzazione scritta è illegale ai sensi del Computer Fraud and Abuse Act (USA), del Computer Misuse Act (UK) e delle leggi equivalenti in tutto il mondo. Vedi SECURITY.md.
CredAttack è una suite di test delle credenziali modulare e di livello produttivo per test di penetrazione autorizzati. Copre l'intero ciclo di vita dell'attacco alle credenziali:
| Fase | Capacità di CredAttack |
|---|---|
| Ricognizione | Database credenziali predefinite (200+ coppie), generazione intelligente di pattern derivati dal nome utente |
| Attacco | 17 attacker per protocollo, 6 modalità di attacco, campagne multi-target |
| Evasione | Rilevamento lockout, limitazione della velocità configurabile, jitter, rotazione dei proxy |
| Reporting | Log di audit JSONL, report HTML Jinja2, banner credenziali trovate + dump su file |
| Modalità | Comando | Descrizione |
|---|---|---|
| Dizionario | ssh, ftp, smb, … | Wordlist contro un singolo utente |
| Spray | spray | Una password su una lista di utenti (sicuro contro lockout) |
| Combo | combo | Ogni utente × ogni password |
| Smart | smart | Generazione di pattern derivati da nome utente/azienda |
| Predefinite | defaults | Prova oltre 200 credenziali predefinite note dei servizi |
| Multi-target | multi | Stesso attacco su una lista di host |
| Pipeline completo | full | Tutti i protocolli, un unico report |
| # | Protocollo | Modulo | Porta Predefinita | Note |
|---|---|---|---|---|
| 1 | SSH | ssh.py | 22 | paramiko, autenticazione chiave/password |
| 2 | FTP | ftp.py | 21 | Modalità attiva e passiva |
| 3 | HTTP Form | http_form.py | 80/443 | Rilevamento automatico 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 | Supporto 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-rilevamento rootDSE |
| 17 | Telnet | telnet.py | 23 | TCP grezzo |
| 18 | VNC | vnc.py | 5900 | Sfida-risposta DES grezza |
credattack.py ← shim sottile: `python credattack.py ...` da un checkout
│
├── credattack/cli.py ← CLI (Typer) — 8 sottocomandi per modalità di attacco; anche
│ lo script console `credattack` quando installato via pip
├── credattack/core/
│ ├── config.py ← Impostazioni Pydantic v2, override tramite variabili d'ambiente CREDATTACK_*
│ ├── engine.py ← AttackEngine (ThreadPoolExecutor + UI di avanzamento Rich)
│ ├── lockout.py ← LockoutDetector (finestra scorrevole, thread-safe)
│ ├── proxy.py ← ProxyRotator (round-robin, health-check, declassamento)
│ ├── mutator.py ← PasswordMutator (leet, stagionale, suffisso, keyboard-walk…)
│ ├── result.py ← Dataclass AttemptResult + SessionReport
│ ├── report.py ← Generatore di report HTML Jinja2
│ └── logger.py ← Logging Rich + writer di audit JSONL
│
├── credattack/protocols/
│ └── *.py ← 18 implementazioni ProtocolAttacker
│
├── credattack/data/
│ ├── default_creds.json ← 200+ coppie reali di credenziali predefinite
│ ├── smart_patterns.json ← 140+ modelli di password aziendali
│ └── wordlists/ ← Liste di password predefinite per servizio
│
└── tests/ ← 50+ test pytest (unit + mock dei protocolli)
# Clona e configura
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
# Controlla la versione
python credattack.py --version
# Dry-run (nessuna connessione effettuata — verifica le tue wordlist)
python credattack.py ssh -t 192.168.1.100 -u admin -P wordlists/common_passwords.txt --dry-run
# Attacco SSH a dizionario reale
python credattack.py ssh -t 192.168.1.100 -u admin -P /path/to/rockyou.txt
# Password spray (con limitazione di velocità, sicuro contro lockout)
python credattack.py spray -t 192.168.1.100 --protocol ssh -U users.txt -p "Summer2024!" --delay 30
# Modalità smart — genera pattern da nome utente + azienda
python credattack.py smart -t 192.168.1.100 --protocol ssh -u john.doe --company ACME
# Prova le credenziali predefinite dei servizi
python credattack.py defaults -t 192.168.1.100 --protocol mysql
# Campagna multi-target
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 # dipendenze core
make install-dev # + pytest-cov, ruff, mypy
pip install -e . # solo dipendenze core
pip install -e .[full] # + SMB/RDP/MySQL/MSSQL/Redis/MongoDB/WinRM/LDAP
pip install -e .[dev] # + pytest/ruff/mypy
credattack --version # script console, equivalente a `python credattack.py`
docker build -t credattack -f docker/Dockerfile .
docker run --rm credattack --help
# Monta le tue wordlist e raccogli l'output
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
python credattack.py [OPTIONS] COMMAND [ARGS]...
Options:
-V, --version Mostra la versione ed esce.
--help Mostra l'aiuto.