永恒之蓝内网横向渗透:原理详解+telnet法渗透实践(CVE-2017-0144)

目录

一、渗透环境

二、永恒之蓝漏洞

三、攻击工具

四、渗透实战

第一步:在跳板机上部署并运行EW(EarthWorm)代理

第二步:在Kali上配置proxychains

第三步:在跳板机上执行漏洞利用

第四步:在Kali上建立隧道连接

五、攻击总结

第一阶段:搭建通道与配置 (Channel Establishment & Configuration)

第二阶段:远程漏洞利用 (Remote Exploitation)

第三阶段:载荷执行 (Payload Execution)

第四阶段:代理连接与控制 (Proxy Connection & Control)


本文讲解通过telnet方法对永恒之蓝漏洞靶机(**CVE-2017-0144)**进行渗透测试的完整流程。攻击者位于Kali攻击机,其目标是内网中一台存在"永恒之蓝"漏洞的Windows 7主机(10.100.10.233)。由于网络隔离,Kali无法直接访问该目标,但可以访问一台作为跳板的主机。攻击者通过利用跳板机上的权限,向目标发起MS17-010漏洞攻击。

一、渗透环境

  • Kali攻击机: 攻击发起点。

  • 跳板机 : 一个已被攻陷或由攻击者控制的中间系统,这是一台Windows机器10.23.28.3,且攻击者已获得最高权限)。它是KaLi通往内网的唯一桥梁。

  • 内网目标主机10.100.10.233Windows系统,存在MS17-010(永恒之蓝)漏洞。

  • 核心挑战 : Kali 不能直接与目标主机通信。传统的反向Shell(reverse shell)载荷会因为内网目标无法直接连回Kali而失败。正向Shell(bind shell)又因为Kali无法直连目标而无法使用。

二、永恒之蓝漏洞

永恒之蓝是由美国国家安全局(NSA)开发的网络攻击工具所利用的漏洞,主要针对微软 Windows 系统的 SMB(Server Message Block)协议。该漏洞于 2017 年被黑客组织 "影子经纪人" 公开,随后被用于 "想哭"(WannaCry)等大规模勒索病毒攻击,造成全球范围的网络安全事件。

特性类别 具体描述
官方编号 MS17-010
CVE 编号 CVE-2017-0144
漏洞本质 属于 SMBv1 协议的远程代码执行漏洞,攻击者可通过向目标系统发送特制的 SMB 数据包,触发缓冲区溢出,从而在目标系统中执行任意代码。
影响范围 主要影响未安装补丁的 Windows 系统,包括但不限于:Windows XP、Windows Vista、Windows 7、Windows Server 2003、Windows Server 2008 等;对已安装微软安全补丁(如 MS17-010)的系统无直接影响。
攻击方式 远程攻击,无需用户交互,攻击者可通过网络扫描识别存在漏洞的目标,发送恶意数据包即可触发漏洞;常被用于传播勒索病毒、木马程序或建立僵尸网络。
危害程度 极高,可导致目标系统被完全控制,数据被加密勒索、敏感信息泄露或系统瘫痪;2017 年 WannaCry 勒索病毒利用该漏洞在全球范围内攻击了医院、企业、政府机构等,造成重大损失。
修复方式 微软已发布安全补丁(MS17-010),用户需及时下载并安装对应系统的补丁;关闭不必要的 SMBv1 协议服务;启用防火墙等安全设备,限制外部对 SMB 端口(如 445 端口)的访问;定期更新操作系统和应用软件,提升系统安全性。
漏洞来源 最初由美国国家安全局(NSA)发现并开发为攻击工具,后因工具被黑客组织 "影子经纪人" 窃取并公开,导致漏洞被广泛利用。
技术原理 利用 SMBv1 协议在处理特定请求时的缓冲区溢出漏洞,攻击者通过构造恶意数据,使目标系统在拷贝数据时超出缓冲区容量,覆盖相邻内存区域,从而执行攻击者植入的恶意代码,获得系统控制权。

三、攻击工具

本文使用的攻击工具如下所示,主要包括7.exebind_8080.txt两个文件。

  • 7.exe : 这是一个专门针对Windows7系统的MS17-010漏洞利用程序。

  • bind_8080.txt : 这个文件包含了攻击的Shellcode(载荷)。

    • bind 关键字表明这是一个绑定载荷

    • 8080 是载荷将在目标主机上开启的端口号。

    • Shellcode的功能是在目标机器的8080端口上绑定一个SOCKs4/5代理服务

