前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >美丽又危险的勒索软件Maktub Locker

美丽又危险的勒索软件Maktub Locker

作者头像
FB客服
发布2018-02-07 17:34:58
9540
发布2018-02-07 17:34:58
举报
文章被收录于专栏:FreeBuf

Maktub Locker是一款勒索软件,GUI界面设计的很漂亮,并且有着一些有趣的特征。勒索软件的原始名字来源于阿拉伯语言”maktub”,意思是“这是写好的”或者”这是命运”。作者很可能想通过这样的引用来描述勒索软件的行为,暗示这是不可避免的,就像命运一样。

0x01 分析样本

74add6536cdcfb8b77d10a1e7be6b9ef b24952857ff5cb26b2e97331800fa142 <- 主要分析这个样本 38eff2f7c6c8810a055ca14628a378e7 – payload (C.dll)

特别感谢 MalwareHunterTeam 和 Yonathan Klijnsma 提供的样本

0x02 行为分析

勒索软件通过邮件钓鱼活动,伪装成一个服务更新的文档文件。这次文档的主题很完整:附件的名字类似于( “TOS-update-[…].scr”, “20160321_tos.scr”),而且图标也类似于文档图标:

勒索软件使用的一个欺骗技巧是释放一个真正的文档,而且是一个TOS的更新说明,.rtf格式:

当用户正在忙于阅读文档时,恶意程序就开始在后台运行,同时加密受害人的文件。

加密进程

Maktub Locker不需要从CnC服务器上下载密钥,数据可以在线下加密。加密文件的扩展名是随机的,在运行时生成,模式为:[a-z]{4,6}

比较新奇有趣的是,加密后的文件比原始文件更小。似乎勒索软件不仅仅加密而且还压缩。

原始文件和大小:

加密后的文件:

压缩文件的原因之一可能是加速文件加密过程。

不同的样本加密后的文件内容是不同的。然而,相同的文件加密后的文件是相同的。我们可以得出结论,程序运行一次随机密钥只会生成一次。之后,每个文件都会使用这个相同的密钥加密。

加密完成之后,就会弹出如下窗口:

提供给受害人指定格式的key:82个,每个单元5个字符(单元格式:[A-Z0-9]{5})。样本文件再次运行时,key也会重新生成。

样本的信息也可以在一个HTML文件(_DECRYPT_INFO_[$EXTENSION].html)中找到。这个文件在每个目录中都会被释放。

为受害人准备的网址

Maktub Locker和其他勒索软件一样,都会提供一个TOR网址。和勒索软件描述的一样,网址只提供英文版的。为了让受害人能够访问到网站,需要在一个文档输入框内输入上述82单元块内的key:

之后就会重新连接到主站。和其他勒索软件对比,Maktub Locker的网站设计的很好看,而且网站说明用辞很文明礼貌:

在demo中可以选择解密两个文件:

解密价格最低1.4BTC,并且随着时间的推移,价格也不断攀升。作者也会提示,如果太久不付款可能会导致文件永不恢复:

0x03 内部构造

Maktub Locker是通过crypter/FUD编写的,因此代码不可读。并且,由于FUD的功能,将会导致样本的检测变得更加困难,同时检测率在刚开始的一段时间内很低。

解压

执行FUD的起始代码。首先我们会看到大量的无用API的调用和随机字符串:

这段代码用于绕过检测恶意病毒行为的工具。随后将会被新的代码重写。然而,这里依旧不是恶意代码,而是其他的绕过检测技术的代码。下面是解压TOS更新服务的代码(首先解压文件然后释放到%TEMP%文件夹中):

真正的恶意代码在另一个模块当中,解压到一个动态分配的内存中:

可以看到2个线程入口:0x10001230。他们都属于恶意代码的模块。Dump下数据,可以看到一个新的PE文件:

这个PE文件动态分配在一个连续的内存区域,在一个虚拟节区被使用。

不幸的是,dump下来的并不是一个独立的payload,文件头是无效的:

这是为了防止payload被自动dump的工具dump下来的技术。然而,如果我们在正确的时刻解压,在文件头被重写前,我们可以恢复payload。显示的是一个DLL文件(upx加壳):

加密文件的代码是在一个叫做”one”的函数中。

DLL文件是被UPX加壳的,因此可以容易的脱壳,脱壳后的DLL文件的布局如下(脱壳后的DLL:38eff2f7c6c8810a055ca14628a378e7 ):

但是依旧看不到有效字符串。导入表看起来也是毫不相关的(我们找不到类似Windows Crypto API的函数名)。这是由于导入表被动态的解析了。程序刚开始执行时,函数”one”自动加载导入表,解密文件名:

