Ssh-audit: come analizzare cipher deboli, CVE e misconfigurazioni SSH

Scopri come usare ssh-audit per verificare la configurazione di server e client SSH, identificare algoritmi deboli, cipher obsoleti, versioni vulnerabili e finding utili per hardening o penetration test autorizzati.
- Pubblicato il 2026-03-31
- Tempo di lettura: 3 min
Ssh-audit analizza la configurazione di server e client SSH identificando algoritmi crittografici deboli, versioni vulnerabili, cipher obsoleti e misconfiguration. Non è un brute forcer — è lo strumento che ti dice se il server SSH usa algoritmi forzabili, se è vulnerabile a CVE note e se la configurazione rispetta gli standard di sicurezza.
Nel penetration testing, ssh-audit si usa nella fase di enumeration quando trovi porta 22 aperta: prima di tentare brute force, capisci cosa stai attaccando. Un server con diffie-hellman-group1-sha1 è significativamente più debole di uno con solo curve25519-sha256.
Kill chain: Reconnaissance / Vulnerability Assessment (MITRE ATT&CK T1595).
1️⃣ Setup e Installazione #
pip install ssh-audit --break-system-packagesO:
sudo apt install ssh-auditVerifica: ssh-audit --help. Versione: 3.2.0.
2️⃣ Uso Base #
ssh-audit 10.10.10.50Output:
# general
(gen) banner: SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.6
(gen) software: OpenSSH 8.9p1
(gen) compression: enabled (zlib@openssh.com)
# key exchange algorithms
(kex) curve25519-sha256 -- [info] safe
(kex) diffie-hellman-group14-sha256 -- [info] safe
(kex) diffie-hellman-group-exchange-sha256 -- [info] safe
# host-key algorithms
(key) ssh-ed25519 -- [info] safe
(key) rsa-sha2-512 -- [info] safe
# encryption algorithms
(enc) chacha20-poly1305@openssh.com -- [info] safe
(enc) aes256-gcm@openssh.com -- [info] safe
(enc) aes128-cbc -- [warn] using weak cipher mode
# mac algorithms
(mac) hmac-sha2-256-etm@openssh.com -- [info] safeOgni algoritmo è classificato: [info] safe, [warn], [fail].
3️⃣ Tecniche Operative #
Audit su porta non standard #
ssh-audit 10.10.10.50:2222Output JSON per report #
ssh-audit -j 10.10.10.50 > ssh_audit.jsonScan multipli host #
for host in $(cat ssh_hosts.txt); do
echo "=== $host ===" >> report.txt
ssh-audit "$host" >> report.txt 2>&1
doneAudit client SSH locale #
ssh-audit -cVerifica la configurazione del tuo client SSH.
4️⃣ Tecniche Avanzate #
Verifica CVE specifiche #
Ssh-audit include check per CVE note:
ssh-audit 10.10.10.50 2>&1 | grep -i "cve\|vuln"Policy compliance check #
ssh-audit -P /path/to/policy.txt 10.10.10.50Verifica la configurazione contro una policy predefinita.
Targeting specifico di versioni vulnerabili #
ssh-audit 10.10.10.50 2>&1 | grep "banner"OpenSSH < 8.5 → CVE-2023-38408 (PKCS#11). OpenSSH < 9.3p2 → CVE-2023-51385.
5️⃣ Scenari Pratici di Pentest #
Scenario 1: Audit rapido perimetrale #
for ip in $(cat ssh_targets.txt); do
echo "$ip: $(ssh-audit -j $ip 2>/dev/null | jq -r '.banner')"
doneTimeline: 2-3 sec per host.
Scenario 2: Trovare server con algoritmi deboli #
ssh-audit 10.10.10.50 2>&1 | grep -E "\[warn\]|\[fail\]"Output atteso: algoritmi marcati come weak/failed.
Scenario 3: Compliance audit su fleet #
for ip in $(cat all_ssh.txt); do ssh-audit -j "$ip" 2>/dev/null; done | jq -r 'select(.cves | length > 0) | .banner'6️⃣ Toolchain Integration #
Flusso: Masscan (porta 22) → Ssh-audit (config analysis) → Hydra/Medusa (brute force se appropriato) → SSH access
| Tool | Config audit | CVE check | Brute force | Compliance |
|---|---|---|---|---|
| Ssh-audit | Sì | Sì | No | Sì |
| Nmap ssh scripts | Limitato | Limitato | No | No |
| Hydra | No | No | Sì | No |
7️⃣ Attack Chain Completa #
Fase 1: Ssh-audit → OpenSSH 7.6 con algoritmi deboli (3 sec). Fase 2: CVE check → vulnerabile a username enum. Fase 3: Username enum → utenti validi (2 min). Fase 4: Password spray → accesso (5 min). Timeline: ~8 min.
8️⃣ Detection & Evasion #
Ssh-audit stabilisce una singola connessione SSH per il key exchange — traffico minimo e legittimo. Quasi impossibile da distinguere da una connessione SSH normale.
9️⃣ Performance & Scaling #
2-3 secondi per host. 100 host: 3-5 minuti in loop.
🔟 Tabelle Tecniche #
| Flag | Descrizione |
|---|---|
-j | Output JSON |
-c | Audit client |
-p port o :port | Porta custom |
-P policy | Policy check |
-l level | Livello dettaglio |
11️⃣ Troubleshooting #
| Problema | Fix |
|---|---|
| Connection refused | SSH non su quella porta |
| Timeout | Firewall filtra porta 22 |
12️⃣ FAQ #
Ssh-audit è rumoroso? No. Una singola connessione, nessun brute force.
Trova vulnerabilità exploitabili? Identifica CVE e weak config. L’exploit è tuo compito.
13️⃣ Cheat Sheet #
| Azione | Comando |
|---|---|
| Audit base | ssh-audit 10.10.10.50 |
| Porta custom | ssh-audit 10.10.10.50:2222 |
| JSON output | ssh-audit -j target |
| Client audit | ssh-audit -c |
| Solo warning/fail | ssh-audit target | grep -E "warn|fail" |
| Multi-host | for h in $(cat hosts.txt); do ssh-audit $h; done |
Disclaimer: Ssh-audit per security assessment autorizzato. Repository: github.com/jtesta/ssh-audit.
Vuoi supportare HackIta? Visita hackita.it/supporto per donazioni. Per penetration test professionali e formazione 1:1, scopri hackita.it/servizi.







