您现在的位置: 华盟网 >> Hack >> 牧马天地 >> 正文

[组图]勒索软件 “Locky”深度分析

2016/3/13 作者:金山安全 来源: freebuf
导读 ,一款家族名为”Locky”的勒索者恶意软件每小时感染德国5300台计算机,Locky由此进入人们视野。目前,Locky已经蔓延到包括德国、荷兰、美国在内的十几个国家,国内知名论坛上也陆续开始出现关于

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

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

  Locky攻击流程

  

1.jpg

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

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

  

2.jpg

  恶意宏代码分析

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

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

  

3.jpg

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

  函数分布如下图所示:

  

4.jpg

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

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

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

  

5.jpg

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

  

11111111.jpg

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

  

11111111.jpg

  恶意代码作者把字符串常量保存在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

  

11111111.jpg

  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”。

  

11111111.jpg

  最后一步,把黑客服务器返回的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主要执行流程如下图:

  

11111111.jpg

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

  

11111111.jpg

  主要注册表如下:

  HKEY_CURRENT_USER\Software\Locky

  HKEY_CURRENT_USER\Software\Locky\id

  HKEY_CURRENT_USER\Software\Locky\pubkey

  HKEY_CURRENT_USER\Software\Locky\paytext

  HKEY_CURRENT_USER\Software\Locky\completed

  程序可以根据HKEY_CURRENT_USER\Software\Locky\completed项,判断主机是否加密完毕,加密完毕则退出程序。

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

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

  3.读取本机信息

  

11111111.jpg

  识别的操作系统:

  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的操作系统版本。

  

11111111.jpg

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

  4.构造URL:

  

11111111.jpg

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

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

  mxdboggndfjpnuu.fr

  ekfbhxkaoigjyj.uk

  racnbf.ru

  fpceaoggl.pm

  fpceaoggl.pm.localdomain

  wfuiglgv.be

  Wfuiglgv.be.localdomain

  5.填充传送参数

  

11111111.jpg

  构造参数主要有:

  id 编号,标识计算机

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

  affid 未知

  lang 计算机所使用的语言

  corp 未知

  serv 未知

  os 操作系统

  sp 补丁包

  x64 是否为64位操作系统

  encrypted 加密成功

  failed 加密失败

  length 长度

  path 路径

  其中act指令主要有四种:

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

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

  report 发送加密文件的列表

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

  6.填充传送参数

  

11111111.jpg

  构造参数主要有:

  id 编号,标识计算机

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

  affid 未知

  lang 计算机所使用的语言

  corp 未知

  serv 未知

  os 操作系统

  sp 补丁包

  x64 是否为64位操作系统

  encrypted 加密成功

  failed 加密失败

  length 长度

  path 路径

  其中act指令主要有四种:

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

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

  report 发送加密文件的列表

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

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

  

11111111.jpg

  

11111111.jpg

  

11111111.jpg

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

  8.加密文件

  

11111111.jpg

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

  

11111111.jpg

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

  9.加密结束

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

  

11111111.jpg

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

  

11111111.jpg

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

  11.形成勒索提示文件

  

11111111.jpg

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

  总结

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

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

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

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

                  微信群名称:华盟黑白之道二群     华盟-黑白之道⑦QQ群: 9430885

  • 上一篇Hack:

  • 下一篇Hack: 没有了
  • 网友评论
      验证码
     

    关注

    分享

    0

    讨论

    2

    猜你喜欢

    论坛最新贴

    Hack栏目相关内容

      没有相关Hack