从Wannacry到WannaRen:螣龙安科2020年4月7日,360CERT监测发现网络上出现一款新型勒索病毒wannaRen,该勒索病毒会加密windows系统中几乎所有的文件,并且以.WannaRen作为后缀。360CERT该事件评定:危险等级为高危,影响面为广泛。

经360安全大脑分析确认,“WannaRen”勒索病毒的作者正是此前借“永恒之蓝”漏洞祸乱网络的“Shadow Brokers”组织。从三年前Wannacry席卷全球,至少30万用户中招,到今天卷土重来,这两款病毒背后的原理基本是一样的,今天翼火蛇就带你来深度分析这两款病毒的原理。

原理分析(以Wannacry为例)

传播基础——EternalBlue“永恒之蓝”漏洞

“永恒之蓝”漏洞本来是美国国家安全局(NSA)开发的针对微软的攻击武器,但在2013年6月被黑客团队ShadowBreakers窃取,在2017年,ShadowBreakers公布了一大批网络攻击工具,其中包含“永恒之蓝”工具。

”永恒之蓝“利用Microsoft 服务器消息块(SMB)协议的实现中的一个漏洞。该漏洞的存在是因为各种版本的Microsoft Windows中的SMB版本不同,服务器处理来自远程攻击者的特制数据包,使他们可以在目标计算机上执行任意代码。该漏洞利用的是windows计算机的445端口,445端口是一个毁誉参半的端口,有了它我们可以在局域网中轻松访问各种共享文件夹或共享打印机,但也正是因为有了它,黑客们才有了可乘之机,他们能通过该端口偷偷共享你的硬盘。而在Wannacry攻击中,攻击者就是扫描开放445文件共享端口的Windows机器,不需要用户的任何操作就能在电脑和服务器中植入Wannacry病毒。

病毒核心——加密勒索病毒部分

PART1  wcry.exe主程序

这一部分是是病毒的初始化操作,代码逻辑如下:

初始化操作

病毒首先获取到计算机名,然后计算出计算机名的ASCII乘积,将这个乘积作为随机数种子调用两次rand函数,最后获取到一个字母+数字的随机字符串,接下来程序对命令行参数做了一个判断,然后切换当前进程的路径为工作目录。

随后,通过RealseFiles函数将资源中隐藏的压缩包进行解压 解压密码是WNcry@2017,然后释放压缩包中的所有文件到当前进程的路径下。然后,再利用WriteCwnry函数将比特币账户写入到c.wnry文件中。最后通过执行两次ExeCmdCommand函数,隐藏当前路径下的所有文件,同时向系统中添加一个叫everyone的用户,并且给他所有权限。

加载病毒核心操作

这部分的函数所有的操作都只有一个目的,就是为了调用dll中的导出函数。

首先,通过GetApis函数获取各个API函数的地址,比如CreateFileW、WriteFile 等等,为后面的操作做准备。

接着,通过CDatabase::CDatabase构造函数初始化两个用于线程同步的临界区对象。接下来利用ImportKeyAndAllocMem函数导入RSA密钥并申请两块内存空间。

私钥已经导入完成,那么接下来要做的就是解密了。通过DecryptFile函数对t.wnry这个文件进行读取操作,读取到内存之后传入上个函数拿到的密钥句柄,在内存中进行解密,然后导出一个dll文件。

随后,通过WriteAllocMem函数申请一块堆空间,并且把已经解密的dll文件写入到堆空间中。然后,通过函数GetExportFunAddr函数从堆空间中取出dll导出函数的地址,并且通过析构函数析构,释放资源。

PART1总结

从上面的分析可以得出病毒的主体程序实际上只做了一些初始化的操作,到目前为止并没有看到它感染或加密任何一个文件,也没有对用户进行勒索,真正的核心代码在t.wnry中。

PART2  t.wnry.dll病毒核心

第二部分是病毒的所有操作

CreateResFile 第一个线程回调函数

这个函数在工作路径创建了00000000.res这个文件,并且往里写入数据。

CheckDky 第二个线程函数

这个函数的作用是每个五秒检测工作路径下是否存在774F34B5.dky这个文件。

EncryptAllFiles 第三个线程函数 加密所有文件

这个函数是整个病毒程序最核心的函数,代码量最多,里里外外总共嵌套了十几层函数。

