报告名称:  某勒索类软件分析报告   

作者:        李东

报告更新日期:

样本发现日期:

样本类型:

样本文件大小/被感染文件变化长度:

样本文件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函数来执行解密操作。

使用AES加密的勒索类软件分析报告的更多相关文章

  1. AES加密解密 助手类 CBC加密模式

    "; string result1 = AESHelper.AesEncrypt(str); string result2 = AESHelper.AesDecrypt(result1); ...

  2. AES加密解密工具类封装(AESUtil)

    package club.codeapes.common.utils; import org.springframework.util.Base64Utils; import javax.crypto ...

  3. php的AES加密、解密类

    <?php /** * php.ios.Android 通用的AES加密.解密方法 */ namespace Common\Business; class AESCrypt { /** * 初始 ...

  4. 使用AES加密的帮助类

    在开发中经常使用加密/解密对一些内容进行处理,比如密码在存入数据库之前先经过加密处理等等,这里就把一个加密帮助类代码贴出来,供以后查找使用. 这个帮助类主要功能是对字符串和字节数组进行加密解密处理. ...

  5. 自写AES加密解密工具类

    此类主要用于加密与解密,采用128位ECB模式,PKCS5Padding填充补位. 可使用方法为加密返回二进制encryptBin(content, key).加密返回十六进制encryptHex(c ...

  6. 【Android工具】DES终结者加密时报——AES加密演算法

    转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 在前面的两篇文章中.我们介绍了DES算法,3DES算法以及他们的Android程序实现,并研究了怎样才干实现 ...

  7. AES加密解密的例子小结

    话不多说,先放上代码,一共有两个文件:AES.php(aes算法类文件)和aesDemo.php(应用实例文件),这里只贴出aesDemo.php,其他的看附件吧!aesDemo.php: 例子,   ...

  8. java独立小程序实现AES加密和解密

    一.需求: web项目中配置文件配置的密码是明文的, 现在需要修改成密文, 加密方式采用AES, 于是写了个工具类用于加密和解密. 又因为这个密码是由客户来最终确定, 所以为了部署时方便起见, 写了个 ...

  9. php AES加密解密的例子

    一共有两个文件:AES.php(aes算法类文件)和aesDemo.php(应用实例文件) aesDemo.php:例子, <?php require_once('./AES.php'); // ...

随机推荐

  1. Blender学习笔记

    本文是根据B站上面,顺子老师的视频学习整理,建模部分,并未设计到渲染,内容整理所得 下载安装,可以直接在blender官网下载,建议下载最新版吧.因为每次软件的更新都会有新的东西出现,在使用中把你的心 ...

  2. mysql中data和datatime的区别

    1.显示格式的区别 Date显示格式:YYYY-MM-DD:DateTime显示格式:YYYY-MM-DD HH:mm:ss. 2.显示范围的区别 Date显示范围是1601-01-01 到 9999 ...

  3. @resource、@Autowired、@Service在一个接口多个实现类中的应用

    Spring在没有引入注解之前,传统的Spring做法是使用.xml文件来对bean进行注入,所有的内容都需要配置在.xml文件中,使配置和编程分离,却增加了可读性和复杂度. Spring注解将复杂的 ...

  4. pronaunciation

    5 strong  weak s            d n            t l             th you and I  -> you an dai -> you ...

  5. PostgreSQL 与 PostGIS

    PostgreSQL 是一种对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大.特性最丰富和最复杂的自由软件数据库系统.它起源于伯克利(BSD)的数据库研究计划,目前是最重要的开源数据库产 ...

  6. 【GIT】【命令行】

    1) 进入某没有做git的目录: git init ->username@DESKTOP-765V31O MINGW64 ~/PycharmProjects/user_data (master) ...

  7. HDU - 3652

    #include<stdio.h> #include<string.h> #include<math.h> #include<time.h> #incl ...

  8. Unity --- 在原目录中,将选中的Texture剥离为rgb和alpha

    using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; us ...

  9. 雷林鹏分享:jQuery EasyUI 数据网格 - 动态改变列

    jQuery EasyUI 数据网格 - 动态改变列 数据网格(DataGrid)列可以使用 'columns' 属性简单地定义.如果您想动态地改变列,那根本没有问题.为了改变列,您可以重新调用dat ...

  10. HBase Block Cache(块缓存)

    Block Cache HBase提供了两种不同的BlockCache实现,用于缓存从HDFS读出的数据.这两种分别为: 默认的,存在于堆内存的(on-heap)LruBlockCache 存在堆外内 ...