基于Metasploit的漏洞利用分析

作者: 乔明秋 高松

 基于Metasploit的漏洞利用分析0

关键词:Metasploit;漏洞利用;SMB;wireshark

中图分类号:TP309.7 文献标识码:A

文章编号:1009-3044(2024)25-0084-03

0 引言

Metasploit(MSF) 是一款功能非常强大的开源漏洞检测和利用工具,具有7个功能模块,以帮助用户实现漏洞检测、漏洞利用、躲避安全工具、后渗透测试等功能[1]。

MS17-010 漏洞,也被称为“永恒之蓝”漏洞,是Windows操作系统中的一种安全漏洞。攻击者成功利用MS17-010漏洞后,可以获得对目标系统的完全控制权[2]。

本文基于Metasploit框架,实现MS17-010漏洞的利用,基于wireshark进行抓包,结合SMB连接建立的3个阶段,分析漏洞利用的详细过程。

1 Metasploit

Metasploit 最初由HD Moore 于2003 年创建,Metasploit的第一个版本是一个ruby脚本集合,后来经历了许多版本更新,对计算机安全领域产生了深远影响,目前已经成为一款功能非常强大的开源漏洞检测和利用工具。Metasploit 可以从官网https://www.metasploit. com/获取最新的版本。Metasploit在kali系统中默认安装。在Kali Linux 终端输入“msfconsole”启动Metasploit,使用的版本是“6.0.30-dev”[3-4]。

Metasploit 在kali 中的路径位于/usr/share/metasploit-framework/modules/,在这个路径下可以看到Metasploit的主要模块。

Exploit(利用)模块:包含针对特定漏洞的利用代码,允许渗透测试人员利用系统中的安全漏洞来获取对目标系统的控制。每一个Exploit模块对应一个具体漏洞的攻击方法。

Payload(有效载荷)模块:用于在目标系统上执行特定操作的代码片段,如建立反向shell、执行特定命令等。Metasploit提供了多种类型的Payload,包括Me⁃terpreter和Shellcode。

Auxiliary(辅助)模块:提供各种辅助功能,如信息收集、扫描和验证漏洞等任务。

Encoder(编码器)模块:用于对Payload进行编码,以避免被防火墙、入侵检测系统等检测到。

NOP(空指令)模块:生成一系列的无操作指令,用于填充利用代码中的空隙,以确保代码的正确性和稳定性。

Post(后期渗透)模块:在取得目标系统远程控制权后,进行一系列的后渗透攻击动作,如获取敏感信息、跳板攻击等操作。

Evasion(逃避检测)模块:用于创建和部署逃避现代安全检测和防御措施(如反病毒软件、防火墙等)的模块。

这些模块共同构成了Metasploit的强大功能集,使用户能够针对各种环境和系统执行复杂的渗透测试和安全评估。Metasploit需要在合法和合规的环境中使用,并且需要有相关的授权和许可[5]。

2 漏洞利用(MS17-010)

MS17-010是一种针对Windows系统的SMBv1服务的缓冲区溢出漏洞。攻击者可以通过发送特制的SMBv1请求来触发该漏洞。攻击者利用MS17-010漏洞的过程可以分为以下几个步骤:

1)信息收集:攻击者首先会使用网络扫描工具(如nmap) 来探测目标系统的开放端口和服务。MS17-010 漏洞通常与SMBv1 服务相关,并监听在TCP的445端口上。

在漏洞利用的实施过程中,采用虚拟化技术,搭建了漏洞利用模拟环境,模拟环境中的虚拟机镜像、模拟主机类型、操作系统和IP地址如表1所示[6]。

2) 漏洞探测:一旦确认目标系统开放了SMBv1服务并可能存在MS17-010漏洞,攻击者会使用专门的漏洞探测工具或Metasploit等渗透测试框架来进一步验证漏洞的存在。

在Metasploit中,攻击者可以利用MS17-010的扫描模块auxiliary/scanner/ smb/smb_ms17_010,配置目标主机的IP地址等信息,然后运行扫描来确认漏洞是否存在,并探测操作系统版本,如图1所示。

3) 漏洞利用:如果探测到目标系统确实存在MS17-010漏洞,攻击者会利用这个漏洞来执行恶意代码。这通常是通过发送一个精心构造的SMBv1请求来完成的,该请求包含了能够触发缓冲区溢出的代码。

当目标系统接收到这个恶意请求并尝试处理时,由于存在MS17-010漏洞,它会导致缓冲区溢出,从而使攻击者能够在目标系统的内存中写入并执行任意代码。