l 核心加密函数第一层

循环检测是否有新的磁盘加入,如果有,则加密,没有就一直循环。

l 核心加密第二层

这一层有三个函数很重要

MovFileToTemp:移动文件到临时目录下并重命名为.WNCRTY

FillDisk:在回收站创建一个文件,并且循环写入数据直到磁盘空间不足

EncryptFile:加密磁盘上的所有文件

l 核心加密第三层

进到第三层之后又有一个函数,这个函数会遍历并且加密所有的文件,而且是递归调用的。

l 核心加密第四层

这个函数首先遍历所有的文件,对文件夹和文件执行不同的操作,并且对后缀名进行过滤。

l 核心加密第五层

这个函数首先会调用sub_10002E70这个函数 根据这个函数返回值的不同 执行不同的加密策略

l 核心加密第六层

这个加密函数首先做了一些准备工作,获取文件的后缀名,然后跟.WNCRY做判断,如果比较成功,则不加密,接着做了一个字符串拼接,然后才开始加密文件

l 核心加密第七层

接下来是这个程序的核心的加密算法,他加密的步骤如下

1.读取文件前0x8个字节的内容,跟WANACRY!作比较

2.使用原文件名+.WNCRYT 创建一个新文件,创建的时候这个文件并没有任何内容

3.对创建的文件写入数据

4.读取原文件 将加密后的文件内容写入到创建的文件

StartTaskdl 第四个线程回调函数 以隐藏的方式启动taskdl.exe

这个函数每隔三秒以隐藏的方式启动taskdl.exe

StartExeAndSetReg 第五个线程回调函数 启动taskse.exe和@WanaDecryptor@.exe并且修改注册表

WannaCry病毒的大致原理就是这样,在其核心部分,同时使用了十几个函数的嵌套,复杂程度堪比当年的熊猫烧香。但是WannaCry病毒存在一个致命缺陷,即病毒作者无法明确认定哪些受害者支付了赎金,因此很难给相应的解密密钥,所以用户即使支付了赎金,也未必能顺利获得密钥该电脑系统及文件依旧无法得到恢复。

当然,Wannacry病毒并不是金刚不坏,主要有这样几种防御措施。

1. 关闭445端口

2.更新补丁

3.通过某些安全软件来防范加密

事实上,在面对所有的勒索病毒时,避免接触感染源,及时更新系统补丁才是上上策,一旦病毒已经感染,文件已经被加密,在短时间内破解密钥几乎是不可能的,因而事前防范才是克制勒索病毒像2017年那样肆虐的关键所在。

从Wannacry到WannaRen:螣龙安科带你深度分析勒索病毒原理的更多相关文章

  1. WannaRen来袭:螣龙安科带你盘点那些年的勒索病毒

    2020年4月7日,360CERT监测发现网络上出现一款新型勒索病毒wannaRen,该勒索病毒会加密windows系统中几乎所有的文件,并且以.WannaRen作为后缀.360CERT该事件评定:危 ...

  2. 螣龙安科携手51CTO:网络安全实战课程最新发布

    一年一度的双十一狂欢节即将来临了,相信各大电商平台也正摩拳擦掌跃跃欲试中.回顾2019年,阿里巴巴双十一狂欢节的单日交易额就达到了2684亿人民币,创造了电商交易历史上新的记录. 当人们愉快地购买着自 ...

  3. 螣龙安科反入侵:EDR的缺点

    EDR解决方案提供了比传统终结点安全解决方案更高的功能,并且可以增加人员数量,但是这些功能都有不少的缺点. EDR功能付出巨大代价 在过去四年中,虽然产品成本平均每年下降约35%,但即使到今天,产品的 ...

  4. 螣龙安科:威胁研究——与MAZE勒索软件事件相关的策略,技术和程序

    至少从2019年5月开始,恶意行为者就一直在积极部署MAZE勒索软件.勒索软件最初是通过垃圾邮件和漏洞利用工具包分发的,后来又转移到妥协后进行部署.根据我们在地下论坛中对涉嫌用户的观察以及整个Mand ...

  5. 安科 OJ 1190 连接电脑 (并查集)

    时间限制:1 s 空间限制:128 M 传送门:https://oj.ahstu.cc/JudgeOnline/problem.php?id=1190 题目描述 机房里有若干台电脑,其中有一些电脑已经 ...

  6. 一分钟应对勒索病毒WannaCry

    一.WannaCry 勒索病毒 勒索病毒WannaCry肆虐全球,利用Windows操作系统漏洞,因链式反应迅猛自动传播,校园电脑.个人电脑.政府机关都是重灾区.中毒电脑所有文档被加密,将被勒索高达3 ...

  7. WannaCry勒索病毒全解读,权威修复指南大集合

    多地的出入境.派出所等公安网络疑似遭遇了勒索蠕虫病毒袭击,已暂时停办出入境业务:加油站突然断网,不能支持支付宝.微信.银联卡等联网支付:大批高校师生电脑中的文件被蠕虫病毒加密,需要支付相应的赎金方可解 ...

  8. "WannaCry"勒索病毒用户处置指南

    "WannaCry"勒索病毒用户处置指南   原文: http://mp.weixin.qq.com/s/ExsribKum9-AN1ToT10Zog    卡巴斯基,下载官网:h ...

  9. WannaCry勒索病毒卷土重来:日本本田工厂被迫关闭

    6月22日消息,前阵子WannaCry勒索病毒席卷全球,世界各地网络遭到攻击.日前,偃旗息鼓了一阵的WannaCry勒索病毒又重回人们视线,迫使一家汽车厂在日本关闭. 路透社报道,本田Sayama工厂 ...

