使用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函数来执行解密操作。
使用AES加密的勒索类软件分析报告的更多相关文章
- AES加密解密 助手类 CBC加密模式
"; string result1 = AESHelper.AesEncrypt(str); string result2 = AESHelper.AesDecrypt(result1); ...
- AES加密解密工具类封装(AESUtil)
package club.codeapes.common.utils; import org.springframework.util.Base64Utils; import javax.crypto ...
- php的AES加密、解密类
<?php /** * php.ios.Android 通用的AES加密.解密方法 */ namespace Common\Business; class AESCrypt { /** * 初始 ...
- 使用AES加密的帮助类
在开发中经常使用加密/解密对一些内容进行处理,比如密码在存入数据库之前先经过加密处理等等,这里就把一个加密帮助类代码贴出来,供以后查找使用. 这个帮助类主要功能是对字符串和字节数组进行加密解密处理. ...
- 自写AES加密解密工具类
此类主要用于加密与解密,采用128位ECB模式,PKCS5Padding填充补位. 可使用方法为加密返回二进制encryptBin(content, key).加密返回十六进制encryptHex(c ...
- 【Android工具】DES终结者加密时报——AES加密演算法
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 在前面的两篇文章中.我们介绍了DES算法,3DES算法以及他们的Android程序实现,并研究了怎样才干实现 ...
- AES加密解密的例子小结
话不多说,先放上代码,一共有两个文件:AES.php(aes算法类文件)和aesDemo.php(应用实例文件),这里只贴出aesDemo.php,其他的看附件吧!aesDemo.php: 例子, ...
- java独立小程序实现AES加密和解密
一.需求: web项目中配置文件配置的密码是明文的, 现在需要修改成密文, 加密方式采用AES, 于是写了个工具类用于加密和解密. 又因为这个密码是由客户来最终确定, 所以为了部署时方便起见, 写了个 ...
- php AES加密解密的例子
一共有两个文件:AES.php(aes算法类文件)和aesDemo.php(应用实例文件) aesDemo.php:例子, <?php require_once('./AES.php'); // ...
随机推荐
- 阿里云centos怎么用xshell5登陆
第一种是用ssh,安装Xshell5 打开XShell 新建会话输入ip 选择新建的会话,点击连接,选择接受并保护,输入root,点击确定 输入密码 已经连接成功了,用Xshell ...
- windows服务器环境问题---api-ms-win-crt-runtimel1-1-0.dll缺失解决
安装VC++库 地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=48145
- oracle 11g RAC日志分布
oracle 下的alert日志$ORACLE_BASE/diag/rdbms/orcl/orcl1/trace/alertorcl1.log grid 下的 alert 日志 $ORACLE_HOM ...
- mysql基础篇(上篇)
一.数据库 1.数据库介绍 2.RDBMS专业术语 3.MySQL数据库 4.常用数据库命令 1.数据库介绍 :什么是数据库 数据库就是按照数据结构来组织.存储和管理数据的仓库. 我们常常讲的数据库往 ...
- Kotlin 类和对象
类定义 Kotlin 类可以包含:构造函数和初始化代码块.函数.属性.内部类.对象声明. Kotlin 中使用关键字 class 声明类,后面紧跟类名: class Runoob { // 类名为 R ...
- js判断输入的input内容是否为数字
有时候我们输入的input的内容需要判断一下是否是数字,所以为了更好的客户体验,在前端先处理一下: <input type="text" name="val&quo ...
- vue 渲染后更新数据
this.$set(this.selGetData,level,[{},{}])this.$set(this.selGetData,1,{message:"Test add attr&quo ...
- windows 安装xadmin
1.访问github :https://github.com/sshwsfc/xadmin 2.新建README.rst 并替换到下载的zip文件中 3.cmd下,进入虚拟环境使用pip instal ...
- 使用session统计在线人数
效果图如下 这里是Chrome浏览器新登录一个用户 代码展示 package com.test.Util; import java.util.ArrayList; import javax.servl ...
- [tomcat] tomcat简析(一)
1.Tomcat的顶层结构 Tomcat中最顶层的容器叫Server,代表整个服务器,Server中包含至少一个Service,用于 具体提供服务. Service主要包含两部分:Connector和 ...