
NetExec 모듈: 모든 기본 Windows 취약점 검사를 한 번에 실행합니다 (검사 전용, 익스플로잇 없음)
하나의 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 | 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 | 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