随机推荐

  1. js call与bind和apply的区别

    介绍 在JS中,这三者都是用来改变函数的this对象的指向的,他们有什么样的区别呢. 在说区别之前还是先总结一下三者的相似之处: 1.都是用来改变函数的this对象的指向的. 2.第一个参数都是thi ...

  2. Windows10 office 点击链接提示您的组策略阻止我们为您完成此操作。设置ChromeHTML也无效.

    问题: win10环境点击office 中的网络链接时  出现了如下报错(一般在卸载了系统预装的其他浏览器后出现问题) 解决方案: 1.设置默认浏览器(已经设置可跳过) 控制面板->设置小图标 ...

  3. Typora使用手册(基础)

    Typora使用手册 第一步,你首先得拥有一个Typora,可通过(https://typoraio.cn/)该网址下载. 第二步,安装并打开. 第三步,让我们开始认识并设置自己的Typora吧~ 什 ...

  4. [AcWing 26] 二进制中1的个数

    点击查看代码 class Solution { public: int NumberOf1(int n) { unsigned un = n; int res = 0; while (un) { re ...

  5. MybatisCodeHelperPro简单使用

    1.idea安装 2.连接mysql 3.创建实体等关联类 ,选择数据库表右键选择如图 4配置 生成后的 5简单应用 可以直接生成xml 总结:非常的方便快捷.

  6. CentOS 8配置本地yum源及DNF简介

    CentOS 8更改了软件包的安装程序,取消了 yum 的配置方法,改而使用了dnf 作为安装程序.虽然改变了软件包的安装方式,但是 dnf 还是能兼容使用 yum 的配置文件和命令的使用方法. 小提 ...

  7. Spring 源码(8)Spring BeanPostProcessor的注册、国际化及事件发布机制

    上一篇文章https://www.cnblogs.com/redwinter/p/16198942.html介绍了Spring的注解的解析过程以及Spring Boot自动装配的原理,大概回顾下:Sp ...

  8. 使用grabit分析mysql数据库中的数据血缘关系

    使用grabit分析mysql数据库中的数据血缘关系 Grabit 是一个辅助工具,用于从数据库.GitHub 等修订系统.bitbucket 和文件系统等各种来源收集 SQL 脚本和存储过程,然后将 ...

  9. 印尼医疗龙头企业Halodoc的数据平台转型之数据平台V2.0

    1. 摘要 数据平台已经彻底改变了公司存储.分析和使用数据的方式--但为了更有效地使用它们,它们需要可靠.高性能和透明.数据在制定业务决策和评估产品或 Halodoc 功能的性能方面发挥着重要作用.作 ...

  10. docker 保存,加载,导入,导出 命令

    持久化docker的镜像或容器的方法 docker的镜像和容器可以有两种方式来导出 docker save #ID or #Name docker export #ID or #Name docker ...