
Módulo NetExec: executa todas as verificações de vulnerabilidade padrão do Windows em uma única passagem (somente verificação, sem exploit)
Um módulo NetExec. Todas as verificações de vulnerabilidades do Windows.
Como o coerce_plus, para todo o conjunto de verificações padrão — e nada que explore.
vulnscan é um módulo de usuário para o NetExec (nxc). Ele carrega os módulos padrão de verificação de vulnerabilidades do Windows e os executa em uma única passagem contra cada host.
Ele não reimplementa as verificações. Ele não explora.
| Ele fará | Ele não fará |
|---|---|
Chamar zerologon, ms17-010, smbghost, nopac, printnightmare, coerce_plus, … | Redefinir a senha de máquina de um DC |
Chamar coerce_plus sem um listener | Coerção PetitPotam / PrinterBug para o seu IP |
Chamar wdigest com ACTION=check | Habilitar WDigest, RDP ou UAC remoto |
Imprimir um resumo [HIT] / [----] | Despejar NTDS, lsass ou deixar arquivos |
Os stubs removidos do NetExec (petitpotam, printerbug, dfscoerce, shadowcoerce) são ignorados — o coerce_plus já cobre essa superfície.
O nome do arquivo deve ser vulnscan.py. O NetExec recusa um módulo cujo nome não corresponda ao arquivo.
mkdir -p ~/.nxc/modules
curl -fsSL https://raw.githubusercontent.com/rvsh3ll/nxc-vulnscan/main/vulnscan.py \
-o ~/.nxc/modules/vulnscan.py
nxc smb -L | grep vulnscan
Ou clone:
git clone https://github.com/rvsh3ll/nxc-vulnscan.git
cp nxc-vulnscan/vulnscan.py ~/.nxc/modules/vulnscan.py
Precisa de uma instalação funcional do NetExec. O wrapper importa módulos de nxc/modules/ fornecidos com a sua cópia.
# unauthenticated / null session
nxc smb 10.0.0.10 -M vulnscan
# domain user
nxc smb 10.0.0.10 -u jdoe -p 'Password' -d corp.local -M vulnscan
# SOCKS pivot
proxychains -q nxc smb 10.0.0.10 -u jdoe -p 'Password' -M vulnscan
# subset
nxc smb 10.0.0.10 -M vulnscan -o CHECKS=ms17-010,smbghost,zerologon,coerce_plus
# skip the slow Zerologon brute
nxc smb 10.0.0.10 -M vulnscan -o SKIP=zerologon
# list checks, do not scan
nxc smb 10.0.0.10 -M vulnscan -o LIST=1
Verificações somente para administradores são executadas apenas quando o NetExec já possui uma sessão privilegiada (Pwn3d!).
| Opção | Significado |
|---|---|
CHECKS | Nomes de módulos padrão separados por vírgula. Padrão: todos os aplicáveis |
SKIP | Nomes separados por vírgula a serem ignorados |
LIST | Imprime a tabela de verificações integradas e encerra |
LISTENER | Ignorado. Este módulo é somente de verificação |
Os hosts, domínios e contas abaixo são placeholders.
SMB 10.0.0.10 445 DC01 [*] Windows Server 2016 Standard (name:DC01) (domain:CORP.LOCAL) (signing:True)
SMB 10.0.0.10 445 DC01 [+] CORP.LOCAL\jdoe:Password
VULNSCAN 10.0.0.10 445 DC01 [*] Running 14 stock check modules (no exploit)
VULNSCAN 10.0.0.10 445 DC01 [*] --- ms17-010 ---
VULNSCAN 10.0.0.10 445 DC01 [*] --- smbghost ---
VULNSCAN 10.0.0.10 445 DC01 [*] --- zerologon ---
ZEROLOGON 10.0.0.10 445 DC01 VULNERABLE
ZEROLOGON 10.0.0.10 445 DC01 Next step: https://github.com/dirkjanm/CVE-2020-1472
VULNSCAN 10.0.0.10 445 DC01 [*] --- coerce_plus ---
COERCE_PLUS 10.0.0.10 445 DC01 VULNERABLE, DFSCoerce
COERCE_PLUS 10.0.0.10 445 DC01 VULNERABLE, PetitPotam
COERCE_PLUS 10.0.0.10 445 DC01 VULNERABLE, Printerbug
VULNSCAN 10.0.0.10 445 DC01 [*] --- spooler ---
SPOOLER 10.0.0.10 445 DC01 Spooler service enabled
VULNSCAN 10.0.0.10 445 DC01 ======== vulnscan summary ========
VULNSCAN 10.0.0.10 445 DC01 [HIT] zerologon VULNERABLE
VULNSCAN 10.0.0.10 445 DC01 [HIT] coerce_plus VULNERABLE, DFSCoerce | VULNERABLE, PetitPotam
VULNSCAN 10.0.0.10 445 DC01 [HIT] spooler Spooler service enabled
VULNSCAN 10.0.0.10 445 DC01 [*] [----] ms17-010 no highlight (not vulnerable / no signal)
VULNSCAN 10.0.0.10 445 DC01 [*] [----] smbghost no highlight (not vulnerable / no signal)
VULNSCAN 10.0.0.10 445 DC01 =================================
Módulos filhos mantêm o próprio nome na primeira coluna. vulnscan imprime um resumo consolidado ao final.
| Módulo | Verificação |
|---|---|
ms17-010 | EternalBlue |
smbghost | SMBGhost (CVE-2020-0796) |
zerologon | Zerologon (CVE-2020-1472) — apenas verificação, não define uma senha vazia |
ntlm_reflection | Reflexão NTLM (CVE-2025-33073) |
remove-mic | Drop-the-MIC (CVE-2019-1040) |
printnightmare | PrintNightmare |
spooler | Print Spooler acessível |
webdav | WebClient / DAV RPC (coerção WebDAV) |
coerce_plus | PetitPotam, PrinterBug, DFSCoerce, ShadowCoerce, MS-EVEN — sem listener |
nopac | noPac (CVE-2021-42278 / 42287) — requer um usuário de domínio |
enum_av | Proteção de endpoint |
enum_ca | ADCS CA via RPC |
sccm-recon6 | Site / ponto de distribuição SCCM |
ioxidresolver | Interfaces de rede adicionais |
Pwn3d!)| Módulo | Verificação |
|---|---|
ntlmv1 | LmCompatibilityLevel (NTLMv1 permitido) |
runasppl | LSA RunAsPPL |
uac | UAC EnableLUA |
install_elevated | AlwaysInstallElevated |
bitlocker | Status do BitLocker |
wdigest | WDigest UseLogonCredential — apenas ACTION=check |
wcc | Configuração de segurança do Windows |
presence | Sessões de Domain / Enterprise Admin |
Não incluídos de propósito: dump de credenciais (lsassy, ntdsutil, …), exec (web_delivery, met_inject), transferência de arquivos (slinky, scuffy) e módulos de ativar/desativar (rdp, remote-uac).
nxc smb TARGET -M vulnscan
│
▼
~/.nxc/modules/vulnscan.py
│ importlib-load each stock module
▼
nxc/modules/ms17-010.py
nxc/modules/zerologon.py
nxc/modules/coerce_plus.py
...
│ on_login / on_admin_login
▼
per-check output + [HIT] summary
Cada filho é instanciado a partir da própria árvore do NetExec com uma especificação importlib exclusiva (para que não se sobreponham). LISTENER nunca é repassado. wdigest sempre recebe ACTION=check.
-o SKIP=zerologon quando quiser primeiro o restante do pacote.wcc é ruidoso e se comunica com o RemoteRegistry. Pule com -o SKIP=wcc se você quiser apenas as verificações de CVE.-M coerce_plus -o LISTENER=<your-ip>. O vulnscan não fará isso.MIT © rvsh3ll