熟悉雷锋网的读者可能知道,一个月前,我雷好几个读者爆料:
本来一路心情愉快地去上班,开机却遭遇突发异常状况——昨天下班前电脑还好好的,今天突然开机之后电脑突然很卡,我并没有在意。结果等了一会,突然浏览器自动打开,弹出了一个勒索界面,告诉我所有的文件都已经被加密了,只有点击链接用比特币交付赎金之后才能拿到解密的密钥。
有几个读者反应是这样的:
a:赎金要一万多,如果老板逼我,我就准备辞职了(你辞一个试试)。
b:还是有很多重要资料的,缴纳赎金吧,就当几个月工资喂了狗(无辜的狗狗到底做错了什么)。
b:咦,赎金怎么缴纳?怎么买比特币(探索到海枯石烂)?
c:呜呜,求高手反攻解密(坐等到天荒地老)!
看到这篇文章的你,是不是不想遇到这样的惨剧?勒索木马在天朝已经屡见不鲜,为了让更多无辜读者完美躲避勒索木马的袭击,本期雷锋网宅客频道(微信id:letshome)邀请了360反病毒小组负责人、拥有长达9年恶意软件查杀经验的王亮来解密勒索木马。
王亮:360反病毒小组负责人,拥有长达9年的恶意软件查杀经验,是国内最早追踪敲诈者病毒的安全专家之一,目前已经带领团队拦截到超过80类敲诈者病毒变种。
一、与勒索木马斗争的辛酸史
王亮:一直以来做的分析工作都是针对木马病毒的,更多的是一种技术性的工作,并没有太多感情因素在其中,但通过与受害者的沟通,才真切感受到他们的无奈与无助,也更加坚定了我们与木马对抗到底的决心。
那段时间挂马中招的反馈确实比较多,当时是想尽快了解一下具体情况。联系确认后,发现受害者主要是因为使用了某款没有升级的flash插件的浏览器,访问挂马页面而中招。用户在操作上并没有明显过错,只是由于访问的站点自身存在问题,使用的浏览器又没有及时更新最终造成这个结果。这里也想提醒大家,此类木马威胁离普通网民其实很近,可能一个不经意的操作就会中招。
之前我们接到过一个反馈,一家公司的职员,计算机中一直没装杀毒软件,周末时还没有关闭计算机。当他周一来公司时发现他计算机上的文件和一台文件共享服务器的文件全部被加密。我们协助追查发现,是它机器上安装的一款视频工具软件,周末时弹出了一个广告,而这个广告恰巧被植入了flash漏洞攻击代码,结果在他没有任何操作的情况下,机器上的文件被木马加密。很多时候,用户甚至没有什么感知的情况下就中招了。
王亮:今年上半年我们拦截的敲诈者攻击超过 44 万次,下半年由于国内挂马攻击的出现,曾经出现过单日拦截敲诈者木马超过 2 万次的情况,敲诈者木马的攻击规模还在不断刷新。
目前我们抓到的敲诈者的各类变种超过 200 种,积极传播与活跃对抗的就有8个家族。根据样本行为、代码分析、攻击溯源看,攻击者来自国内、俄罗斯、日韩、美国等地,参与其中的黑产组织至少有几十个。
另外,从制作门槛上来说,敲诈者病毒的制作门槛并不高,各类加密算法都有现成的源码和库代码可以使用,只要对其原理略知一二就可以做出一款简单的敲诈者。而网上也有很多公开的勒索软件源码,对其做一些修改就能做出一款可以使用的敲诈者病毒。高利润低门槛,使得敲诈者病毒的制作团体越来越多。
王亮:此类木马有十多年历史,之前的敲诈方式是加密或者隐藏文件后要求转账或者购买指定商品,传播量和影响力不高。
最近流行的比特币敲诈者其实在 2014 年就在国外流行了,到 2015 年大量流入国内。在国内大量传播的主流敲诈者家族就有 cryptowall , ctb-locker , teslacrypt , cerber , locky , cryptxxx , xtbl 等多个家族,每个家族在传播对抗过程中又产生有多个分支版本。目前捕获的敲诈者木马超过200个版本,传播量和影响力都非常大。
王亮:多年前制作病毒木马还有炫技的成分存在,现在市面传播的木马全部是利益驱使,互联网上哪里有利可图,哪里就有搞黑产、赚黑钱的网络黑手。敲诈者病毒也不例外,国内中招比较早的一批受害者是外贸相关的企业和个人。
攻击者发现能从国内赚到钱之后,也开始专门针对国内进行攻击,同时因为这一木马知名度的提示,也带动了一批黑产人员加入到敲诈者病毒的制作和传播中。以比特币为代表的各类匿名支付手段,也给敲诈者勒索赎金提供了方便,造成现在敲诈者木马家族多,变种多的情况。
随着信息化程度越来越高,不管是企业还是个人,对于信息系统的依赖度也越来越高,而勒索软件的主要危害就是破坏信息系统中的数据资源。企业个人的信息化程度越高,危害也越大。
前两年,这一波敲诈勒索木马刚刚兴起时,因为主要在国外传播,木马的演变主要也是针对的国外的杀软。那时我们可能只需要几个简单的技术手段,就能很好的查杀和防御这类木马,那时我们已经意识到,攻击者可能很快就会发现在中国也是有利可图的,会转过来专门攻击我们。在敲诈者木马刚刚开始在国外流行时,我们已经在实验我们的防护策略和手段,当时我们测试过对文件做备份,对文件写入内容做检测,对文件写入方法做检查,对数据操作流程做检查等十多种方案。
这中间有过不少尝试,比如刚刚测试文件格式拦截时,发现会误报发票打印程序,后来研究发现有些发票打印程序会改图片格式。我们测试备份方案的时候,发现磁盘io太高,性能上划不来。我们就在这中间不断尝试,最后将其中比较有效且消耗合理的方案应用到了我们的产品中。
很快 2015 年就开始出现专门针对国内进行传播免杀的敲诈者木马,而且很多木马刚刚出现时都是免杀全球杀软的,在 virustotal 上扫描都是 0 检出的。我们之前已经准备了一套可行的防护方案,所以即使在引擎无法检出的情况下,仍能识别攻击保护数据安全。在这个对抗过程中,我们根据木马的传播特点和行为特征又补充增加了多个拦截方案。比如针对挂马传播,即使用户没打补丁,我们的引擎没检出,但在文件落地时我们仍然能将这类恶意程序报出,多层防御使我们有一个很高的拦截成功率。
到 2016 年,这个木马已经开始在国内大范围传播了,很多普通用户计算机因为访问挂马网页也造成感染。我们在今年 8 月开始推出“360 反勒索”服务,给用户承诺,开启这个服务后,如果正常开启我们的防护功能,仍然被敲诈者木马感染的话,我们帮用户支付赎金解密文档。
这个服务刚开的时候,我们压力还是很大的,当时一个比特币 4000 多人民币(现在已经涨到 5000 多了),我们承诺给用户最多赔付 3 个比特币,也就是 1.2 万。当时一天对这个木马有 1 万多次的拦截,如果没防住,可能一天就得赔出去几十万上百万去。我们陆续开始收到一批批反馈,结果发现中招用户很大一部分是裸奔用户,一直认为杀毒软件无用,平时机器都是裸奔状态,结果中招了,后悔莫及。
也有用户给我们提了不少建议,比如前不久有一位用户说:“那个木马确实拦截了,但是没看出来我们拦截的这玩意会加密他的文件”,所以他就给放了。用户给我们的反馈,也帮我们完善了产品,保护了更多用户不受伤害。
只要这类攻击仍然有利可图,这些攻击者就会继续对抗下去,我们和他们的攻防战争就不会停。
二、你长了一张被勒索木马敲诈的脸
王亮:有部分勒索木马是针对特定国家的,比如, cerber 会避开俄语国家,xtbl主要针对中日韩。国内和国外的勒索木马很多是使用相同的技术手段,只是在传播方式和渠道上有所不同。不过国内出现过一些比较“本土化”的勒索木马属于黑客新人练手的作品,可能会显得比较另类,有些甚至留下qq号敲诈q币,这些木马很多并没有使用规范的加密方式,很大一部分可以通过技术手段破解。
比如,这款敲诈者就将密钥保存到了本地,详情请见:
这里还有一个 php 编写的敲诈者,为了能够正常执行,本地还带了一个 php 的执行器,但是在加密上其实只是进行了异或操作,留给用户的信息谎称使用的 rsa 结合 aes 加密,详情请见:
王亮:勒索木马主要的传播途径有两种:一类是通过网页挂马,这类木马属于撒网抓鱼式的传播,并没有特定的针对性,这类受害用户主要是裸奔用户,常年裸奔自认为很安全,哪成想一不留神打开一个网页甚至什么都没做就中招了。而另一类则是通过邮件传播,这类传播方式的针对性较强,主要瞄准公司企业,各类单位和院校,他们最大的特点是电脑中的文档往往不是个人文档,而是公司文档。这样文档一旦被加密,其损失往往不是个人能够承担的,无论是员工为了保住饭碗还是公司为了保住业务,都会更倾向于交付赎金减少损失。
另外,有别于以上两种途径,最近第三种传播途径又逐渐形成趋势——服务器入侵。黑客通过一些技术手段进入服务器,然后加密服务器上的文档和程序,使服务器的拥有者遭受巨大的损失,这类传播途径针对的情况与邮件传播类似,最终目的都是给公司业务的运转制造破坏,迫使公司为了止损而不得不交付赎金。
王亮:一般来说,敲诈者的加密流程如下:
1. 生成一组随机数,用于文件加密的密钥。
2. 使用这组随机数做为密钥,加密文件。
3. 通过非对称加密,加密这组随机数,并保存,解密时使用。
4. 保存使用的非对称加密密钥相关信息,以备解密时核对使用。
敲诈者对文件的加密强度,很大程度上就是其使用加密算法的“正确程度”。
敲诈者木马常犯的几个错误有:
1. 随机数生成不随机,我们就可以绕过整个繁琐的过程,直接对文件解密。
2. 错误的存储密钥和 hash 值,依靠这些错误存储的hash值,我们可以加快破解流程到一个可接受的范围内。
3. 错误的套用加密算法和保存数据。这也是一个很常见的问题,比如使用rsa时,有木马将p和q直接存储到了本地,造成 rsa 的安全性丧失。
4. 文件操作是否合理。比如有木马直接通过写入一个新文件,删除老文件的方法,进行加密。此时通过文件恢复工具,能够恢复部分文件。
以最近捕获的“ xtbl ”样本为例进行分析,解释一下这个过程。和大部分敲诈者木马相似,“ xtbl ”敲诈者木马解密数据段的数据,创建本进程另一实例作为“傀儡”进程进行进程替换,以达到运行 shellcode 的目的。程序主要由五大功能模块组成。包含 api 字符串的解密及地址获取,启动项的添加,删除卷影,发送服务器信息以及加密文件。
五大功能模块
api 名称加密与动态获取地址,是为了对抗杀毒引擎的查杀,对于纯静态引擎来说,纯 shellcode 的恶意代码就是一个黑盒,这样可以多到一定程度的免杀。
加密前写入启动项,是为了防止加密过程中关机,下次开机后可以继续加密,如果加密完成,这个启动项会被删除。
在进行加密之前,程序会删除卷影备份。防止用户通过系统恢复来恢复数据。
值得一提的是,“ xtbl ”敲诈者使用管道来传递命令行,这和“ ceber ”系列敲诈者使用方法相同,而通过“ mode con select=1251 ”命令行设置 ms-dos 显示为西里尔语可能与作者来自俄罗斯有关。
完成以上准备工作之后,程序产生两组密钥块,其中一组用于本地文件加密,另一组用于网络共享资源文件加密。
产生两组密钥
密钥块大小为 184 字节,前 32 字节存放 rc4 加密后的随机数密钥,该密钥用于之后加密文档。为了加强随机数的随机性,程序以系统时间作种生成随机数作为循环次数,每次异或地址 0x4326f0 的值与系统时间后求其 sha-1 值,并将最终所得随机数经 rc4 加密得到密钥。
产生rc4加密的随机数密钥
密钥块第 33 字节起存放系统序列号,用作服务器的唯一标识符。之后的 128 字节存放 rsa 加密后的随机数密钥,而 rsa 公钥的 sha-1 值则存放在最末端的 20 字节中。
密钥块生成过程
密钥块分布图
密钥块产生之后,程序会将密钥块中部分内容以及其他系统信息以 post 的方式发送至黑客的服务器上。每个字段的标识及参数值如下表所示。
发送的数据
除了在加密文件之前发送数据,在加密完成后也会再次向黑客服务器发送数据,两者用函数最后一个参数作区别,当最后一个参数为 0 时表示即将进行加密,为 1 时表示加密完成,参数不同带来的结果是 post 数据的目的地址不同。
两次发送数据
之后程序开始进行加密,由两个线程完成加密工作,其中一个线程枚举网络资源并对获取的共享文件进行加密,另一个线程加密本地文件。
枚举网络资源并加密
加密本地文件的线程中,通过枚举磁盘中的文件并判断文件后缀来确定需要加密的文件路径,完成文件路径的确认后,程序开启四个子线程进行加密。由于父线程负责传递文件路径给子线程以及开启子线程进行加密,如果只创建一个子线程进行加密,当子线程由于某些原因无法返回时,父线程将无法继续执行下去,这会导致父线程无法传递下一个文件路径并且无法再创建新的子线程。而开启四个子线程进行加密时,只需保证其中一个线程正常返回即可继续下一轮加密。
开启四个线程进行加密
加密的第一步是判断文件大小。当文件大小大于 0x180000 字节时,直接对文件内容进行加密,并将文件重命名;当文件大小小于等于 0x180000 字节时,则创建新文件并加密旧文件内容后写入新文件,之后删除旧文件。
根据文件大小选择加密方案
之后程序使用之前生成的随机数初始化 aes 密钥,加密文件内容。加密完成后需要在文件尾部写入信息,以供黑客解密文件时使用。
对于大小小于等于 0x180000 字节的文件,按照如下图所示的方法在文件尾部写入信息。
文件大小小于0x180000字节时写入文件头的数据
对于文件大小大于 0x180000 字节的文件,按照如下图所示的方法在文件尾部写入数据。
文件大小小于0x180000字节时写入文件头的数据
至此,加密完成。被加密的文件类型包括 exe,dll,doc,docx,pdf,xls,xlsx,ppt,zip,rar,bz2,7z,dbf,1cd,jpg 。
如果要解密被加密的文件的话,我们需要获取到随机生成的文件加密密钥,而这个文件加密密钥被 rsa 加密之后,保存到了文件头中,只有获取到 rsa 的私钥,解开这段数据,才能实现解密,这是一个大致的加密流程,细节还有很多。
三、如何对抗勒索木马
王亮:对抗主要有四个方面:源头,木马落地,木马行为,和事后处理。
1) 源头方面:我们对来自于网页漏洞的挂马有网盾防护,对于邮件附件,我们的下载安全也能有效保护,力争从源头直接阻断木马的入侵。
2) 木马落地:这一步主要依靠我们的各类引擎,我们的云 qvm 、 ave 有对敲诈者病毒的专门学习,能够有效检出市面上现存的各类变种。
3) 木马行为:我们在主动防御系统中加入了对文档加密类程序的行为特征分析,一旦发现行为符合勒索木马加密文件的行为,便会拦截这一行为并通知用户查杀。
4) 事后处理:我们现在还推出了针对这种勒索木马的“反勒索服务”,如果用户在 360 的安全防护之下依然中了勒索木马,我们协助用户恢复文档,甚至不排除帮用户交付赎金。最大限度的降低用户损失。我们有专门的团队分析这类木马,对能够解密的木马,我们也开发了解密工具,用户无需支付赎金就能够解密文件。
王亮:对于每个人来说,计算机中的文档数据价值各有不同。以实际收到的用户反馈案例看,我们接到的一些个人用户受到的损失如下:
曾经有一位老教授,编写了多年的文稿,大量的资料都被加密,那是他十几年的心血。而当时敲诈者留下的米乐m6平台的联系方式已经失效,想支付赎金解密都没有办法。最后还好在另外一台计算机中有几个月前的一部分备份,才减小了一部分损失。
还有一个案例是有个大四学生,而被加密的文档包括他辛辛苦苦完成的论文——如果无法解密甚至可能影响到该学生的毕业。
对于企业,影响可能就更大了,曾经有过一个影楼的摄影师电脑中毒了,有很多客户的照片还没有交付照片都被加密了,无法解密的话直接损失就有数万元之多,还有可能是影楼信誉扫地,以及自己丢了工作。
还有一家律师事务所,因为一位员工的计算机中招,除了这位员工计算机文件被加密外,还将数台文件共享服务器中文档加密,直接造成公司业务停摆。
很多时候这个损失已经无法用钱来衡量了,我们之前接到一位用户,敲诈者将其计算机中大量照片加密,用户不愿意给攻击者支付赎金,不愿意助长这类行为,但自己多年来拍摄的照片全部损坏,甚是心痛。
王亮:中招之后,可以先使用杀毒软件对木马灭活,防止其继续感染其它文件或系统。对于部分敲诈木马,目前有解密工具,比如 teslacrypt 和一些国产家族,我们网站上有相应的工具和介绍,可以关注米乐官网app的网站。
对于大多数主流敲诈者木马,目前都采用了比较规范的非对称结合对称的加密手段,这直接导致了在没有拿到黑客手中的私钥的前提下,解密文件几乎不可能。只能支付赎金或者等待黑客放出手中私钥,而支付赎金操作本身也比较复杂,同时也带有一定风险。所以此类木马我们更推荐对重要文档事前做好备份工作,以减少损失。
王亮:目前国内的黑产,已经形成了一些分工明确的产业化形态。有专门负责制作木马的,有负责免杀的,有进行传播的,还有负责赃款转移洗钱的。这些可能是多个成员组成的一个团伙,也可能是互不相识单独行动的几伙人共同完成。
从之前破获的案件中看,很大一部分木马开发者是一些it人员兼职或者在校学生所为,他们利用手上掌握的技术,帮助黑产,赚外快。很多这样的人觉得,在自己电脑上写写程序,也没传播,也没骗人,自认这样并不违法,在被警察抓获时才后悔惋惜。
木马的传播者,很多是利用渠道商,平台商管理不严,甚至有很多根本没有审核管理(只是条文中写了一条,本平台禁止传播木马病毒)的漏洞,利用一些平台传播。比如最近多次爆发的广告位挂马攻击,就是利用广告联盟审核不严的漏洞(也有一些根本没能力审核,我们之前通报过几家广告商,结果对方查了一圈之后没找到哪里出问题),在广告资源中插入带挂马攻击的内容,当客户端访问这些资源时,如果所使用的软件存在漏洞那么就会造成产品被挂马攻击。而广告展示平台根本没有审核广告联盟的广告,直接插入页面播放。结果经常会出现多家大站被挂马,动辄每天几十万上百万的木马传播量。
木马传播中,还有一些属于“代理木马”,从别人手里购买现有的成品木马,并自行传播获利,这里面经常能看到黑吃黑的现象存在。就比如之前 teslacrypt ,内部就有多级密钥。作者将这个木马在黑市出售,除了给购买者的一套公私钥体系之外,作者手里还掌握一套密钥,可以解开他出售木马加密的文件。其内部还有分成,所有购买木马传播收到的赃款也要分成给作者。
王亮:勒索软件的惯用伎俩是破坏信息系统,根本目的是敲诈财物。实际上,无论是加密文件、加密磁盘、还是阻止系统正常运行,都是不法分子的手段,拿到钱才是王道。从目前的情况来看,勒索软件破坏信息系统的手段可能会越来越暴力直接,攻击的设备也不局限于个人电脑,各类移动设备,公司的服务器目前都已经成为了此类木马攻击的目标,未来联网的设备越来越丰富,各类物联网设备也很有可能成为此类木马的下一个目标。但不论形式方法如何变,其目的是不变的,勒索财物获取利益。
王亮:木马攻防是一个对抗的过程,木马的防御手段和攻击手法在对抗过程中是不断更新的,不存在一劳永逸的完美策略。但有一些安全建议,可以大大提高攻击的门槛,减小被木马攻击的损失:
其一,及时更新系统和软件,各类安全补丁需要及时打上,提升漏洞的防护能力。
其二,提升安全意识,不轻易打开陌生人发来的邮件附件,聊天软件传过来的各类文件。
其三,安装安全防护软件并及时更新,不随意退出安全软件、关闭防护功能,对安全软件提升的各类风险行为不要轻易放行。
其四,也是最主要的——重要文档数据要多做备份,存放在不同设备中。一旦文件损坏或丢失,也不至于有太大的损失。
王亮:对于如何获取样本,我们主要有下面几个途径:
一是引擎获取,主要还是依靠我们自身的云体系,通过我们全网的客户端来收集样本。
二是交换样本,这个和其他安全厂商一样,我们互通有无,丰富我们自己的样本库。
三是用户举报,这类样本虽然少,但精确度往往会比较高,也能联系到用户进行进一步的了解。对我们了解木马入侵用户机器的方法有很大的帮助。
还有一些沙箱类的自动分析平台,也会帮我们产出大量样本。对于木马代码的定位,主要有以下几种: qvm 自动学习机制,由机器深度学习自动提取恶意代码,对样本做分类检出;通过 ave 引擎,增加一些启发特征抓取一些特定样本;依靠我们的主防体系,提取木马行为,不单独针对代码,对抗免杀。