IT技术互动交流平台

勒索软件 “Locky”深度分析

发布日期:2016-03-03 21:27:20

2 月19日 , 德国媒体报道,一款家族名为”Locky”的勒索者恶意软件每小时感染德国5300台计算机,Locky由此进入人们视野。目前,Locky已经蔓延到包括德国、荷兰、美国在内的十几个国家,国内知名论坛上也陆续开始出现关于Locky的讨论,不少人在寻求文件被修改“.lock”的加密文件后的解决方案,可见部分国内网民已经中招,而某宝上也有公开出售Locky的解密密钥。几乎同时,金山安全接到多个企业报警显示Locky已在其内网蔓延,并影响到生产环节,事态进一步升级。

金山安全反病毒实验室采集到Locky样本,分析发现勒索提示可以显示中文,可见此次勒索事件与以往“国外中招,中国躺枪”不同,犯罪集团的矛头开始指向中国用户。

Locky攻击流程

如图所示,黑客向受害者邮箱发送带有恶意 word 文档的 Email , word 文档中包含有黑客精心构造的恶意宏代码,受害者打开 word 文档并运行宏代码后,主机会主动连接指定的 web 服务器,下载 locky 恶意软件到本地 Temp 目录下,并强制执行。 locky恶意代码被加载执行后,主动连接黑客 C&C 服务器,执行上传本机信息,下载加密公钥。 locky 遍历本地所有磁盘和文件夹,找到特定后缀的文件,将其加密成“ .locky ”的文件。加密完成后生成 勒索提示文件。

恶意代码执行的关键一步是宏代码的手动启用。多数 Office 软件默认不运行宏代码,在遇到带宏代码的文档时,需要用户手动启用。同时, Office 2010 遇到带不可信宏代码文件会弹出提示信息,如下图所示。因此只有用户单击“启用宏”,恶意代码才能得到执行。

恶意宏代码分析

实验室从受害者主机中筛选出 invoice_J-61387625.doc 、 NewDoc 115.docm 两个典型样本。

*.doc 文件使用 Word 2003 打开即可运行宏代码。而主机安装 Office 2007 及以上版本的 Office 软件时,宏代码是否能运行对后缀名有严格的要求,后缀名分为 .docx 、docm、dotx、dotm四种,打开*.docx文件或兼容低版本的* .doc 文件时默认禁止宏代码运行,故恶意代码作者需要再次构造 *.docm 文件,保证 Office 2007 以上版本也能执行恶意代码。

在invoice_J-61387625.doc中包含两个模块Module1和Module2,New Doc115.docm包含Module1一个模块。但对比两个文件中的函数发现,存在同名函数AddSensors()、CheckBins()、SaveMaps()。

函数分布如下图所示:

进一步对比发现,同名函数内除了变量名不同,可执行代码均相同。 CheckBins()与 getTypeBodyCell() 、 CheckMaps() 与 MimoNasM() 、存在相似代码,ConnectMaps() 与 OnasOn() 基本相同。

由此可以确定两个样本的恶意代码同源,可以猜测作者为了达到兼容 Office2007 以上版本,找来一串 .docm 文件的合法宏代码,将原始代码粘贴插入到函数中,并修改入口函数,达到执行恶意代码的目的。有意思的是,从函数名与函数内容中看出,恶意代码作者找到的是一串贪吃蛇游戏的代码。

现在我们以 invoice_J-61387625.doc 为例对恶意宏代码进行分析:

如上如所示,打开从文档处可以找到入口函数 AddSensors (),顺着入口函数,可以清晰看到函数间的调用关系。

宏代码关键函数分析如下:

恶意代码作者把字符串常量保存在UserForm1.Label1.Caption中,使用“/”符号分隔,初始化变量时将其取出放到DrinkSun变量中 。    UserForm1.Label1.Caption内容如下:Microsoft.XMLHTTP/Adodb.Stream/Shell.Application/WScript.Shell/Process/GET/TEMP/Type/Open/write/responseBody/savetofile/ladybi.txt

KogdaGe_7变量中保存的数组是经过混淆的访问locky的url,红色部分为将数组解密成url的代码。

解密完成后的url为:

www.jesusdenazaret.com.ve/34gf5y/r34f3345g.exe

函数尝试对外连接成功后,服务器返回locky文件的二进制流数据,代码将其保存到临时文件夹路径下,注:DrinkSun字符串数组,即UserForm1.Label1.Caption以“/”分隔的字符串,因此DrinkSun(6)为“TEMP”DrinkSun(12)为“ladybi.txt”,字符串中没有“t”,文件名即为“ladybi.txt”。

最后一步,把黑客服务器返回的locky文件数据流写到“ladybi.txt”中,并执行。

虽然连接下载恶意代码服务器的url是写死在程序中的,但不同样本访问的域名却不相同,犯罪集团拥有大量可控的服务器。采集到部分样本url如下:

www.jesusdenazaret.com.ve/34gf5y/r34f3345g.exe

feestineendoos.nl/system/logs/7623dh3f.exe

jsteksys.com/4/4_b9ffd5c5.exe

Locky主体svchost.exe恶意软件分析

宏代码下载的文件是一个Microsoft Visual C++编译的exe文件,文件名由宏代码决定,执行后其自动更名为svchost.exe,故将locky主体样本命名为svchost.exe。

