Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
rdpscan-BlueKeep — Uno scanner rapido per la vulnerabilità CVE-2019-0708 "BlueKeep". | Kitploit
Strumenti/GitHubGitHub/gh0st0ne/rdpscan-bluekeep
RicognizioneScanner di VulnerabilitàExploitRaccolta InformazioniSicurezza di RetePenetration Testing
GitHubgh0st0ne/rdpscan-bluekeep

rdpscan-BlueKeep

Uno scanner rapido per la vulnerabilità CVE-2019-0708 "BlueKeep".

Vedi Repository
127 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Windows download macOS download Linux download Follow

rdpscan per la vulnerabilità BlueKeep CVE-2019-0708

Questo è uno scanner rapido e sporco per la vulnerabilità CVE-2019-0708 in Microsoft Remote Desktop. Al momento, ci sono circa 900.000 macchine sulla Internet pubblica vulnerabili a questa falla, quindi molti si aspettano un worm imminente come WannaCry e notPetya. Pertanto, scansiona le tue reti e aggiorna (o almeno, abilita NLA) sui sistemi vulnerabili.

Questo è uno strumento a riga di comando. Puoi scaricare il codice 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 rifilato il codice per poter compilare facilmente su macOS e Windows, oltre ad aver aggiunto la capacità di scansionare più target.

Stato

Questo è solo di qualche giorno fa e sperimentale. Tuttavia, lo sto testando scansionando l'intera 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 di output migliorate, oltre a documentazione sul loro significato (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 qualche errore di rete
  • 2019-05-24 - Funziona su Linux e macOS, Windows ha qualche bug di compilazione
  • 2019-05-23 - Attualmente funziona su macOS con XCode

Utilizzo principale

Per scansionare una rete, eseguilo in questo modo:

root@kitploit:~
rdpscan 192.168.1.1-192.168.1.255

Questo produce uno di 3 risultati per ogni indirizzo:

  • SAFE - se il target è risultato aggiornato o almeno richiede CredSSP/NLA
  • VULNERABLE - se il target è stato confermato vulnerabile
  • UNKNOWN - se il target non risponde o c'è un qualche fallimento del protocollo

Quando non esiste nulla a un indirizzo IP target, le versioni precedenti stampavano il messaggio "UNKNOWN - connection timed out". Scansionando reti grandi, questo produce un sovraccarico di troppe informazioni su sistemi che non ti interessano. Pertanto, la nuova versione di default non produce questa informazione a meno che non aggiungi -v (verbose) sulla riga di comando.

Puoi aumentare la velocità di scansione di reti grandi incrementando il numero di worker:

root@kitploit:~
rdpscan --workers 10000 10.0.0.0/8

Tuttavia, sul mio computer, produce solo circa 1500 worker, a causa di limitazioni di sistema, indipendentemente da quanto alto configuri questo parametro.

Puoi aumentare ulteriormente la velocità utilizzandolo in combinazione con masscan, descritto nel secondo paragrafo sotto.

Interpretazione dei risultati

Ci sono tre risposte generali:

  • SAFE - significa che il target è probabilmente aggiornato 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 alcun modo, 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, 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 pensiamo che un target sia sicuro:

  • SAFE - Target appears patched Questo accade quando il target non risponde alla richiesta trigger. Significa che è un sistema Windows aggiornato, o un sistema che non era vulnerabile all'inizio, come Windows 10 o Unix.
  • SAFE - CredSSP/NLA required Questo significa che il target richiede prima l'autenticazione a livello di rete (NLA) 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 aggiornato. Tuttavia, gli hacker non possono proseguire oltre questo punto per sfruttare sistemi vulnerabili, quindi probabilmente sei "al sicuro". Tuttavia, quando appariranno exploit, utenti interni con nomi utente/password validi potranno sfruttare il sistema se non è aggiornato.
  • SAFE - not RDP Questo significa che il sistema non è RDP, ma ha qualche altro servizio che capita di usare questa stessa porta, e produce una risposta chiaramente non RDP. Esempi comuni sono HTTP e SSH. Nota che invece di un protocollo identificabile, un server può rispondere con un pacchetto RST o FIN. Questi sono 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 variazioni per sconosciuto

  • UNKNOWN - no connection - timeout Questa è di gran lunga la risposta più comune, e accade quando l'indirizzo IP target non dà alcuna risposta. Infatti, è così comune che quando si scansionano grandi intervalli di indirizzi, di solito viene omessa. Devi aggiungere il flag -v (verbose) per abilitarla.
  • UNKNOWN - no connection - refused (RST) Questa è di gran lunga la seconda risposta più comune, e accade quando il target esiste e risponde al traffico di rete, ma non sta eseguendo RDP, quindi rifiuta la connessione con un pacchetto TCP RST.
  • UNKNOWN - RDP protocol error - receive timeout Questa è la terza risposta più comune, e accade quando abbiamo stabilito con successo una connessione RDP, ma poi il server smette di rispondere. Ciò è dovuto a errori di rete e quando il sistema target è sovraccarico per qualche motivo. Potrebbero anche essere errori di rete dalla nostra parte, come quando sei dietro un NAT e lo sovraccarichi con troppe connessioni.
  • UNKNOWN - no connection - connection closed Questo significa che abbiamo stabilito una connessione (TCP SYN-ACK), ma poi la connessione viene immediatamente chiusa (con un RST o FIN). Ci sono molte ragioni per cui ciò accade, che non possiamo distinguere:
    • Sta eseguendo RDP, ma per qualche motivo chiude la connessione, probabilmente perché è a corto di risorse.
    • Non è RDP, e non gradisce la richiesta RDP che gli inviamo, quindi invece di inviarci un bel messaggio di errore (che innescherebbe SAFE - not RDP), chiude bruscamente la connessione.
    • Qualche dispositivo intermedio, come un IPS, firewall o NAT ha chiuso la connessione perché l'ha identificata come ostile, o ha esaurito le risorse.
    • Qualche altra ragione che non ho identificato, c'è un sacco di roba strana che succede quando scansiono Internet.
  • UNKNOWN - no connection - host unreachable (ICMP error) La rete remota segnala che l'host non è raggiungibile o non è attivo. Riprova più tardi se pensi che quell'host dovrebbe essere vivo.
  • UNKNOWN - no connection - network unreachable (ICMP error) C'è un errore di rete (temporaneo) all'estremità remota, riprova più tardi se credi che quella rete dovrebbe funzionare.
  • UNKNOWN - RDP protocol error Questo significa che si è verificata una corruzione nel protocollo RDP, o perché il lato remoto lo implementa in modo errato (non un sistema Windows), perché gestisce male un errore di rete temporaneo, o qualcos'altro.
  • UNKNOWN - SSL protocol error Da Windows Vista, RDP utilizza il protocollo STARTTLS per funzionare su SSL. Questo livello ha i suoi problemi come sopra, che includono la gestione errata di errori di rete sottostanti, o il tentativo di comunicare con sistemi che hanno una qualche incompatibilità. Se ricevi un messaggio di errore molto lungo qui (come SSL3_GET_RECORD:wrong version), è perché l'altra parte ha un bug in SSL, o la tua stessa libreria SSL che stai usando ha un bug.