四、渗透实战

第一步:在跳板机上部署并运行EW(EarthWorm)代理

  • 上传工具 :将 ew_win32.exe 从Kali上传到跳板机(10.23.28.3)上。

  • 在跳板机上执行:在跳板机的命令行中运行ew_win32.exe -s ssocksd -l 12347命令:

    • -s ssocksd:参数指定EW运行模式为 ssocksd ,意思是创建一个SOCKS5代理服务器

    • -l 12347:参数指定代理服务器监听的端口为 12347

    • 执行成功后,跳板机就变成了一个SOCKS5代理服务器,等待接收来自Kali的代理请求。

第二步:在Kali上配置proxychains

  • 编辑proxychains配置文件:/etc/proxychains4.conf

  • 修改配置 :在配置文件的末尾 [ProxyList] 部分,注释掉原有的 socks4 127.0.0.1 9050,并添加新的一行:

    socks5 10.23.28.3 12347

  • socks5:指定代理协议为SOCKS5。

  • 10.23.28.3:指定代理服务器的IP地址,即我们的跳板机

  • 12347:指定代理服务器的端口,即EW监听的端口。

  • 保存并退出编辑器。

第三步:在跳板机上执行漏洞利用

**1、上传工具:**将 7.exe 从Kali上传到跳板机(10.23.28.3)上。

**2、跳板机上执行7.exe:**7.exe 10.100.10.233 bind_8080.txt

  • 这条命令指示跳板机中的7.exe程序对目标10.100.10.233发起攻击,并使用bind_8080.txt文件中定制化的Shellcode作为攻击成功后的载荷。
  • 为什么在跳板机执行? 因为跳板机与目标主机处于同一内网,网络可达,可以直接向目标发送构造好的SMB漏洞利用数据包。

3、执行结果分析

执行命令后,命令行输出如下信息,展示了漏洞利用过程。

复制代码
C:\Users\Administrator\Desktop>7.exe 10.100.10.233 bind_8080.txt
shellcode size: 2252
numGroomConn: 13
Target OS: Windows 7 Professional 7601 Service Pack 1
SMB1 session setup allocate nonpaged pool success
SMB1 session setup allocate nonpaged pool success
good response status: INVALID_PARAMETER
done
  • shellcode size: 2252: 加载的Shellcode大小为2252字节。

  • numGroomConn: 13: "groom"(或称"梳妆")连接的次数。这是永恒之蓝漏洞利用过程中的一个关键步骤,用于在目标系统内核中精确布局内存,为后续代码执行创造条件。

  • Target OS: Windows 7 Professional 7601 Service Pack 1: 成功识别出目标操作系统,这对于选择正确的利用路径至关重要。

  • SMB1 session setup allocate nonpaged pool success (出现两次): 成功通过SMB会话请求在目标系统的内核非分页池中分配了两块内存。这是实现任意代码执行的前提。

  • good response status: INVALID_PARAMETER: 这是一个成功的标志 。在永恒之蓝漏洞利用中,收到STATUS_INVALID_PARAMETER响应表明漏洞利用的初始阶段已成功完成,触发了内存越界写入,并开始执行Shellcode。

  • done: 程序提示漏洞利用流程已全部执行完毕。至此,攻击已经成功。Shellcode攻击已经使得目标主机10.100.10.233监听8080端口。

第四步:在Kali上建立隧道连接

复制代码
proxychains telnet 10.100.10.233 8080
  • proxychains: 这是一个Linux工具,它能够强制任何应用程序的TCP连接通过一个代理(如SOCKS4, SOCKS5, HTTP)进行转发。

  • 这里,proxychains被配置为使用之前部署在目标机上的代理(默认配置通常在/etc/proxychains.conf,需要预先设置为socks5 10.100.10.233 8080,或者通过命令行参数指定)。

  • 执行流程

    • proxychains拦截telnet命令试图连接到10.100.10.233:23的请求。

    • 根据配置,它将这个连接请求通过跳板机转发给内网目标服务器:10.100.10.233:8080

    • 目标主机上已开启监听8080端口,它收到请求后的理解是:"请帮我建立一个到你本机的Telnet连接"。于是在目标主机本地建立这个Telnet连接。

    • 于是,Kali通过跳板机直接连接到了目标主机的Telnet服务上,从而获取到shell权限。

