
rdpscan per la vulnerabilità CVE-2019-0708 bluekeep
Questo è uno scanner rapido e sporco per la vulnerabilità CVE-2019-0708 in Microsoft Remote Desktop.
Al momento, circa 900.000 macchine su Internet pubblico sono vulnerabili a questa vulnerabilità,
quindi molti si aspettano presto un worm come WannaCry e notPetya. Perciò, scansiona le tue reti e
applica la patch (o almeno, abilita NLA) sui sistemi vulnerabili.
Questo è uno strumento a riga di comando. Puoi scaricare il sorgente e compilarlo
da solo, oppure scaricare uno dei binari precompilati per
Windows o macOS dal link sopra.
Questo strumento è basato interamente sulla patch di rdesktop da https://github.com/zerosum0x0/CVE-2019-0708.
Ho semplicemente tagliato il codice per poter compilare facilmente su macOS e Windows,
oltre ad aver aggiunto la possibilità di scansionare più target.
Stato
Questo è sperimentale e ha solo pochi giorni. Tuttavia, lo sto testando scansionando
l'intero Internet (con l'aiuto di masscan), quindi sto risolvendo molti problemi
abbastanza rapidamente. Puoi contattarmi su Twitter (@erratarob) per aiuto/commenti.
- 2019-05-38 - Descrizioni dei risultati migliorate, oltre a documentazione su cosa significano (vedi sotto).
- 2019-05-27 - Rilasciati binari per Windows e macOS (clicca sui badge sopra).
- 2019-05-26 - Risolti problemi di rete su Windows
- 2019-05-25 - Linux e macOS funzionano bene, Windows ha alcuni errori di rete
- 2019-05-24 - Funziona su Linux e macOS, Windows ha alcuni bug di compilazione
- 2019-05-23 - Attualmente in lavorazione su macOS con XCode
Utilizzo principale
Per scansionare una rete, esegui come segue:
rdpscan 192.168.1.1-192.168.1.255
Questo produce uno di 3 risultati per ogni indirizzo:
- SAFE - se il target è stato determinato come patchato o almeno richiede CredSSP/NLA
- VULNERABLE - se il target è stato confermato vulnerabile
- UNKNOWN - se il target non risponde o ha qualche fallimento di protocollo
Quando non c'è nulla a un indirizzo IP target, le versioni precedenti stampavano
il messaggio "UNKNOWN - connection timed out". Quando si scansionano grandi reti,
questo produce un sovraccarico di informazioni sui sistemi che non ti interessano.
Pertanto, la nuova versione per impostazione predefinita non produce queste
informazioni a meno che non si aggiunga -v (verbose) sulla riga di comando.
Puoi aumentare la velocità di scansione delle grandi reti incrementando
il numero di worker:
rdpscan --workers 10000 10.0.0.0/8
Tuttavia, sul mio computer produce solo circa 1500 worker, a causa
delle limitazioni di sistema, indipendentemente da quanto alto io configuri questo parametro.
Puoi aumentare ulteriormente la velocità usando questo in combinazione
con masscan, descritto nella seconda sezione sotto.
Interpretazione dei risultati
Ci sono tre risposte generali:
- SAFE - significa che il target è probabilmente patchato o altrimenti
non vulnerabile al bug.
- VULNERABLE: significa che abbiamo confermato che il target è vulnerabile
a questo bug, e che quando il worm colpirà, probabilmente verrà
infettato.
- UNKNOWN: significa che non possiamo confermare in un senso o nell'altro, di solito perché
il target non risponde o non sta eseguendo RDP, che è
la stragrande maggioranza delle risposte. Inoltre, quando i target sono
a corto di risorse o hanno problemi di rete, otterremo
molti di questi. Infine, gli errori di protocollo sono responsabili
di molti.
Mentre le tre risposte principali sono SAFE, VULNERABLE e UNKNOWN,
contengono testo aggiuntivo che spiega la diagnosi. Questa sezione
descrive le varie stringhe che vedrai.
SAFE
Ci sono tre motivi principali per cui riteniamo che un target sia sicuro:
- SAFE - Target appears patched
Questo accade quando il target non risponde alla richiesta di attivazione.
Significa che è un sistema Windows che è stato patchato,
o un sistema che non era vulnerabile in partenza, come Windows 10
o Unix.
- SAFE - CredSSP/NLA required
Significa che il target richiede prima l'Autenticazione a Livello di Rete prima
che la connessione RDP possa essere stabilita. Lo strumento non può superare questo punto, senza
credenziali legittime, quindi non può determinare se il target è stato patchato.
Tuttavia, gli hacker non possono proseguire oltre questo punto per sfruttare i sistemi vulnerabili,
quindi probabilmente sei "sicuro". Ma quando appariranno exploit, utenti interni con
username/password validi potranno sfruttare il sistema se non è patchato.
- SAFE - not RDP
Significa che il sistema non è RDP, ma ha qualche altro servizio che casualmente usa
questa stessa porta e produce una risposta chiaramente non RDP. Esempi comuni sono
HTTP e SSH. Nota però che invece di un protocollo identificabile, un server
può rispondere con un pacchetto RST o FIN. Questi vengono identificati come UNKNOWN
invece di SAFE.
VULNERABLE
Questo significa che abbiamo confermato che il sistema è vulnerabile al bug.
- VULNERABLE - got appid
C'è solo una risposta quando il sistema è vulnerabile, questa.
UNKNOWN
Ci sono un'infinità di varianti per UNKNOWN