
Um Scanner Python para PrintNightmare (CVE-2021-34527). Escaneie sub-redes inteiras em busca de hosts vulneráveis ao RCE PrintNightmare.
Um scanner Python para CVE-2021-34527 (também conhecido como PrintNightmare). Permite-lhe varrer sub-redes inteiras em busca do RCE do PrintNightmare (não o LPE) e gera um relatório CSV com os resultados. Testa a explorabilidade sobre MS-PAR e MS-RPRN.
Esta ferramenta possui versões "desarmadas" dos exploits Python, ela não explora realmente os hosts, no entanto, usa as mesmas chamadas RPC vulneráveis usadas durante a exploração para determinar se os hosts são vulneráveis.
Atualização de 7 de julho de 2021: Isto também verifica se o(s) host(s) são vulneráveis usando o bypass UNC descoberto por @gentilkiwi
POV, tentando determinar se algo é vulnerável ao PrintNightmare:

No momento da escrita, a quantidade de variáveis que determinam se uma máquina é vulnerável é louca e confusa.
Esta ferramenta atualmente precisa do fork do Impacket de cube0x0 contendo a implementação do MS-PAR necessária para uma das verificações. Esta alteração foi submetida ao Impacket nesta pull request.
Precisa instalar o Impacket a partir do git, pois ele tem a implementação do MS-PAR necessária para uma das verificações. (Ambos os métodos de instalação abaixo fazem isso automaticamente por si)
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
Instalação para desenvolvimento requer 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!
Como o exploit requer que esteja autenticado no Active Directory, precisa fornecer credenciais. Se a password não for fornecida, será solicitado que a insira.
Por padrão, usará 100 threads, pode aumentar/diminuir estas usando o argumento -t.
Após terminar, verá um ficheiro report_<timestamp>.csv no seu diretório atual com os resultados.