返回 TI 主页

WannaCry勒索蠕虫,史上第一个把勒索和蠕虫结合在一起的恶意代码,看起来以敛财为目标却在爆发的短短几小时内就把互联网血洗了一遍,这里我们回顾一下酝酿的过程、导致的后果,反思一下我们的得失。

过程

关键时间点事件

2016年8月13日

黑客组织Shadow Brokers(https://theshadowbrokers.tumblr.com/ 该网站已经于8月15日删除) 声称攻破了为NSA开发网络武器的美国黑客团队Equation Group,并表示,如果得到100万比特币(现价约合5.68亿美元),将公开这些工具。事实证明该组织从8月1日开始就对该次披露事件进行了准备,在这期间的13天里reddit,GitHub,Twitter,Imgur多个平台相关的披露账号陆续被创建,13日相关文档开始在以上平台进行披露。被泄露的工具包为一个256MB左右的压缩文件,其中包含未加密的压缩包eqgrp-free-file.tar.xz.gpg,及被用于拍卖的压缩包eqgrp-auction-file.tar.xz.gpg

2017年1月8日

Shadow Brokers再度开卖窃取方程式组织的Windows系统漏洞利用工具,此次拍卖的工具要价750比特币(当时折合人民币4650000元左右)。从公开的工具截图来看此次的工具包括Windows的IIS、RPC、RDP和SMB等服务的远程代码执行,还有一些后门、shellcode以及一些其他的小工具。

2017年2月10日

一个疑似早期版本的WannaCry加解密模块程序被上传到的VirusTotal,代码的编译时间是2月9日。在勒索蠕虫爆发以后,通过代码相似度比较,有相当大的把握认为这个版本与后来肆虐网络的版本同源,并且这个早期版本被认为与朝鲜有关,当然,朝鲜方面是断然否认的。

2017年4月14日

Shadow Brokers公布了之前泄露文档中出现的Windows相关部分的文件,该泄露资料中包含了一套针对Windows系统相关的远程代码利用框架及漏洞利用工具(涉及的网络服务范围包括SMB、RDP、IIS及各种第三方的邮件服务器)。这批数据和工具是Shadow Brokers在2016年以来数次公布的数据中最有价值也同时最具攻击力的一部分,其中涉及SMB服务的影响面最广而且最稳定的ETERNALBLUE漏洞利用工具直接催生了WannaCry勒索蠕虫。同日,微软发布了相应的通告,其中大部分之前未知的漏洞2017年3月14日的例行补丁包中被修复。这里的逻辑可能是这样的:微软已经在早期通过某种我们所不知道的渠道得到了NSA数字武器库相关的漏洞信息,在2017年3月的补丁包中做了漏洞修补,Shadow Brokers发现工具相应的漏洞已经被补,手头上的漏洞利用工具价值大打折扣而又卖不出一个好价钱,一怒之下就干脆公开了。

2017年5月12日

北京时间下午3点多开始,WannaCry勒索蠕虫开始爆发,在短短几小时内,该勒索软件已经席卷了近百个国家,中国、英国、美国、德国、日本、土耳其、西班牙、意大利、葡萄牙、俄罗斯和乌克兰等国家的上千家企业及公共组织,直接导致海量用户数据被加密勒索或使相关的电脑及设备失去服务能力。在后续的感染过程中,蠕虫几乎影响到了地球上所有连接了互联网的国家,这个蠕虫应该导致了历史上在单次攻击波中影响面最大的数字勒索事件。

2017年5月12日

北京时间晚上11点多,英国安全研究人员@MalwareTechBlog得到并分析了WannaCry蠕虫样本,发现样本关联了一个域名并将其注册,在当时他并不非常清楚此域名的作用。事实上由于恶意代码本身的逻辑,此域名如果获得有效的解析蠕虫就会退出不再执行后续破坏性的加密操作,所以此域名的注册极大地抑制了勒索蠕虫的破坏作用。之后该twitter作者写了文章“How to Accidentally Stop a Global Cyber Attacks”描述了他是如何第一时间注意到这次攻击事件,并迅速做出应对的过程。

2017年5月12日

晚间360公司发布紧急通告,对一种利用MS17-010进行传播勒索蠕虫进行了预警;Malwarebytes发布了相关分析的报告;思科Talos Intelligence发布了相关的分析报告。至此各个安全厂商已经基本被动员起来对抗这个勒索结合了蠕虫的新类型威胁。

2017年5月13日

凌晨,360公司发布了对WannaCry勒索蠕虫的完全技术分析,启动了最高级别的应急响应机制,持续对外发布技术信息、缓解处置建议和相应的工具,到现场协助用户解决蠕虫导致的业务中断。5月12日是北京时间的周五,需要充分利用13、14日周末两天时间,一方面处理已经遭受攻击的系统,另一方面进行技术和人力上的准备,迎接周一上班开机的高峰。

2017年5月16日

经历过两天的工作日,确认蠕虫感染量不再增加,没有出现不可控发展趋势,针对蠕虫的应急响应告一段落。

蠕虫技术分析

奇安信威胁情报中心对追日团队的技术分析报告基础上进行的分析确认,补充可能看到的一些细节。作为整个事件环节的必要组成部分,对蠕虫本身的技术细节的了解还是必要的。

样本为一个标准的网络蠕虫,整合了Shadow Brokers所公布的NSA数字武器库中最好用的ETERNALBLUE(即所谓的永恒之蓝) SMB漏洞利用工具作为传播手段,不同于传统的蠕虫主要用来构建僵尸网络的传统,该样本的Payload却是个勒索软件,似乎以寻求利益为动机。样本运行之后会对内网,外网445端口进行扫描之后,通过MS17-010漏洞上传并执行Payload进行传播,之后释放Ransom样本,Ransom执行初始化之后,再次释放对应的加密模块RansomModule对文件进行加密。

蠕虫整体分为3部分:

Worm MD5 DB349B97C37D22F5EA1D1841E3C89EB4
Ransom MD5 84C82835A5D21BBCF75A61706D8AB549
RansomModule MD5 9849852166fe1d494496c1c5482498fd

Worm

主体模块

该部分为蠕虫的主体,样本运行之后会通过函数InternetOpenUrlA首先访问http://www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com这个地址,如果访问成功则放弃之后的运行,否则进入fun_enterCry,即蠕虫的主流程,这个地方对于Kill Switch域名的作用,主要有以下两种解释:

  1. 作者用于控制样本的传播开关(但是不幸的是该域名之后被以为安全研究员注册并接管)
  2. 该域名用于检测蜜罐的认证(部分蜜罐环境会接管样本的网络流量,如HTTP访问都返回成功,因此通过一个不存在的域名来校验是否运行在蜜罐环境下)

进入主流程后根据当前环境来执行安装流程或服务流程。安装流程中会创建一个服务mssecsvc2,参数为当前路径 –m security,并从资源中释放出Ramsom模块。

扫描模块

在服务流程中会实现初始化(网络和Payload生成),之后生成线程对内外网进行扫描:

内网一个线程,扫描整个网段。

外网128个线程循环扫描随机生成的IP。

内网感染代码的实现部分,获取当前IP段,针对每个IP发起一次攻击:首先探测目标IP的445端口是否开启。如果开启,则使用NSA泄露的ETERNALBLUE工具进行远程攻击,并传播对应的蠕虫样本。

Ransom释放

扫描服务启动之后,样本从资源中先解压出对应的Ransome,并移动当前 C:\WINDOWS\tasksche.exe到 C:\WINDOWS\qeriuwjhrf,释放自身的1831资源(MD5: 84C82835A5D21BBCF75A61706D8AB549)到C:\WINDOWS\tasksche.exe,并以/i参数启动。

Ransome

该勒索样本启动以后,首先会判断命令行参数是否为2,是否包含i。尝试在ProgramData目录/Intel目录/Temp系统临时目录生成一个标识A的目录,并将这个这个目录的属性设置为隐藏不可见,将自身拷贝创建副本。

运行副本,优先通过服务的模式启动,否则以进程的方式启动,通过检测互斥体Global\MsWinZonesCacheCounterMutexA来判断是否运行成功。之后在函数再次解压出真正的Ransome模块,解压的时候资源为对应80A,需要使用到解压码WNcry@2ol7。解压出的文档如下所示:

名称 作用
b.wnry 敲诈图片资源
c.wnry 配置文件,钱包地址,Tor地址
r.wnry Q&A
s.wnry 压缩包,用于TOR的网络组建
t.wnry 真正的ransom模块,被加密
u.wnry 解密程序,之后被改名为@WanaDecryptor@.exe
taskdl.exe 用于删除临时文件
taskse.exe 在任意的远程桌面session中运行指定程序
taskhsvc.exe 网络通信组建

接下来获取对应的比特币付款地址,受害者通过该地址可以进行支付解锁。动态获取文件类API,Crypt解密类API。使用内置的RSA公钥解密对应的t.wnry,该模块为对应的RansomModule,用于实现真正的文件加密功能,解密之后加载该DLL到内存中,开始执行加密流程。

RansomeModule

如下图所示dump出的RansomModule的导出函数如下所示,通过TaskStart开始加密任务。

该RansomeModule的加密流程如下,黑客掌握一对公私钥A1/A2,A1公钥在样本中,A2私钥为黑客持有,RansomModule通过该公钥A1生成一对新的RSA公私钥B1/B2,公钥B1保存到文件00000000.pky中,私钥B2通过公钥A1加密保存到00000000.eky中,遍历文件并对每一个文件生成随机的AES128位秘钥C,通过公钥B1加密AES秘钥C,并用C对文件进行加密,之后将被加密AES秘钥C附加在文件内容中。

样本首先获取file/crypt类函数,之后分别生成两个用于保存公私钥的文件名,之后测试内置公钥的的可靠性。通过该内置的公钥生成一对RSA公私钥A1/A2,并保存到对应的文件00000000.pky,00000000.eky中。

运行一系列线程初始化运行环境,删除临时文件,最后进行加密。通过命令行关闭一些重要进程,以保证对应的文件能成功被加密。通过一个脚本设置一个link,将u.wnry重命名为@WanaDecryptor@.exe,该exe即为受害者能看到的勒索展示程序。接下来开始遍历文件,过滤掉Ransom自己的文件,然后对比文件后缀是否为内置需要加密的文件类型。

支持的加密文件如下所示:

创建AES秘钥并开始加密,注意此处会随机挑选几个文件使用内置的RSA公钥来进行加密,这里的目的是为解密程序提供的免费解密部分文件功能演示。

最后弹出支付赎金的告知框通知用户发生了什么,要求交钱赎回。

后果

失败的勒索

勒索软件由于其成熟有效的犯罪模式近年来呈现井喷的态势,实施攻击的团伙靠此营生发了大财,一个勒索恶意代码家族产生百万美元记的收入都不算高的。但WannaCry蠕虫由于其业余的设计,比如设置了那个神秘的开关域名以及糟糕的收赎金收取功能,不仅没收到多少钱,而且使用安全研究者对于赎金的流向能进行方便的跟踪。据说蠕虫造成了80亿美元的损失,而目前看到的支付的赎金也就几万美元,从勒索金钱的角度看,蠕虫的行动完全失败。

以往传统蠕虫的主要恶意行为是构建僵尸网络,受感染的机器作为节点被加入,用于以后各类具体的非法活动,比如发垃圾邮件、DDOS、窃取数字资产等。而WannaCry蠕虫搭载的是勒索模块,蠕虫实际导致的结果与其说是勒索倒不如说是对全网执行了一个拒绝服务攻击,破坏了海量的数据,不光导致信息的损毁还直接导致依赖文件进行工作的电脑和设备失去服务能力,引发业务的中断,影响从线上波及线下,很多政府机构对外办事机构的停摆让我们看到了一个迷你版本的网络战场景。

潘多拉的魔盒

在原始版本的蠕虫泛滥以后,奇安信集团威胁情报中心观察到了大量基于修改的变种,数量达到数百个,在情报中心的图关联搜索中可以很直观地看到部分关联:

其中几个相对比较有特点的变种如下:

样本1 d5dcd28612f4d6ffca0cfeaefd606bcf

此变种和原始版本的蠕虫差别细微,只是通过二进制Patch的方法修改了KILL SWITCH URL(被改为http://www.ifferfsodp9ifjaposdfjhgosurijfaewrwergwea.com),如下所示:

以后发现了很多个变种采用了这种通过简单二进制Patch的方式修改开关域名,与原始版本相关,整个恶意代码只有域名部分的字节被修改:

我们看到部分样本及对应开关域名如下:

样本 Kill Switch
550ea639584fbf13a54eccdaa359d398 http://www.udhridhfowhgibe9vheiviehfiehbfvieheifheih.com
c2559b51cfd37bdbd5fdb978061c6c16 http://www.iuqssfsodp9ifjaposdfjhgosurijfaewrwergwea.com
0156edf6d8d35def2bf71f4d91a7dd22 http://www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com
61f75bb0c76fe332bccfb3383e5e0178 http://www.ifferfsodp9ifjaposdfjhgosurijfaewrwergwea.com
4287e15af6191f5cab1c92ff7be8dcc3 http://www.ayylmaotjhsstasdfasdfasdfasdfasdfasdfasdf.com
dd7216f5cb34dcf9bd42879bd528eaf4 http://www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.cum

总体来说,从对DNS访问量的监测来看此类样本对整体感染面影响基本可以忽略不计,下图是原始开关域名与其中一个修改后域名的解析量对比:

从上图还可以看到,开关域名对蠕虫的传播影响非常大,在域名被安全研究者注册形成有效解析和访问以后初始的指数级感染趋势很快被抑制,之后基本再也没有超过最早快速上升阶段形成的高峰。

至于那些通过简单Patch得到的蠕虫为什么无法流行开来,我们猜测的原因倒并不是越来越多的系统被及时打上了补丁(这无法解释为什么非WannaCry蠕虫但同样利用NSA SMB系列漏洞的其他恶意代码感染量持续上升的趋势),而是因为主机上的防病毒工具所起的作用。这些简单Patch过的恶意代码与原始版本太像了,基于特征码的病毒查杀引擎就能非常有效的识别并做自动化的处理,如果这类派生蠕虫不像WannaCry那样在活动的早期感染量以链式反应一样迅速突破一个临界值就很难再流行开来。

样本2 d724d8cc6420f06e8a48752f0da11c66

样本通过对原始样本二进制Patch直接去除了检查开关域名以停止加密的功能,可以直接进入感染流程。下图为修改前后的比较:

但是勒索的部分可能是由于作者疏忽,样本里硬编码的用于解压zip的密码还是WNcry@2ol7, 这个密码并不能解压成功,导致勒索流程被废掉了。接来下的变种可能会修复这个“Bug”,而使攻击的威胁程度大增,事实上后来确实出现了完全去除Kill Switch并且可工作的版本。

这些基于原始蠕虫简单修改的恶意代码已经构不成严重威胁,更麻烦的在于那些潜伏下来让人无感知的恶意代码家族,这些才是真正值得担心的东西。

不死的蠕虫

分析显示在爆发后的3天内WannaCry勒索蠕虫家族已经得到基本的控制,没有出现持续感染量增加的趋势。但是,奇安信威胁情报中心在分析全网扫描活动后发现了一个令人不安的趋势:对445端口发起扫描的独立IP数在大量增加。

下图是蠕虫爆发前的5月2日对445端口进行扫描的独立IP数,为3170左右:

在5月12日前,445端口的扫描源IP数基本保持稳定的3000量级(极有可能来自Conficker类蠕虫),这个数据可以理解为一个背景参考量。

下图显示5月12日蠕虫爆发当日扫描源IP数,上升到5670多:

基本可以认为超出平均每日3000左右IP数绝大部分来自于感染了蠕虫的机器。在接下来的几天全球采取应对蠕虫的措施以后,扫描IP数有所下降,蠕虫的传播受到控制。但是,5月23日以来,扫描源IP数又开始呈现上升的趋势,到26日创下历史新高,达到6340多,如下图:

这个现象令人不安,暗示着基于NSA工具的SMB服务漏洞正在被积极地蠕虫式利用传播。在WannaCry勒索蠕虫肆虐期间就出现了很多个去除Kill Switch修改版本,之后还发现了捆绑NSA几乎所有可用SMB漏洞攻击工具进行传播的EternalRocks(永恒之石)家族,这些派生和其他恶意代码家族理论上具备更强的传播力,甚至会逐渐取代WannaCry蠕虫的主流地位。

WannaCry蠕虫的加密勒索行为会促使中招用户尽快处置,重装系统安装补丁,减少后续的感染源。但是,如果其它利用SMB漏洞进行传播的蠕虫只是秘密地潜伏控制,不做更多引起用户注意的事情,则可能持续地保持活动状态。2003年的SQL Slammer蠕虫,就一个400多字节的UDP Payload,只存在于内存中,理论上只要为数不多的受感染的系统同时重启一次,蠕虫就会被消灭,可是就这样一个蠕虫存活了至少十年(也许现在还活着)。2008年爆发的Conficker蠕虫到现在都还处于活跃状态,从监测到的感染的源IP数量来看,再活跃个十年完全在预期之内。

此次基于MS17-010多个漏洞的蠕虫(将来很可能不会是WannaCry)也肯定会一直存活下去,持续地给我们制造麻烦。证据还是每日针对445端口扫描的源IP数量:

在5月12日以前,对445端口的扫描源IP数量稳定在平均每日3000左右,自蠕虫爆发以来特别是5月下旬至今这个扫描背景源IP量踏上了一个台阶,基本稳定到了7000多。不管我们喜不喜欢,蠕虫活动事实上已经进入了一个”新常态”,我们将长期与它们共存。

反思

隔离网的银弹思维

多年来,大型的组织机构特别是政府机关一直强调内外网隔离的建设思路,认为网络隔离是解决安全问题最有效的方式,以至于有些安全人员简单的认为,只要采取了隔离方案就可以高枕无忧。这是一种典型的银弹思维,试图主要依赖单点单维度的措施来解决安全问题。

在这样的安全错觉下,隔离网内的安全管控措施往往执行不到位,外面看起来铜墙铁壁,攻击一旦进来则一马平川。

特别有讽刺意味的是WannaCry蠕虫的开关域名设计所导致的结果,在域名被安全研究者注册启用以后,一般非隔离网用户只要能解析到开关域名事实上就得到了有效的保护,而在隔离网环境下却会解析失败导致后续破坏性的加密文件功能触发,反而最终导致隔离网环境下的大批量感染损毁数据影响业务。

对蠕虫样本的分析显示其结构和功能并不复杂,也没有做什么技术上的对抗。为什么在全球范围内形成了如此大的危害,其核心还是在于其所依赖的蠕虫式传播手段。蠕虫攻击传播所利用的漏洞微软在2017年3月已经修补,而在4月Shadow Brokers公开了蠕虫所基于的NSA黑客工具以后,基于对相关漏洞影响面和利用稳定性的评估,安全业界其实认为出现蠕虫只是时间问题,并再次提醒更新系统,但似乎并没什么用。WannaCry蠕虫事件本质上是对机构内部网络IT运维能力的一次大考,如果组织内有比较完善的IT运维策略并得以有效地落地执行,安全补丁能被及时打上,在本次勒索大潮中可安然度过,比如这回攻击潮中的银行业,反之,则必然经历一场腥风血雨。

从多年来的安全实践来看,基于防御阻断的方法论已经被证明是失败的,基于攻击者在攻击链的某些环节必然会实现突破的假设,然后对攻击链中的其他环节进行检测与响应至少在目前是比较现实的方案,隔离网依然需要完善的纵深防御体系。

威胁情报的利用

威胁情报在攻防对抗中发挥着越来越重要的作用。从这次事件总结好的方面,多数安全厂商都比较重视威胁情报的作用,也确实看到在预先防控、事件预警、应急处置、整体态势跟踪等各个方面,情报都起到了重要的作用。通过对持续跟踪WannaCry蠕虫网络和主机上的特征作为威胁情报的输出,在对应的安全设备上实施检测匹配,实现了快速定位受感染和存在漏洞的系统并进行处置。

另一方面,我们也需要认清威胁情报是一种扎扎实实的安全能力,需要建立数据基础并进行较长时期的投入建设,情报涉及采集、处理、分析、发布、反馈等一系列的环节,传统厂商缺乏数据能力基础,相较能力型厂商明显的在情报获取、分享和事件处置方面都偏慢;还有厂商简单的依赖从blog、twitter等渠道获得的开源情报,缺乏处理分析的机制,因此发布了不全面、不准确的信息,给应急工作人员带来了困扰。总体而言,这次事件为情报引领安全开了一个好头,后续安全厂商要进一步踏踏实实的加强威胁情报建设,而用户也需要和具备真实威胁情报能力的厂商建立紧密的联系,获得基于情报的检测、分析、响应、预警等关键安全能力。

参考引用

[1] WanaCrypt0r勒索蠕虫完全分析报告

[2] Wannacry勒索软件母体主程序逆向分析

[3] WannaCry蠕虫详细分析

[4] Wannacry 勒索软件分析

[5] 关于“魔窟”(WannaCry)勒索蠕虫变种情况的进一步分析

[6] WannaCry and Lazarus Group – the missing link?

[7] the-worm-that-spreads-wanacrypt0r

[8] how-to-accidentally-stop-a-global-cyber-attacks

[9] WanaCry Ransomware:Potential Link to North Korea

[10] Player 3 Has Entered the Game: Say Hello to 'WannaCry'

[11] WannaCry勒索病毒犯错之业余令高手很想哭

WANNACRY RANSOM