使用AES加密的勒索类软件分析报告
报告名称: 某勒索类软件分析报告
作者: 李东
报告更新日期:
样本发现日期:
样本类型:
样本文件大小/被感染文件变化长度:
样本文件MD5 校验值: da4ab5e31793181df9bd83f23f132aa4
样本文件SHA1 校验值:
壳信息: 无壳
可能受到威胁的系统:
相关漏洞:
已知检测名称:
简介
[2017.2.3-10.Ransom.India.exe]是一个勒索原件,使用加密技术修改用户硬盘中的重要文件,使用户计算机无法正常使用,并以此为条件索要赎金。
被感染系统及网络症状
(1)自动打开IE浏览器并发布勒索信
(2)链接到IP地址45.76.81.110
文件系统变化
1. 在C:\ProgramData\MicroSoftWare\SmartScreen位置创建了一个SmartScreen,大小为97KB的文件
2.在硬盘每一个目录下创建了两个文件
文件名:[# RESTORING FILES #.HTML] MD5:691AE7C2C077AECFD349A5892EC05FE7
文件名:[# RESTORING FILES #.TXT] MD5:CA26604CE4DED43991CEFC5CF0EDC559
文件名:[OBBGFRPG.ONX.CRYPTOSHIELD] MD5:B25C14913787B6BB5DF7CAA428CFA9DE
3.遍历硬盘的所有目录,每个特定类型的文件都会被加密,而且名称也被修改为xxxx.xxx.CRYPTOSHIELD的形式
注册表变化
(1)修改了Run和RunOnce项,把SmartSreen.exe和病毒自身加入自启动项
(2)修改了ZoneMap项中AutoDetect和UNCAsIntranet的值,关闭了自动检测Intranet网络的功能
详细分析/功能介绍
当此勒索软件被运行后,会进行如下操作:
1.从自身的资源文件中(资源名FPOMZNTEYIIAASDAFASFDSAFASFASNDDFHJF)提取出大小为0xA055h的shellcode,并将其加载到自身进程中,此段shellcode经解密后是一个可执行的PE文件。
我们使用ResourceHacker查看文件的资源,发现PE文件在资源中处于被加密的状态
观察解密后的PE文件在内存中的状态,可以根据下图的一些标志来确定这是一个PE文件
2.程序自动修复解密后的PE文件中的IAT表,并获取入口点后执行,所有的恶意攻击都是这个PE文件中的代码执行的。
3.创建一个目录文件夹”C:\ProgramData\MicroSoftWare\SmartScreen”并把自身复制过去命名为[SmartScreen.exe],并删除[martScreen.exe:Zone.Identifier]文件(这个文件xxx),然后把[SmartScreen.exe]文件和自身加入到注册表的Run和RunOnce项中,以在系统重新启动后自动加载,此行为目的在于通过将自身伪装成IE浏览器的SmartScreen筛选器程序使其在系统文件夹中长期存留。
4.创建网络套接字并连接Ip地址45.76.81.110的站点
5.如果连接成功,则创建一个密钥容器,利用MD2算法产生一个随机的交换密钥,然后把密钥作为加密的私钥导出,导出后经某种加密算法加密,在C:\Users\Administrator\AppData\Roaming\OfficeTab\Favorites目录下创建一个文件[ExcelFavorite.acl],把加密后的私钥写入到文件中并保存在硬盘上,之后删除私钥释放密钥容器。
生成交换密钥源码如下:
生成的私钥(大小是0x114)
加密后的私钥(大小不变)
6. 获取用户名字符串经加密后与获取到的C盘卷标的序列号组合成一个字符串”C6F26321A88712E9”(不同的电脑会生成不同的字符串)。
用户名加密源码如下图:
7.上传公钥:病毒又再次打开刚刚创建的保存私钥的[ExcelFavorite.acl]文件,将其数据读取到内存中来生成如下所示的字符串,然后连接之前的站点45.76.81.110,使用HttpSendRequestA把这段字符串发送到test_site_scripts/moduls/connects/mailsupload.php.
生成的字符串:
“id=C6F26321A88712E9&numbers=----BEGIN PRIVAE KEY-----<br>6FF49A1BD27A9C1B0C9B99CD71EE99479BC0425D08157835DF2E120CB26AC21D5
F993B8BC4EDA020FF34C102BEF39FEAADD2AF8562EF98AA204AF129AF7944485CD66D5C2283<br>BA8B463C7C47E5F55B5A3BFF26347E88407A971AB01E9D4B3EC3B1CCA8AE3C4371DAA5DDD5F2245E943F3279B14337519B4B930FE2E92DED460BBC362BDB5FD3 C7D264867D3<br>5B7D1D82FDC15269C1C9750D5388ED8B640C1F06DD4420C06B23CE934426B795CCA4D939AE84EC729892B900CF66B234F74A3D1C0F6F5CC95232E930137466F2B59B708E2E81<br>06BD7A96BD6647DBD122B2A19F025278DAD2B10B4C644A484424BA4A7D3C4A0CA133F89A2D9A8918DA9A44BE0374BEFF9855198CF2D46DD0277585208DC9F2019CA5<br>-----ENDPRIVATE KEY-----&counts=”
8. 遍历每一个磁盘上的每一个文件,只要符合下图中任意一种类型,且名字中不包含字符串”# RESTORING FILES #”和"CRYPTOSHIELD”的文件,就会修改其属性为存档类型,可以被修改和删除。
9.创建一个密钥容器,使用SHA算法初始化一个哈希对象,并将之前写入到内存中的私钥(这个私钥是之前通过CSP函数获取到的未加密的私钥)作为数据加入到哈希对象中,从这段数据中产生一个对话密钥,然后使用此密钥加密每一个遍历到的符合要求的文件内的所有二进制数据并写入到新创建的文件名为xxxxx.xxx.CRYPTOSHIELD(xxxxx.xxx为原文件名被一个简单的加密算法加密后的字符串),此文件就是原文件的加密版本,最后把文件的的创建时间修改为与原文件相同。
10. 删除遍历到的符合要求的原文件。
11. 遍历每一个磁盘上的所有文件夹,并在每一个文件夹下创建[# RESTORING FILES #.HTML]和[# RESTORING FILES #.TXT]两个文件,里面保存的都是勒索信的文本信息。
12. 反虚拟机功能和反系统还原功能,调用控制台程序执行以下命令
/C vssadmin.exe Delete Shadows /All /Quiet 目的是删除计算机上的卷影副本,防止利用卷影副本来还原系统文件。ps:Windows7系统新增的“卷影副本”是在系统每次创建还原点时,会对启用了系统保护的硬盘分区上的所有文件创建一个副本,这个副本并不是简单的将文件复制备份,而是采用的增量备份原理,在硬盘中只有一个文件,但是该文件保留着修改的痕迹,能够细致地每一个文件夹都进行还原而不用再用“系统还原”来还原整个系统。
/C bcdedit /set {default} recoveryenabled No 禁用系统的启动修复功能(针对win 7 用户)
/C bcdedit /set {default} bootstatuspolicy ignoreallfailu 把启动修复功能策略修改为忽视所有错误;目的是为了防止系统被加锁后出现崩溃,然后自动还原到原始状态。
/C net stop vss 禁用vss服务,防止用户通过vss反追踪到文件的早期版本,来还原文件。
扩展:VSS是一个代码版本管理工具,和CVS是一样的。
它能防止意外的文件丢失、允许反追踪到早期版本、并能对版本进行分支、合并和管理。提供了完善的版本和配置管理功能,以及安全保护和跟踪检查功能。文件一旦被添加进VSS,它的每次改动都会被记录下来,用户可以恢复文件的早期版本,项目组的其他成员也可以看到有关文档的最新版本,并对它们进行修改,VSS也同样会将新的改动记录下来。
13. 最后打开网页文件[# RESTORING FILES #.HTML]和文本文档文件[# RESTORING FILES #.TXT],来显示勒索信息。
预防及修复措施
想要还原文件,我们就需要获取到加密所用到的私钥,这个私钥以被加密的方式保存在[ExcelFavorite.acl]文件中,我们只要破译这个加密方式,能够还原出私钥,就能够把文件都还原了。
第一种最简单的方式就是把这个程序拖进od里运行,因为这个程序自带解密算法,我们跟进去之后,把解密后的数据提取出0x114个字节,就能得到私钥了。
Dump得到的公钥
第二种方法就需要我们仔细研究解密算法了,并还原出源码了。
我们看到他的解密一共分两步,第一个函数生成了256个字节长度的key,第二个函数调用这个key来加密私钥。
关于加密算法的探究
第一个加密函数源码:
第二个加密函数源码,可以通过此源码解密恶意代码所创建的.acl文件,来获取私钥,然后调用CSP函数来执行解密操作。