
Uno scanner Python per PrintNightmare (CVE-2021-34527). Scansiona intere sottoreti per host vulnerabili alla RCE PrintNightmare.
Un CVE-2021-34527 (aka PrintNightmare) scanner Python. Ti permette di scansionare intere sottoreti per il PrintNightmare RCE (non il LPE) e genera un report CSV con i risultati. Verifica la sfruttabilità tramite MS-PAR e MS-RPRN.
Questo strumento ha versioni "disarmate" degli exploit Python, non sfrutta effettivamente gli host ma utilizza le stesse chiamate RPC vulnerabili usate durante lo sfruttamento per determinare se gli host sono vulnerabili.
Aggiornamento 7 luglio 2021: Questo controlla anche se gli host sono vulnerabili utilizzando il bypass UNC scoperto da @gentilkiwi
POV, tentativo di determinare se qualcosa è vulnerabile a PrintNightmare:

Al momento della scrittura, la quantità di variabili che determinano se una macchina è vulnerabile è pazzesca e confusa.
Questo strumento necessita attualmente del fork di Impacket di cube0x0 contenente l'implementazione MS-PAR necessaria per uno dei controlli. Questa modifica è stata inviata a Impacket in questa pull request.
Devi installare Impacket da git poiché contiene l'implementazione MS-PAR necessaria per uno dei controlli. (Entrambi i metodi di installazione sotto lo fanno automaticamente per te)
Docker:
git clone https://github.com/byt3bl33d3r/ItWasAllADream
cd ItWasAllADream && docker build -t itwasalladream .
docker run -it itwasalladream -u user -p password -d domain 192.168.1.0/24
Installazione per sviluppatori richiede Poetry:
git clone https://github.com/byt3bl33d3r/ItWasAllADream
cd ItWasAllADream && poetry install && poetry shell
itwasalladream -u user -p password -d domain 192.168.1.0/24
usage: itwasalladream [-h] -u USERNAME [-p PASSWORD] -d DOMAIN [--timeout TIMEOUT] [--threads THREADS] [-v] [--csv-column CSV_COLUMN] target
PrintNightmare (CVE-2021-34527) scanner
positional arguments:
target Target subnet in CIDR notation, CSV file or newline-delimited text file
optional arguments:
-h, --help show this help message and exit
-u USERNAME, --username USERNAME
username to authenticate as (default: None)
-p PASSWORD, --password PASSWORD
password to authenticate as. If not specified will prompt. (default: None)
-d DOMAIN, --domain DOMAIN
domain to authenticate as (default: None)
--timeout TIMEOUT Connection timeout in secods (default: 30)
--threads THREADS Max concurrent threads (default: 100)
-v, --verbose Enable verbose output (default: False)
--csv-column CSV_COLUMN
If target argument is a CSV file, this argument specifies which column to parse (default: DNSHostName)
I used to read Word Up magazine!
Poiché lo sfruttamento richiede di essere autenticati ad Active Directory, è necessario fornire le credenziali. Se la password non viene fornita, verrà richiesto di inserirla.
Per impostazione predefinita utilizza 100 thread, è possibile aumentarli/diminuirli usando l'argomento -t.
Al termine, vedrai un file report_<timestamp>.csv nella tua directory corrente con i risultati.