下面使用metasploit框架中的模块exploit/windows/smb/ms17_010_eternalblue来进行漏洞利用和分析。

设置目标IP地址,命令为set RHOSTS 目标IP地址。设置攻击载荷,如set payload windows/x64/meter⁃preter/reverse_tcp用于64位系统。使用exploit或者run 命令实施攻击,攻击效果如图所示。Meterpreter ses⁃sion 1 opened (10.10.244.206: 4444 -> 10.10.244.172:49178) at 2024-06-05 10:29:09 +0800,说明会话已经建立成功,拿到靶机的shell,如图2所示。

4) 后渗透阶段:攻击者成功利用MS17-010漏洞后,可以获得对目标系统的完全控制权。他们可以执行各种恶意操作,如:捕获屏幕图像、上传/下载文件、创建新的管理员账户、启用远程桌面服务、清除系统日志以掩盖攻击痕迹等。

攻击者还可以利用这个漏洞来传播恶意软件,如WannaCry勒索软件,它利用MS17-010漏洞进行快速传播,并对受感染的系统进行加密勒索。

3 漏洞利用分析

SMB全称为服务消息块(Server Message Block),它可以实现文件共享、打印机共享、串口共享等功能。SMB是一个C/S request-response请求响应协议。建立SMB会话需要3个阶段:1为协商阶段,客户端先使用SMB的协商协议(0X72) ,发送客户端支持的认证协议给服务器,服务器选择其中的一个返回给客户端;2为认证阶段,客户端使用SMB会话设置请求数据包(0X73) 进行认证和登录;3为连接阶段,客户端发送一个树连接请求数据包(0X75) 并列出它想访问网络资源的名称。一旦建立起连接,用户可以进行真正的对于目标文件的操作,如打开文件、读写文件等文件操作。连接的过程如图3所示。

在实施漏洞利用的同时,使用wireshark 进行抓包,结合wireshark抓包结果、SMB连接过程和漏洞利用原理分析攻击过程:

1) 首先攻击机向靶机发送一个SMB协商协议请求Negotiate Protocol Request(0x72) 数据包,并在方言dia⁃lects字符串列表中列出攻击机所支持的SMB协议版本。

SMB 定义特定协议版本的消息包集称作方言Dialect,为了适应 Microsoft SMB 协议日益增长的功能,Microsoft SMB 协议消息数据包的列表不断增长,现在数以百计。每种方言由标准字符串标识,例如图中的“LANMAN 1.0”“LM1.2X002”“NT LANMAN 1.0”“NT LM 0.12”等,如图4所示。

2) 靶机响应一个SMB的协商协议响应NegotiateProtocol Response(0x72) 数据包,给出选择的SMB协议版本,图中Slected Index 3:NT LM0.12表明本次实验中协商选择的是索引为3的协议NTLM0.12,如图5所示。

3) 协商成功之后,攻击机向靶机发送一个会话设置请求Session Setup AndX Request(0x73) 数据包,会话的用户身份为:anonymous匿名用户,如图6所示。

4) 靶机确认身份后回复会话设置响应SessionSetup AndX Response(0X73) 数据包同意本次连接,并返回靶机的系统信息windows 7 professional 7600等,如图7所示。

5) 攻击机向靶机发送一个树连接请求Tree Con⁃nect AndX Request(0x75) 数据包,并给出访问网络资源的具体路径\\10.10.244.172\IPC$,如图8所示。

6) 靶机回复一个树连接响应Tree Connect AndXResponse(0x75) 数据包,同意访问资源,并且列出操作的权限,如READ access,WRITE access,APPEND ac⁃cess等,如图9所示。

连接到相应资源后,攻击机即可进行正常的网络共享访问,如通过open SMB、read SMB、write SMB、close SMB实现打开、读取、写入、关闭共享文件。如可以查看靶机的文件、上传文件、下载文件、创建用户等操作。

在漏洞分析过程中,通过wireshark抓包结果,与SMB协议连接过程逐一对应,深刻理解了MS17-010 漏洞利用的详细过程。

4 总结与展望

本文利用虚拟化平台搭建了漏洞利用环境,对实际漏洞利用环境进行了模拟。基于Metasploit框架,利用Metasploit的攻击exploit模块,实现了MS17-010漏洞的利用,并基于抓包工具wireshark进行抓包,通过抓到的SMB协议数据包,结合SMB连接建立的3个阶段,分析MS17-010漏洞利用的具体过程,该分析方法同样适用于其他漏洞利用的分析。

上一篇 点击页面呼出菜单 下一篇