之后,通过动态加载的句柄访问。

执行流程

恶意软件首先将所有的文件进行列表。同时解压内置的配置与限制的路径列表并攻击可执行文件。每个处理路径首先核对这个列表。

下面你可以看到,选择要加密的代码的片段打开文件。通过句柄调用函数CreateFileA,动态加载到EAX寄存器:

随后,新的文件创建,添加一个扩展名:

起初,这两个文件共存于系统 - 新创建的文件大小为0 。当加密的内容填充后,原始文件被删除。

加密过程完成之后,该恶意软件创建并弹出对话框。

下面是与勒索相关的GUI:

哪些文件被袭击

有选择行的攻击不同的国家。本例中,在加密文件前,程序会检测区域语言设置列表,如果发现是俄罗斯语言(俄罗斯语言的值是:0x419=1049),那么程序将自动退出:

加密的文件也是预先定义的文件目录:

"\\internet explorer\\;\\history\\;\\mozilla\\;\\chrome\\;\\temp\\;\\program files\\;\\program files (x86)\\;\\microsoft\\;\\chache\\;\\chaches\\;\\appdata\\;"

内置的配置还指定了哪些扩展攻击

像其他勒索软件,它的攻击不仅在本地磁盘,而且包括安装到虚拟环境的网络共享以及外部硬盘驱动器的磁盘。

加密过程

Maktub Locker使用windows Crypto API。但是,当我们从分析结果得出结论是,它不为每个文件都生成随机密钥。让我们来看看它使用什么样的技术来获得key...

本次为用户生成的kye是:

X25HE-J53ZU-QERDZ-ZNUJ3-SERJ6-J617E-UUASZ-AFG2G-83B08-2SHC1-AUYFZ-GJHF2-W7321-144TM VKFKR-6TKRV-STG4B-CE5MZ-TAH4W-MP541-GD3SB-HE43J-ZF4TK-ZNZTG-R7ZBZ-AKM2U-T6TYN-53J7H MU6J6-BTSJC-FQVQR-EH755-C1WCJ-7SNPT-MHFBS-Q638V-MASEB-R16HW-P84P2-7EEX8-KXAHB-D10F7 GF071-U37K3-GJ5Q5-WD0PD-2EG16-KMC5R-RPCBX-R8EV3-ZPXQV-TDVXM-SEEFX-XK23J-FCH4Z-RNBPN XE6X5-4W8CT-WJQJU-071T5-DSUZW-JGSZA-KFKZ6-4DU0S-80H1H-CEP2J-PDSKA-UXBR8-8C1BB-SDQNC 1C8F7-HPZ2G-Q5JVN-F6WXH-PMUSR-8G4HT-RNYVW-DZNQ3-Y8KZJ-NYC1G-SPR3T-U5GD5

让我们研究一下这个密钥和用于加密文件之间的关系。到目前为止,我们知道,它必须在本地生成。

首先,它初始化的两个加密文本 - 两者均具有相同的设置,使用提供程序类型:

获得32位随机数,使用函数CryptGenRandom:

创建随机数的MD5(使用 CryptCreateHash, CryptHashData)。

接着使用函数CryptderiveKey,将MD5值转化为256bit的AESkey(AlgID=0x6610->CALG_AES_256)。

导入RSA公钥(2048bit)。这个Key硬编码在二进制文件中。

32byte随机数(基于AES key),通过RSA加密buffer:

输出使用预定义的字符集转化为受害人使用的可视化ID:

这就是为什么,当使用者提交他/她的个人ID,该攻击者,使用适当的私钥,可以解密原始数据,轻松地恢复随机AES密钥。

此操作后,将先前生成的AES密钥被用于加密的文件。

首先,文件内容由专用函数压缩:

之后buffer中保存着AES加密后的数据,使用CryptEncrypt

加密后的数据保存在一个生成的后缀名的文件中。

0x04 结论

Maktub Locker显然是由专业人士开发的。从完整的产品的复杂性可以看出,它是一个团队的不同专业领域成员的合作成果,甚至包括包装业务的网站,这一切都是精心打磨。我们不知道是否crypter / FUD是由同一团队设计 - 它也可能是在黑市上被纳为可用的商业解决方案。但是,防御其的唯一途径 - 核心DLL也被模糊处理了,并且可以这肯定是由经验非常丰富的人编写的。

*参考来源:blog.malwarebytes.org,FB小编老王隔壁的白帽子翻译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-04-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x01 分析样本
  • 0x02 行为分析
  • 0x03 内部构造
  • 0x04 结论
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档