svchost.exe主要执行流程如下图:

1.创建“Locky”注册表项:

主要注册表如下:

HKEY_CURRENT_USERSoftwareLocky

HKEY_CURRENT_USERSoftwareLockyid

HKEY_CURRENT_USERSoftwareLockypubkey

HKEY_CURRENT_USERSoftwareLockypaytext

HKEY_CURRENT_USERSoftwareLockycompleted

程序可以根据HKEY_CURRENT_USERSoftwareLockycompleted项,判断主机是否加密完毕,加密完毕则退出程序。

2. 检查自身是否在临时目录下,命名成svchost.exe

如果自身不在临时文件目录下或未命名svchost.exe,恶意代码把自身拷贝到~Temp/svchost.exe并删除原始文件。

3. 读取本机信息

识别的操作系统:

Windows 2000、Windows XP、Windows 2003、Windows 2003 R2、Windows Vista、Windows 、Server 2008、Windows 7、Windows Server2008 R2、Windows 8、Windows Server 2012、Windows 8.1、Windows Server 2012 R2、Windows 10、Windows Server 2016 Technical Preview

可见恶意软件兼容从Windows 2000到Windows 10的操作系统版本。

上图为判断系统是否为X64系统

4. 构造URL 

其中sub_40467B函数是产生域名的函数,sub_4046F5函数作用为拼接得到完整URL。

恶意软甲根据本机环境随机从域名列表中选取域名,以下是实测中截获的部分域名:

mxdboggndfjpnuu.fr

ekfbhxkaoigjyj.uk

racnbf.ru

fpceaoggl.pm

fpceaoggl.pm.localdomain

wfuiglgv.be

Wfuiglgv.be.localdomain

5.填充传送参数

构造参数主要有:

id      编号,标识计算机

act   与C&C服务器交互的指令

affid          未知

lang           计算机所使用的语言

corp          未知

serv           未知

os     操作系统

sp     补丁包

x64   是否为64位操作系统

encrypted         加密成功

failed        加密失败

length       长度

path          路径

其中act指令主要有四种:

getkey 开启加密流程前发送,向服务器获取公钥

stats                  单个文件加密完成时发送,附带加密文件具体信息,如加密成功或失败,加密长度等

report 发送加密文件的列表

gettext    加密完成时发送,表示获取提示用户的勒索信息

6. 填充传送参数

构造参数主要有:

id      编号,标识计算机

act   与C&C服务器交互的指令

affid          未知

lang           计算机所使用的语言

corp          未知

serv           未知

os     操作系统

sp     补丁包

x64   是否为64位操作系统

encrypted         加密成功

failed        加密失败

length       长度

path          路径

其中act指令主要有四种:

getkey 开启加密流程前发送,向服务器获取公钥

stats                  单个文件加密完成时发送,附带加密文件具体信息,如加密成功或失败,加密长度等

report 发送加密文件的列表

gettext    加密完成时发送,表示获取提示用户的勒索信息

7. 遍历磁盘并创建线程遍历文件夹,找到所有文件

递归调用FindFirstFileW与FindNextFileW两个API函数遍历所有文件。该处使用 多线程同时进行遍历,加快加密文件速度。

8. 加密文件

恶意软件使用 windows crypto API 进行加密,既不需要自己设计复杂的加密算法,又能确保中招主机能顺利执行。

加密完成后,将文件复制成后缀名为.locky的文件,删除源文件。

9. 加密结束

待所有加密线程退出,给C&C服务器反馈加密情况,并销毁密钥

10. 删除全盘所有卷影副本

为防止执勒索用户通过卷影副本恢复源文件,恶意代码执行vssadmin.exe Delete Shadows /All /Quiet。

11. 形成勒索提示文件

每个被加密文件的相同目录下释放一个名为_Locky_recover_instructions.txt的勒索提示文件。

总结

通过对Locky样本的深入分析和对攻击事件的还原,我们知道勒索者恶意软件Locky的攻击手法并不新奇,一般是通过邮件形式传播,需要被攻击用户主动打开附件内容并点击允许宏代码执行。可见传统的攻击手段并没有失效,office宏病毒的破坏力依然存在。

截至目前,样本Word文件宏代码访问的服务器、locky主体交互的C&C服务器均已关闭,一些域名已经无效,故当前截获的Word样本无法连接服务器下载locky恶意软件,已存在的locky恶意软件也因无法从C&C服务器获取公钥,从而无法加密本地文件。但此次事件的威胁依然存在,存在的大量样本变种表明,勒索者事件是有组织的犯罪团伙所为,恶意代码作者只需修改代码中连接服务器的域名信息或者IP地址,便可以大批量再生产有效攻击样本,罪犯们需要做的仅仅是购置非法域名和服务器。

值得注意的是,前几年的勒索事件因国人少有使用比特币的习惯,基本没有用户为此买单,勒索者矛头并没有指向中国内地,中招者纯属“躺枪”。然而,此例样本可以弹出中文勒索提示,表明勒索事件开始蔓延到国内。

2016 年勒索类恶意软件将愈演愈烈,加密后的文件很难被找回已为业界公认。对付勒索类恶意软件依然是以预防为主:定期备份重要文件,当心陌生邮件及附件,在打开带宏代码的Office文件时应特别注意,确认可信后再启用宏运行。

Tag标签: 深度分析   软件  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规