360安全卫士 · 2016/05/09 11:53

Author:360天眼实验室

0x00 引子


人在做,天在看。

勒索软件,飘荡在互联网上越来越浓的一片片乌云,从中爆发出的闪电随时可能击中一般的用户。基于比特币的匿名支持体系使勒索软件这个商业模式轻松完成了闭环,各种数字绑票生意开始蓬勃兴起,而Locky勒索软件家族可能是其中最贪婪粗放的一个,漫天撒网以期最大范围地捞取不义之财。

360天眼实验室自然会对Locky重点关注并做持续的跟踪,基于360威胁情报中心的数据,以下的热力图显示了从2015年11月以来Locky样本量的提交情况。可见,2016年3、4月有两波大规模的行动,刚开初的5月甚至出现了高于4月的提交量。事实上,2016年5月3日的行动可能是史上最大规模的一波攻击。

而在近两日,360天眼实验室捕获了一批最新的Locky勒索软件的传播载体,和大多数的样本一样,这批样本同样使用Word中的宏代码下载执行Locky勒索软件:

  • Word文档中被插入了恶意的宏代码
  • 受害用户打开Word文档后并允许宏代码执行
  • 恶意宏使用Microsoft.XMLHTTP对象从指定的URL下载勒索软件并保存为hendibe.exe
  • 最后调用Shell.Application来执行恶意软件

值得注意的是,该系列样本中的宏代码是大量具有正常功能的宏代码,而攻击者将恶意代码分散插入到正常的宏代码中,如果不仔细观察,很难察觉到正常的宏代码中包含恶意代码。并且恶意代码中将需要操作的对象名称混淆编码后隐藏在了控件UserForm2.Image1的ControlTipText属性中,下载URL也通过加密的方式保存,这样具有比较好的免杀效果,VirusTotal上仅有6家杀软可以查杀更是证明了这一点!

有意思的是中文版Office以及大部分非西文版Office软件对该系列样本天生“免疫”(不会触发恶意宏代码),这批样本的目标应该不是针对中国的,但是量身定制的版本可能已经在路上了,接下来我们对该系列样本进行一些简单的分析。

0x01 样本分析


360天眼实验室此次捕获到的样本分别有doc和docm两种文档格式,攻击者以此来保证Office 2003、Office 2007以及更高版本的Office软件用户能执行对应的宏代码,但是所有样本的内部功能都一致,所以我们使用.docm的恶意文档作为分析案例。

免杀效果

先附一张VirusTotal的查杀图,可以看到大部分杀软对这批样本都无法正确识别其恶意性:

正常的宏代码

查看文档中的宏代码我们可以发现,宏代码中基本上都是一些数学公式代码,并且还有函数说明等相关注释,看起来都是正常的。如图:

隐藏在ControlTipText中的数据

不过,有一段代码引起了我们的注意,代码显示从Image1控件的属性中读取了某些数据,并进行了一些操作,如图:

而sOvet_FATSO函数的功能就是Replace:

通过分析这段代码可以理解到大概的功能是这样的:

读取UserForm2.Image1控件的ControlTipText属性得到一个字符串,然后使用sOvet_FATSO把00替换为e,再把D!替换成M、bri替换成s,最后将字符串以10分隔,使用split生成数组。

提取UserForm2.Image1. ControlTipText中的字符串如下:

D!icrobrioft.XD!LHTTP10)Adodb.britr00aD!10)brih00ll.Application10)Wbricript.brih00ll10)Proc00bribri10)G00T10)T00D!P10)Typ0010)op00n10)writ0010)r00briponbri00Body10)briav00tofil0010)\hendib00.00x00

使用前面的替换方法替换后,字符串变成这样:

Microsoft.XMLHTTP10)Adodb.streaM10)shell.Application10)Wscript.shell10)Process10)GeT10)TeMP10)Type10)open10)write10)responseBody10)savetofile10)\hendibe.exe

可以看到,字符串中出现了恶意宏中常常使用的一些关键对象名和方法名,那么这段看似正常的宏代码可能就不那么“正常”了。

恶意宏代码执行流程

1通过对宏代码的进一步分析,我们明白了这是一个通过向正常的宏代码中插入恶意宏代码,并将关键的string混淆,以及将下载的URL加密存放来躲避杀软查杀的恶意Word文档。

恶意宏代码的执行流程如下:

1、读取UserForm2.Image1.ControlTipText中的字符串并替换指定的字符

