
Descoberta paralela de serviços SSH e auditor de segurança que varre qualquer porta, valida banners SSH e audita métodos de autenticação, criptografia fraca, vulnerabilidade Terrapin e chaves de host reutilizadas entre hosts e intervalos CIDR.
sshfinder é uma ferramenta rápida e confiável para descobrir serviços SSH abertos
em um ou vários alvos. Ela verifica portas TCP abertas e então confirma
quais delas realmente falam SSH — executando as duas etapas simultaneamente para
velocidade.
10.0.0.0/24) em uma única execução, ou carrega-os de um arquivo.connect — varredura TCP connect portátil, sem privilégios (padrão).syn — varredura SYN half-open via Scapy (mais rápida, requer root).--audit) — transforma a descoberta em
inteligência de superfície de ataque para pentesters: enumera métodos de autenticação aceitos
(sinalizando autenticação por senha), lista os algoritmos KEX/cipher/MAC/chave de host
e sinaliza os fracos/obsoletos, detecta Terrapin (CVE-2023-48795), e
correlaciona chaves de host compartilhadas entre alvos para revelar infraestrutura
clonada ou com balanceamento de carga.[SSH] / [not ssh]
para que uma porta aberta nunca seja confundida com uma SSH.host:port, para que fique sempre claro
a qual alvo cada resultado pertence ao verificar muitos hosts.--json, opcionalmente
gravado em um arquivo.git clone https://github.com/kabiri-labs/sshfinder.git
cd sshfinder
# Installs paramiko (recommended: enables the full --audit deep checks and
# --validate paramiko):
pip install -r requirements.txt
# Optional, only for half-open SYN scans (needs root):
pip install scapy>=2.5
A varredura connect principal, a validação de banner e as partes sem dependências do
--audit (inventário de algoritmos, sinalização de criptografia fraca, Terrapin) funcionam sem quaisquer
pacotes de terceiros; o paramiko desbloqueia impressões digitais de chave de host, enumeração de métodos de autenticação
e correlação de chaves compartilhadas.
Requer Python 3.9+.
python sshfinder.py [targets ...] [options]
Nota sobre varreduras lentas. Verificar o intervalo completo
1-65535contra um host com firewall ou inacessível é inerentemente lento: cada porta filtrada precisa aguardar o tempo limite. O indicador de progresso mostra que ainda está funcionando, e o Ctrl+C interrompe imediatamente. Para ir mais rápido, reduza as portas (ex.:-p 22,2222), diminua o tempo limite (-t 1) ou aumente a concorrência (-w).
auto seleciona a varredura SYN quando executado como root com Scapy instalado,
e, caso contrário, volta para a varredura connect sem privilégios.
Verifica um único host nas portas SSH comuns:
python sshfinder.py 192.168.1.1 -p 22,2222
Verifica uma sub-rede inteira e emite JSON:
python sshfinder.py 10.0.0.0/24 -p 22,2222 --json -o results.json
Verifica muitos alvos de um arquivo com uma varredura SYN rápida (como root):
sudo python sshfinder.py -iL targets.txt --scan-method syn
Valida estritamente o SSH com um handshake completo:
python sshfinder.py example.com -p 22 --validate paramiko
Audita a superfície de ataque SSH em uma sub-rede (métodos de autenticação, criptografia fraca, Terrapin, chaves de host compartilhadas):
python sshfinder.py 10.0.0.0/24 -p 22,2222 --audit
Exemplo de saída da auditoria:
=== 10.0.0.5 ===
open: 10.0.0.5:22
SSH 10.0.0.5:22 (SSH-2.0-OpenSSH_7.4)
host key: ssh-ed25519 SHA256:T/ZM4jOL4amTsO5K3AaCdg2...
auth: publickey, password [!] password auth enabled
[!] Terrapin (CVE-2023-48795): VULNERABLE
[!] weak ciphers: aes128-cbc
Shared SSH host keys (possible shared/cloned hosts):
SHA256:T/ZM4jOL4amTsO5K3AaCdg2...
-> 10.0.0.5:22, 10.0.0.9:22
O inventário de algoritmos, a sinalização de criptografia fraca e a verificação de Terrapin funcionam sem
dependências. Impressões digitais de chave de host, enumeração de métodos de autenticação e correlação de chaves
compartilhadas usam Paramiko (pip install paramiko).
pip install -r requirements-dev.txt
pytest
Verifique apenas sistemas que você possui ou para os quais tem autorização explícita para testar. Varreduras não autorizadas podem ser ilegais na sua jurisdição.
| Option | Description |
|---|
targets | Um ou mais IPs, hostnames ou redes CIDR. |
-iL, --target-file FILE | Lê alvos de um arquivo (um por linha, comentários # permitidos). |
-p, --ports SPEC | Portas a verificar, ex.: 22,80,1000-2000 (padrão: 1-65535). |
--scan-method {auto,connect,syn} | Back-end de varredura (padrão: auto). |
--validate {banner,paramiko,none} | Estratégia de validação SSH (padrão: banner). |
--audit | Audita cada serviço SSH (algoritmos, chave de host, métodos de autenticação, Terrapin, correlação de chaves compartilhadas). |
-t, --timeout SECONDS | Tempo limite por conexão (padrão: 2.0). |
-w, --workers N | Sondas simultâneas por host (padrão: 200). |
--host-concurrency N | Hosts verificados em paralelo (padrão: 16). |
-r, --retries N | Tentativas para sondas com tempo esgotado (padrão: 0). |
--json | Emite resultados como JSON. |
-o, --output FILE | Escreve resultados em um arquivo em vez de stdout. |
--no-progress | Desativa o indicador de progresso ao vivo. |
-v | Registro detalhado (debug). |
-q, --quiet | Suprime o progresso e o registro informativo. |