
script de enumeração de usuários SSH baseado em diferenças de timing e respostas de autenticação. Explora o mesmo vetor que CVE-2018-15473 em versões vulneráveis do OpenSSH (≤ 7.7), embora também possa revelar padrões em configurações modernas.
script de enumeração de usuários SSH baseado em diferenças de timing e respostas de autenticação. Explora o mesmo vetor que CVE-2018-15473 em versões vulneráveis do OpenSSH (≤ 7.7), embora também possa revelar padrões em configurações modernas. Funciona em Python 3 + Paramiko e suporta:
Pré-leitura de banner para evitar erros de EOF/NoBanner.
Retries por tentativa e cooldown entre usuários (para evadir tarpits/MaxStartups).
Autotune de parâmetros (-m, -t) conforme o jitter do alvo.
⚠️ Uso Ético
Este script deve ser usado apenas em ambientes próprios ou com autorização explícita. O abuso contra sistemas externos sem permissão pode ser ilegal.
📖 Uso básico ./ssh_enum_py3.py -i -u users.txt -m <multiplier_ms> -t
Exemplo: ./ssh_enum_py3.py -i 149.210.234.234 -u users.txt -m 5000 -t 8
⚙️ Opções -i, --ip Host/IP alvo (obrigatório) -p, --port Porta SSH (default: 22) -u, --userlist Arquivo com lista de usuários (um por linha)
-a, --autotune Calcula parâmetros recomendados (multiplier e threshold) -m, --multiplier Limiar em milissegundos acima da mediana local -t, --threshold Número mínimo de “votos” (tentativas que excedem o cutoff)
--attempts Tentativas por usuário (default: 12) --timeout Timeout de conexão/autenticação (s, default: 6) --banner-timeout Timeout para ler o banner SSH (s, default: 12) --delay Pausa entre tentativas de um mesmo usuário (s, default: 0.6) --cooldown-users Pausa entre usuários (s, default: 0) --retries Retentativas por tentativa em caso de erro de banner/transporte
🚀 Exemplos de uso
Saída:
[*] Autotune sugerido: multiplier (ms): 4986 threshold : 8 baseline_med : 3586 ms (avg=3596 ms) error mix : {'AuthFailed': 12}
Autotune + enumeração na mesma execução
./ssh_enum_py3.py -i 149.210.234.234 -a -u users.txt
--timeout 12 --banner-timeout 30 --delay 3 --cooldown-users 15
Enumeração direta com parâmetros fixos
./ssh_enum_py3.py -i 149.210.234.234 -u users.txt -m 4986 -t 8
--attempts 10 --timeout 12 --banner-timeout 30 --retries 5 --delay 3 --cooldown-users 15
📋 Interpretação dos resultados
likely VALID → Usuário provavelmente existe (excedeu cutoff em ≥ threshold tentativas).
likely INVALID → Usuário provavelmente não existe (respostas consistentes como “AuthFailed”).
errors={...} → resumo de códigos:
AuthFailed: resposta normal do SSH.
NoBanner: o servidor cortou antes do banner (tarpit, MaxStartups, WAF).
TransportError: erro de rede/tempo.