
NetExecモジュール:Windowsの標準的な脆弱性チェックをすべて1回のパスで実行(チェックのみ、エクスプロイトなし)
1つのNetExecモジュール。すべてのWindows脆弱性チェック。
coerce_plusのように、標準のチェックセット全体に対応 — そしてエクスプロイトは一切行いません。
vulnscan は NetExec (nxc) 用のユーザーモジュールです。標準の Windows 脆弱性チェックモジュールを読み込み、各ホストに対して1回のパスで実行します。
チェックを再実装することはありません。エクスプロイトも行いません。
| 実行すること | 実行しないこと |
|---|---|
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 | Print 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 スペックでインスタンス化されるため、互いに上書きされることはありません。LISTENER は決して転送されません。wdigest には常に ACTION=check が渡されます。
-o SKIP=zerologon でスキップしてください。wcc はノイズが多いうえ、RemoteRegistry と通信します。CVE チェックのみを希望する場合は -o SKIP=wcc でスキップしてください。-M coerce_plus -o LISTENER=<your-ip> を実行してください。vulnscan はそれを行いません。MIT © rvsh3ll