Microsoft.XMLHTTP10)Adodb.streaM10)shell.Application10)Wscript.shell10)Process10)GeT10)TeMP10)Type10)open10)write10)responseBody10)savetofile10)\hendibe.exe

2、用Split将得到的字符串以10分割成数组传递给sOvet__57

sOvet__57 = Split(asOvet, "10)")

3、通过CreateObject等函数引用sOvet__57数组中的各个成员

4、将加密的URL每个字节除以16进行解密

5、执行下载流程

  • 使用Microsoft.XMLHTTP下载文件
  • 使用Adodb.streaM的savetofile方法保存写入到TMP目录,并命名为hendibe.exe
  • 最后使用Shell.Application来执行下载的EXE

解密URL

样本以“?”作为分隔,使用Split生成数组,再传递给解密函数解密。但是我们在调试过程中发现,样本的宏代码中,Split函数最后缺少了闭合符号”,导致样本执行报错:

将Split后面的”加上后再解码出来的URL却是乱码:

对于这种情况,刚开始我们认为这应该是攻击者还在测试样本的免杀能力,因为正常情况下这样的代码是不可能执行起来的,并且即便执行成功,得到的URL也是错误的,不可能下载得到恶意软件。

0x02 中文Office天生“免疫”


二进制中提取原始加密数据

正当我们准备结束这次分析,得出该系列样本是攻击者进行免杀测试的样本的结论时,我们顺便看了一下样本二进制中加密的URL数据,居然发现原始二进制中的加密URL数据和Word宏代码中显示的数据不一致,而二进制中加密URL的分隔符并不是”?”,而是0xA8:

而Word宏编辑器中显示的加密的URL数组是这样的:

