
Herramienta de descubrimiento de servicios SSH en paralelo y auditor de seguridad que escanea cualquier puerto, valida banners SSH y audita métodos de autenticación, criptografía débil, vulnerabilidad Terrapin y claves de host reutilizadas entre hosts y rangos CIDR.
sshfinder es una herramienta rápida y fiable para descubrir servicios SSH abiertos en uno o varios objetivos. Escanea en busca de puertos TCP abiertos y después confirma cuáles hablan realmente SSH, ejecutando ambas fases de forma concurrente para mayor velocidad.
10.0.0.0/24) en una sola ejecución, o cárgalos desde un archivo.connect — escaneo de conexión TCP portátil, no requiere privilegios (por defecto).syn — escaneo SYN semiabierto mediante Scapy (más rápido, requiere root).--audit) — convierte el descubrimiento en inteligencia de superficie de ataque para pentesters: enumera los métodos de autenticación aceptados (marcando la autenticación por contraseña), lista los algoritmos KEX/cifrado/MAC/clave de host ofrecidos y marca los débiles u obsoletos, detecta Terrapin (CVE-2023-48795) y correlaciona claves de host compartidas entre objetivos para revelar infraestructura clonada o con balanceo de carga.[SSH] / [not ssh] para que un puerto abierto nunca se confunda con uno SSH.host:port, de modo que siempre queda claro a qué objetivo pertenece cada resultado al escanear muchos hosts.--json, opcionalmente escrito en un archivo.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
El escaneo connect principal, la validación de banner y las partes de --audit que no requieren dependencias (inventario de algoritmos, indicadores de criptografía débil, Terrapin) funcionan sin paquetes de terceros; paramiko habilita las huellas dactilares de clave de host, la enumeración de métodos de autenticación y la correlación de claves compartidas.
Requiere Python 3.9+.
python sshfinder.py [targets ...] [options]
Nota sobre escaneos lentos. Escanear el rango completo
1-65535contra un host con cortafuegos o inalcanzable es inherentemente lento: cada puerto filtrado debe esperar a que se agote el tiempo de espera. El indicador de progreso muestra que sigue funcionando, y Ctrl+C lo detiene rápidamente. Para ir más rápido, reduce los puertos (p. ej.-p 22,2222), baja el tiempo de espera (-t 1) o aumenta la concurrencia (-w).
auto selecciona el escaneo SYN cuando se ejecuta como root con Scapy instalado, y en caso contrario recurre al escaneo connect sin privilegios.
Escanea un solo host en los puertos SSH comunes:
python sshfinder.py 192.168.1.1 -p 22,2222
Escanea una subred completa y emite JSON:
python sshfinder.py 10.0.0.0/24 -p 22,2222 --json -o results.json
Escanea muchos objetivos desde un archivo con un escaneo SYN rápido (como root):
sudo python sshfinder.py -iL targets.txt --scan-method syn
Valida estrictamente SSH con un handshake completo:
python sshfinder.py example.com -p 22 --validate paramiko
Audita la superficie de ataque SSH en una subred (métodos de autenticación, criptografía débil, Terrapin, claves de host compartidas):
python sshfinder.py 10.0.0.0/24 -p 22,2222 --audit
Salida de auditoría de ejemplo:
=== 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
El inventario de algoritmos, los indicadores de criptografía débil y la comprobación de Terrapin funcionan sin dependencias. Las huellas dactilares de clave de host, la enumeración de métodos de autenticación y la correlación de claves compartidas usan Paramiko (pip install paramiko).
pip install -r requirements-dev.txt
pytest
Escanea únicamente sistemas que poseas o para los que tengas autorización explícita de pruebas. El escaneo no autorizado puede ser ilegal en tu jurisdicción.
| Opción | Descripción |
|---|
targets | Uno o más IPs, nombres de host o redes CIDR. |
-iL, --target-file FILE | Lee objetivos desde un archivo (uno por línea, se permiten comentarios #). |
-p, --ports SPEC | Puertos a escanear, p. ej. 22,80,1000-2000 (por defecto: 1-65535). |
--scan-method {auto,connect,syn} | Motor de escaneo (por defecto: auto). |
--validate {banner,paramiko,none} | Estrategia de validación SSH (por defecto: banner). |
--audit | Audita cada servicio SSH (algoritmos, clave de host, métodos de autenticación, Terrapin, correlación de claves compartidas). |
-t, --timeout SECONDS | Tiempo de espera por conexión (por defecto: 2.0). |
-w, --workers N | Sondas concurrentes por host (por defecto: 200). |
--host-concurrency N | Hosts escaneados en paralelo (por defecto: 16). |
-r, --retries N | Reintentos para sondas con tiempo de espera agotado (por defecto: 0). |
--json | Emite los resultados como JSON. |
-o, --output FILE | Escribe los resultados en un archivo en lugar de stdout. |
--no-progress | Desactiva el indicador de progreso en vivo. |
-v | Registro detallado (depuración). |
-q, --quiet | Suprime el registro de progreso e informativo. |