一个 NetExec 模块。覆盖所有 Windows 漏洞检查。
类似 coerce_plus,但覆盖整套内置检查集——且不包含任何利用行为。
vulnscan 是 NetExec(nxc)的用户模块。它会加载内置的 Windows 漏洞检查模块,并对每台主机一次性运行全部检查。
它不会重新实现这些检查。它不会进行利用。
| 它会 | 它不会 |
|---|---|
调用 zerologon、ms17-010、smbghost、nopac、printnightmare、coerce_plus 等 | 重置 DC 机器密码 |
在没有监听器的情况下调用 coerce_plus | 通过 PetitPotam / PrinterBug 强制回连到你的 IP |
以 ACTION=check 调用 wdigest | 启用 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 | 打印后台处理程序可达 |
webdav | WebClient / DAV RPC(WebDAV 强制认证) |
coerce_plus | PetitPotam、PrinterBug、DFSCoerce、ShadowCoerce、MS-EVEN — 无监听器 |
nopac | noPac (CVE-2021-42278 / 42287) — 需要域用户 |
enum_av | 终端防护 |
enum_ca | 通过 RPC 枚举 ADCS CA |
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 | 域 / 企业管理员会话 |
有意不包含:凭据转储(lsassy、ntdsutil 等)、执行(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 spec(因此它们不会相互覆盖)。LISTENER 永远不会被转发。wdigest 始终会获得 ACTION=check。
-o SKIP=zerologon 跳过它。wcc 会产生大量噪声,并且会与 RemoteRegistry 通信。如果你只想要 CVE 检查,可以用 -o SKIP=wcc 跳过它。-M coerce_plus -o LISTENER=<your-ip>。vulnscan 不会这样做。MIT © rvsh3ll