Split("1664?856?856?792?28?52?52?840?680?728?888?616?824?728?776?824?600?840?36?552?904?552?824?600?840?792?552?584?616?36?584?776?744?52?96?12?936?648?80?568?760?744?744?776?680", "?)

可以看到,对应的”?”其实是0xA8,而0xA8后面的字节也被Word“吞噬了”,这样导致显示出来的数组通过宏代码中的算法无法解密!

VBA的“BUG”

原来,VBA中使用ANSI编码,上面的代码在英文版Office中是没有问题的,VBA会正确地识别0xA8为分隔符,而在中文Office环境或者其它非西文的Office环境下则会将0xA8后面的字节一并处理。

找到原因后,我们将0xA8替换成可见字符空格0x20,并以0x20作为分隔符,成功解密出了URL:

使用该地址能成功下载回来一个EXE文件,经过简单分析发现该EXE是勒索软件Locky家族的样本。

下载的Locky简单分析

简单分析该样本发现执行流程和大多数的勒索软件一致,这里就不进行详细的分析了,样本大致的行为如下:

1、样本执行后反连C&C服务器进行通信

109.73.234.241:80
185.22.67.108:80

2、读取用户机器环境信息,并生成身份ID

3、POST用户机器信息到C&C服务器

4、获取公钥信息并加密对应文件

5、释放vssadmin.exe删除所有副本文件

vssadmin.exe Delete Shadows /All /Quiet

6、生成勒索提示文件,更改桌面

0x03 结束语


在我们的文章完成时这类样本的所有下载地址均有效,基于360威胁情报中心监测数据,这类样本在5月6日第一次被监控捕获到,后续很可能会迎来一轮的增长:

而国内用户则不能因为此次中文Office天生“免疫”这批攻击样本而掉以轻心,可以预见未来勒索形式的恶意软件会更多的被黑产团队使用,对付这类攻击目前依然只能以预防为主:安装杀毒软件、定期备份重要文件、打开陌生的邮件附件一定要多加小心。

0x04 IOC


以下IOC数据供安全业界参考:

类型
C&C IP 109.73.234.241:80
C&C IP 185.22.67.108:80

勒索软件Locky最新传播载体分析——中文版Office危在旦夕相关推荐

  1. 利用勒索软件Locky的漏洞来免疫系统

    netwind · 2016/05/05 15:06 From:www.lexsi.com/securityhub- 0x00 简介 在2009年,我们利用免疫系统的概念来保护工作站或者服务器免受快速 ...

  2. 勒索软件Locky、Tesalcrypt等使用了新的工具躲避检测

    勒索软件Locky.Tesalcrypt等使用了新的工具躲避检测 今天我们发现Locky勒索软件家族使用一种新的工具来躲避检测,并且可能已经感染了很多节点. 自从我们通过AutoFocus智能威胁分析 ...

  3. Dharma勒索软件继续大肆传播,据称已有100多家希腊网站沦陷

    在过去的几个月里,有新闻报道称,一家颇受欢迎的啤酒厂遭到了勒索软件的***,而与此同时,一个主要的海港也遭遇了同样的问题,导致进出港口的船只受到影响.调查显示,这两起案件的罪魁祸首都是Dharma(也 ...

  4. Locky勒索软件传播新方式:关闭Word文档会感染电脑

    网络犯罪分子仍未放弃传播Locky勒索软件,除了广为人知的传播途径,少数犯罪分子也在尝试使用新的散布方式.最近,就有黑客通过修改的Word文档传播Locky勒索软件的Payload,并且Payload ...

  5. Locky勒索软件是如何利用DGA的?

    安全研究人员指出,名为Locky的新型勒索软件借鉴了Dridex银行恶意软件的技术.那么,什么是Dridex恶意软件技术,Locky与其他类型的勒索软件有何不同之处? Nick Lewis:Locky ...

  6. 2017勒索软件威胁形势分析报告

    关注「实验楼」,每天分享一个项目教程 2017年1-11月,360互联网安全中心共截获电脑端新增勒索软件变种183种,新增控制域名238个.全国至少有472.5多万台用户电脑遭到了勒索软件攻击,平均每 ...

  7. 360安全中心:WannaCry勒索软件威胁形势分析

    猫宁!!! 参考链接:http://zt.360.cn/1101061855.php?dtid=1101062360&did=210646167 这不是全文,而是重点摘要部分. 2017年5月 ...

  8. 不修改加密文件名的勒索软件TeslaCrypt 4.0

    SwordLea · 2016/04/08 13:04 0x00 概述 安天安全研究与应急处理中心(Antiy CERT)近期发现勒索软件TeslaCrypt的最新变种TeslaCrypt 4.0,它 ...

  9. RSA 2017:勒索软件成热点 收了赎金还撕票

    年度安全峰会RSA2017已于美国时间2月13日盛大开幕,按照惯例,RSA组委会会根据参会组织所属领域及发言人提报议题内容提炼相关的热门词,本届大会也不例外.DATA.CLOUD.THREAT.INT ...

最新文章

  1. 论网络营销在我国的发展
  2. selenium3+python-多窗口、句柄(handle)
  3. python+selenium个人学习笔记10-调用JavaScript和截图
  4. word中公式编辑器编号
  5. 苹果官方Instruments工具之Automation的介绍
  6. [kubernetes] 解决k8s.gcr.io Image 导入导出 等问题
  7. spring mvc使用html页面,使用Spring MVC的纯HTML页面应用程序
  8. [vue-element] ElementUI是怎么做表单验证的?在循环里对每个input验证怎么做呢?
  9. python 多线程--重点知识
  10. Java基础学习——安装JDK
  11. 一道『easy』等级的力扣题,我写了两个小时的笔记...
  12. 在WCF中的异常处理方法
  13. Microsoft Office Visio 2007 简体中文专业版
  14. CleanMyMac X苹果电脑系统管家级的多功能百宝箱
  15. Type mismatch: inferred type is T but ViewModel was expected
  16. Qt学习笔记--QSS样式表
  17. Ubuntu20.04 LTS 卡顿问题(卡顿间隔固定)
  18. 【JAVA长虹键法】第七式 建造者模式(23种设计模式)
  19. java hdms_网盘预研 - ZICK_ZEON的个人空间 - OSCHINA - 中文开源技术交流社区
  20. 微信开放平台第三方平台授权小程序权限集id对应中文说明

热门文章

  1. centos 7 8安装quaartus 遇到的问题及解决方法
  2. 使用tcl 创建vivado工程
  3. gispython定义查询_定义查询方法
  4. java的linux内核构建,构建一个Docker 的Java编译环境
  5. redis 备份导出rdb_Redis学习——Redis持久化之RDB备份方式保存数据
  6. easyui菜单 java_EasyUI:主界面以及菜单功能
  7. python数字类型floatcomplexint_Python 四种数值类型(int,long,float,complex)区别及转换
  8. creo管道设计教程_Creo7.0设计探索在管道设计的应用
  9. java自动生成函数注释_IDEA类和方法注释自动生成(2019-08-31 21:47写)
  10. 荒岛余生最后一个包裹_你会为一个排球哭泣吗?电影《荒岛余生》