Utilizzo con masscan

Questo strumento rdpscan è piuttosto lento, scansiona solo poche centinaia di target al secondo. Puoi invece usare masscan per accelerare le cose. Lo strumento masscan è circa 1000 volte più veloce, ma fornisce solo informazioni limitate sul target.

I passaggi sono:

  • Prima scansiona gli intervalli di indirizzi con masscan per trovare rapidamente gli host che rispondono sulla porta 3389 (o qualsiasi altra porta tu usi).
  • Secondo, alimenta l'output di masscan in rdpscan, in modo che scansiona solo target che sappiamo essere attivi.

Il modo semplice per eseguire questo è semplicemente combinarli sulla riga di comando:

root@kitploit:~
masscan 10.0.0.0/8 -p3389 | rdpscan --file -

Il modo in cui lo faccio io è in due passaggi:

root@kitploit:~
masscan 10.0.0.0/8 -p3389 > ips.txt
rdpscan --file ips.txt --workers 10000 >results.txt

Compilazione

La parte difficile è ottenere le librerie OpenSSL installate, e non in conflitto con altre versioni sul sistema. Su Debian Linux, faccio:

root@kitploit:~
$ sudo apt install libssl-dev

Una volta risolto quel problema, compili tutti i file .c insieme così:

root@kitploit:~
$ gcc *.c -lssl -lcrypto -o rdpscan

Ho messo un Makefile nella directory che fa questo, quindi probabilmente puoi fare semplicemente:

root@kitploit:~
$ make

Il codice è scritto in C, quindi serve un compilatore C installato, ad esempio facendo:

root@kitploit:~
$ sudo apt install build-essential

Errori comuni di compilazione

Questa sezione descrive gli errori di compilazione più ovvi.

root@kitploit:~
ssl.h:24:25: fatal error: openssl/rc4.h: No such file or directory

Questo significa che non hai gli header di OpenSSL installati, o non sono in un percorso. Ricorda che anche se hai i binari di OpenSSL installati, questo non significa che hai il pacchetto di sviluppo installato. Hai bisogno sia degli header che delle librerie installate.

Per installare queste cose su Debian, fai:

root@kitploit:~
$ sudo apt install libssl-dev

Per risolvere il problema del percorso, aggiungi un flag di compilazione -I/usr/local/include, o qualcosa di simile.

Un esempio di problema di linking è il seguente:

root@kitploit:~
Undefined symbols for architecture x86_64:
"_OPENSSL_init_ssl", referenced from:
    _tcp_tls_connect in tcp-fac73c.o
"_RSA_get0_key", referenced from:
    _rdssl_rkey_get_exp_mod in ssl-d5fdf5.o
"_SSL_CTX_set_options", referenced from:
    _tcp_tls_connect in tcp-fac73c.o
"_X509_get_X509_PUBKEY", referenced from:
    _rdssl_cert_to_rkey in ssl-d5fdf5.o

Ottengo questo su macOS perché ci sono più versioni di OpenSSL. Lo risolvo codificando i percorsi:

root@kitploit:~
$ gcc *.c -lssl -lcrypto -I/usr/local/include -L/usr/local/lib -o rdpscan

Secondo i commenti di altri, la seguente riga di comando potrebbe funzionare su macOS se hai usato Homebrew per installare le cose. Tuttavia, ottengo ancora gli errori di linking sopra, perché ho installato altri componenti OpenSSL che sono in conflitto.

root@kitploit:~
gcc $(brew --prefix)/opt/openssl/lib/libssl.a $(brew --prefix)/opt/openssl/lib/libcrypto.a -o rdpscan *.c

Esecuzione

La sezione sopra fornisce suggerimenti rapidi per eseguire il programma. Questa sezione fornisce un aiuto più approfondito.

Per scansionare un singolo target, passa semplicemente l'indirizzo del target:

root@kitploit:~
./rdpscan 192.168.10.101

Puoi passare indirizzi IPv6 e nomi DNS. Puoi passare più target. Un esempio potrebbe essere:

root@kitploit:~
./rdpscan 192.168.10.101 exchange.example.com 2001:0db8:85a3::1

Puoi anche scansionare intervalli di indirizzi, usando indirizzi IPv4 inizio-fine, o specifiche CIDR IPv4. Gli intervalli IPv6 non sono supportati perché sono troppo grandi.

root@kitploit:~
./rdpscan 10.0.0.1-10.0.0.25 192.168.0.0/16

Per impostazione predefinita, scansiona solo 100 target alla volta. Puoi aumentare questo numero con il parametro --workers. Tuttavia, non importa quanto alto imposti questo parametro, in pratica otterrai un massimo di circa 500-1500 worker in esecuzione contemporaneamente, a seconda del tuo sistema.

root@kitploit:~
./rdpscan --workers 1000 10.0.0.0/24

Invece di specificare i target sulla riga di comando, puoi caricarli da un file, usando il ben chiamato parametro --file:

root@kitploit:~
./rdpscan --file ips.txt

Il formato del file è un indirizzo, nome o intervallo per riga. Può anche consumare il testo generato da masscan. Gli spazi bianchi extra vengono rimossi, le righe vuote ignorate, e le righe di commento vengono ignorate. Un commento è una riga che inizia con il carattere #, o i caratteri //.

L'output viene inviato allo stdout dando lo stato di VULNERABLE, SAFE, o UNKNOWN. Potrebbero esserci ulteriori ragioni per ciascuno. Queste ragioni sono descritte sopra.

root@kitploit:~
211.101.37.250 - SAFE - CredSSP/NLA required
185.11.124.79 - SAFE - not RDP - SSH response seen
125.121.137.42 - UNKNOWN - no connection - refused (RST)
40.117.191.215 - SAFE - CredSSP/NLA required
121.204.186.182 - SAFE - CredSSP/NLA required
99.8.11.148 - SAFE - CredSSP/NLA required
121.204.186.114 - SAFE - CredSSP/NLA required
49.50.145.236 - SAFE - CredSSP/NLA required
106.12.74.155 - VULNERABLE - got appid
222.84.253.26 - SAFE - CredSSP/NLA required
144.35.133.109 - UNKNOWN - RDP protocol error - receive timeout
199.212.226.196 - UNKNOWN - RDP protocol error - receive timeout
183.134.58.152 - UNKNOWN - no connection - refused (RST)
83.162.246.149 - VULNERABLE - got appid

Puoi elaborare questo con comandi unix aggiuntivi come grep e cut. Per ottenere un elenco solo delle macchine vulnerabili:

root@kitploit:~
./rdpscan 10.0.0.0/8 | grep 'VULN' | cut -f1 -d'-'

Il parametro -dddd significa informazioni diagnostiche, dove più d aggiungi, più dettagli vengono stampati. Questo viene inviato a stderr invece che a stdout in modo da poter separare i flussi. Usando bash si fa così:

root@kitploit:~
./rdpscan --file myips.txt -ddd 2> diag.txt 1> results.txt

Informazioni diagnostiche

Aggiungendo il parametro -d si scaricano informazioni diagnostiche sulle connessioni su stderr.

root@kitploit:~
./rdpscan 62.15.34.157 -d

[+] [62.15.34.157]:3389 - connecting...
[+] [62.15.34.157]:3389 - connected from [10.1.10.133]:49211
[+] [62.15.34.157]:3389 - SSL connection
[+] [62.15.34.157]:3389 - version = v4.8
[+] [62.15.34.157]:3389 - Sending MS_T120 check packet
[-] [62.15.34.157]:3389 - Max sends reached, waiting...
62.15.34.157    - SAFE - Target appears patched

Su macOS/Linux, puoi reindirizzare stdout e stderr separatamente a file diversi nel modo usuale:

root@kitploit:~
./rdpscan --file ips.txt 2> diag.txt 1> results.txt

SOCKS5 e Tor lulz

Include anche il supporto SOCKS5:

root@kitploit:~
./rdpscan --file ips.txt --socks5 localhost --socks5port 9050

Peggiora i problemi di connessione, quindi ottieni molti più risultati "UNKNOWN".

Scarica lo strumento