
Модуль NetExec: запуск всех стандартных проверок уязвимостей Windows за один проход (только проверка, без эксплуатации)
Один модуль NetExec. Все проверки уязвимостей Windows.
Как coerce_plus, но для всего набора стандартных проверок — и ничего, что эксплуатирует.
vulnscan — это пользовательский модуль для NetExec (nxc). Он загружает стандартные модули проверки уязвимостей Windows и запускает их за один проход против каждого хоста.
Он не переписывает проверки заново. Он не эксплуатирует.
| Он будет | Он не будет |
|---|---|
Вызывать zerologon, ms17-010, smbghost, nopac, printnightmare, coerce_plus, … | Сбрасывать пароль учётной записи компьютера DC |
Вызывать coerce_plus без слушателя | Принуждать PetitPotam / PrinterBug к вашему IP |
Вызывать wdigest с ACTION=check | Включать WDigest, RDP или удалённый UAC |
Выводить сводку [HIT] / [----] | Выгружать NTDS, lsass или сбрасывать файлы |
Удалённые заглушки NetExec (petitpotam, printerbug, dfscoerce, shadowcoerce) пропускаются — coerce_plus уже покрывает эту поверхность.
Имя файла должно быть vulnscan.py. NetExec отклоняет модуль, имя которого не совпадает с именем файла.
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
Или клонируйте:
git clone https://github.com/rvsh3ll/nxc-vulnscan.git
cp nxc-vulnscan/vulnscan.py ~/.nxc/modules/vulnscan.py
Требуется рабочая установка NetExec. Обёртка импортирует модули из nxc/modules/, поставляемых с вашей копией.
# 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
Проверки только для администраторов выполняются лишь тогда, когда у NetExec уже есть привилегированная сессия (Pwn3d!).
| Параметр | Значение |
|---|---|
CHECKS | Имена стандартных модулей через запятую. По умолчанию: все применимые |
SKIP | Имена через запятую, которые нужно пропустить |
LIST | Вывести встроенную таблицу проверок и остановиться |
LISTENER | Игнорируется. Этот модуль предназначен только для проверок |
Хосты, домены и учётные записи ниже являются заполнителями.
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 =================================
Дочерние модули сохраняют собственные имена в первом столбце. vulnscan выводит сводку в конце.
| Модуль | Проверка |
|---|---|
ms17-010 | EternalBlue |
smbghost | SMBGhost (CVE-2020-0796) |
zerologon | Zerologon (CVE-2020-1472) — только проверка, не устанавливает пустой пароль |
ntlm_reflection | Отражение NTLM (CVE-2025-33073) |
remove-mic | Drop-the-MIC (CVE-2019-1040) |
printnightmare | PrintNightmare |
spooler | Доступность Print Spooler |
webdav | WebClient / DAV RPC (WebDAV coerce) |
coerce_plus | PetitPotam, PrinterBug, DFSCoerce, ShadowCoerce, MS-EVEN — без слушателя |
nopac | noPac (CVE-2021-42278 / 42287) — требуется доменный пользователь |
enum_av | Защита конечных точек |
enum_ca | ADCS CA через RPC |
sccm-recon6 | Сайт / точка распространения SCCM |
ioxidresolver | Дополнительные сетевые интерфейсы |
Pwn3d!)| Модуль | Проверка |
|---|---|
ntlmv1 | LmCompatibilityLevel (разрешён NTLMv1) |
runasppl | LSA RunAsPPL |
uac | UAC EnableLUA |
install_elevated | AlwaysInstallElevated |
bitlocker | Состояние BitLocker |
wdigest | WDigest UseLogonCredential — только ACTION=check |
wcc | Конфигурация безопасности Windows |
presence | Сессии Domain / Enterprise Admin |
Намеренно не включены: дамп учётных данных (lsassy, ntdsutil, …), exec (web_delivery, met_inject), выгрузка файлов (slinky, scuffy) и модули включения/отключения (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
Каждый дочерний модуль создаётся из собственного дерева NetExec с уникальной спецификацией importlib (чтобы они не перезаписывали друг друга). LISTENER никогда не передаётся. wdigest всегда получает ACTION=check.
-o SKIP=zerologon, если хотите сначала получить остальную часть набора.wcc создаёт много шума и обращается к RemoteRegistry. Пропустите его с помощью -o SKIP=wcc, если вам нужны только проверки CVE.-M coerce_plus -o LISTENER=<your-ip> самостоятельно. vulnscan этого делать не будет.MIT © rvsh3ll