五、攻击总结

本次攻击是一次典型的内网横向移动案例,攻击者利用跳板机作为支点,通过漏洞攻击内网中另一台主机。整个过程可分为四个阶段:

第一阶段:搭建通道与配置 (Channel Establishment & Configuration)

  • 部署代理 :攻击者首先在已控制的跳板机 (10.23.28.3) 上部署 EW (EarthWorm) 代理工具,并启动一个 SOCKS5 代理服务,监听在 12347 端口。该步骤旨在建立一个稳定的、通向内网流量的正向代理中转通道。

  • 配置攻击机 :攻击者在自己的 Kali 机器上配置 proxychains 工具,指定其所有代理流量均通过 socks5 10.23.28.3 12347 这条规则进行转发。这使得Kali能够通过跳板机访问内网资源。

  • 投送武器 :攻击者将漏洞利用程序 7.exe (EternalBlue攻击工具) 和载荷文件 bind_8080.txt (包含Shellcode) 上传到跳板机上,为下一步攻击做准备。

第二阶段:远程漏洞利用 (Remote Exploitation)

  • 发起攻击 :攻击者在跳板机 上执行命令 7.exe 10.100.10.233 bind_8080.txt。该命令指示攻击程序向内网目标 10.100.10.233SMB服务 发送精心构造的数据包,利用其存在的 MS17-010 (EternalBlue) 漏洞。

第三阶段:载荷执行 (Payload Execution)

  • 植入后门 :漏洞利用成功后,包含在 bind_8080.txt 中的 Shellcode 在目标机内存中被执行。这段代码的功能是在内网目标机上开启一个 绑定式后门 (Bind Shell) ,监听 8080 端口,等待外来连接。

第四阶段:代理连接与控制 (Proxy Connection & Control)

  • 建立控制通道 :攻击者回到自己的Kali机器,执行命令 proxychains telnet 10.100.10.233 8080

  • 流量转发

    • proxychains 自动将 telnet 的流量通过先前配置的SOCKS5代理(跳板机10.23.28.3:12347)进行转发。

    • 跳板机接收到来自Kali的代理流量后,将其转发至内网目标机 (10.100.10.233) 的8080端口。

  • 获得控制权 :目标机8080端口的后门程序接受连接,并将其与一个 cmd.exe 进程绑定。最终,一个交互式的 远程命令行Shell 通过代理隧道成功返回给攻击者的Kali终端,攻击者由此获得了目标机的完整控制权。

复制代码
sequenceDiagram
    participant A as 攻击者(Kali)
    participant P as 跳板机<br>10.23.28.3 (Windows)
    participant T as 目标机<br>10.100.10.233<br>(Win7 SP1)

    Note over A, P: 第一阶段:搭建通道与配置
    A->>P: 1. 跳板机部署EW代理, 启动监听 (SOCKS5:12347)
    A->>A: 配置proxychains: socks5 10.23.28.3 12347
    A->>P: 上传 7.exe 和 bind_8080.txt到跳板机

    Note over P, T: 第二阶段:远程漏洞利用
    P->>T: 跳板机执行: 7.exe 10.100.10.233 bind_8080.txt 向内网主机发起攻击

    Note over T: 第三阶段:载荷执行
    T->>T: Shellcode在目标机内存中运行<br>开启8080端口绑定后门(Bind Shell)

    Note over A, T: 第四阶段:代理连接与控制
    A->>A: 执行: proxychains telnet 10.100.10.233 8080
    A->>P: 流量通过SOCKS5代理(12347端口)转发
    P->>T: 转发Telnet连接至目标8080端口
    T-->>P: 接受连接,返回CMD Shell流量
    P-->>A: 将Shell流量通过代理返回Kali
相关推荐
独行soc1 年前
#渗透测试#红蓝攻防#HW#漏洞挖掘#漏洞复现02-永恒之蓝漏洞
测试工具·安全·渗透测试·脚本·漏洞挖掘·永恒之蓝
来日可期x2 年前
永恒之蓝 ms17-010
ms17-010·1024程序员节
7ig3r2 年前
【Kali】vmware虚拟机三种网络连接方式,ms17-010 , ms08_067的复现
linux·kali·ms17-010·ms08-067