欢迎访问上海学正数据技术有限公司官方网站!
首页 > 案例展示 > 企业客户案例

深度分析一款勒索加密病毒文件

更新时间:2015-06-10 21:57:00点击次数:2349次
申明:所提供的所有文件以及资料仅供研究、学习。严禁传播扩散、如有意外、概不负责!!!) 此款勒索病毒 会加密你的所有文件,并生成勒索信息! 切记、新手朋友们在虚拟机里边玩!免得造成不可挽回的后果!
(申明:所提供的所有文件以及资料仅供研究、学习。严禁传播扩散、如有意外、概不负责!!!)
此款勒索病毒 会加密你的所有文件,并生成勒索信息
切记、新手朋友们在虚拟机里边玩!免得造成不可挽回的后果!
不废话脱壳 开干
(请各位大牛指导!!!   多谢!)

目录11样本概况
21.1样本信息2
1.2测试环境及工具2
1.3分析目标2
2.具体行为分析
22.1主要行为
22.2.1 恶意程序对用户造成的危害2
2.2恶意代码分析3
2.2.1 程序总体逻辑3
2.2.2 基本行为分析3
2.2.2 网络传播分析 (略、太懒了 没有分析此步骤、不过确实网络传播 各位小伙伴不要忘记关闭网络
2.2.3 文件加密分析
1.1样本信息
MD5: DBD5BEDE15DE51F6E5718B2CA470FC3F
SHA1: 863F5956863D793298D92610377B705F85FA42B5
CRC32: 1386DD7A
1.2测试环境
平台:Windows 7 32位
工具:IDA Pro,OllyDbgPEID,LordPE
2.1行为概述
是一个勒索软件样本,样本运行后的行为
将系统内的文本、文档等文件加密,
每个文件夹都会生成文字版和图片版的勒索信息
程序会自我删除
程序会添加启动项,伪装成cmd,在cmd后面添加启动参数
2.1.1
对用户的电脑里边的所有资料进行加密
2.2 恶意代码行为分析
根据病毒的特性来分析病毒:   将病毒拖入到火绒剑中运行,并监视其动作、执行轨迹   病毒运行期间 无法打开任务管理器、cmd命令窗口等。当然别想着用OD来调试了 病毒给干掉你的OD了




鼠标右键->指定->PE文件

由上图可知:是将0x3B0000中的内容拷贝至0x400000中  由此可以得知0x3B0000中的内容可能是我们需要的PE文件,至于是否已经被解密--未知。
将内存中的0x3B0000起“鼠标右键->指定->PE文件”鼠标下移找到PE文件的相关信息因为写入是发生在跨进程写入的 所以是内存映射方式的
因此在下图中可以根据地址找到文件的大小0x3B000

在程序中进行脱壳第一次:

DUMP下来的文件拖入LordPE

将修复完毕的文件拖入OD中进行查看OK!我们运气非常好 这就是我们要的!
所以就不需要继续跟踪病毒继续去脱壳了!如果不是,那么就只能继续往下走,继续脱壳、一个个查看、直到找到你要的。
  /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
使用IDA打开病毒样本从头开始分析 IDA 与OD 实时分析 使用IDA分析程序源码如下图所述


定义完局部变量后,程序就对进程的一些判断操作什么的 无非就是判断有没有被调试、资源管理器有没有打开、有没有杀毒软件什么的吧
略过这些非主体程序接下来就是主体函数了 我们来结合OD分析

此时执行完函数SHGetfolderPathW函数时候获取到一个特殊的路径 如下图黄色所述:

两个GetProcAddress函数之后的函数sub_402170 不清楚是干什么的 我们跟进去看看
////////////////////////////////////////////////////////////////////////////

执行完函数sub_412B00后 我们可以发现 其传入的两个参数中
参数2中的值有一些变化IDA进入函数 观看 发现 其是对一个字符的抑或、位移运算什么的
由此我们大胆猜测 该函数是对字符串的加解密运算
而且还发生了字符串拷贝的作用2个加密字符串参数进去、再传一个地址



运行结果如图内存示意图,得知该函数是解密字符串的函数由此图与上图比较可知该函数是用于去掉后缀名后边的“;”的

接下来 看图说话:释放完空间后就再次申请空间、解密字符串   共计5次


那么此层函数就执行完了 我们回到上一层
///////////////////////////////////////////////////////////////////////////////
那么我们在进入到主函数的下一个函数进入里边我们用IDA观察后
如下图所示很明显 这是一个关于用户、进程等的权限操作无非是获取权限以方便执行代码
  OK 此函数我们可以略过了

我们继续往下执行发现程序运行到与0x3000的比较处
要执行一个函数 那么IDA同跟踪之进入该函数观察

///////////////////////////////////////////////////////////////////////////////



也就是说 该函数是要获取环境变量名为“windir”的内容、并存到0x12BB90中其结果为“C:\Windows”

拼接成一个特殊的字符串如上所述 是一个路径 一个特殊的路径

Access:对文件的操作权限
ShareMode:指示对象的后续打开操作只有在请求读访问时才成功。
Mode:打开文件。如果文件不存在,函数就会失败。

返回值为 -1  =  INVALID_HANDLE_VALUE
所以打开文件失败
而接下来的GetLastError所得到的结果是 2
根据IDA中 得到 程序进入一个新的if语句中 接下来是拼接字符串传入一些我们需要用到的字符串得到如下图堆栈中的字符串





由上边的IDA分析图得知 如果启动则退出while循环 并删除当前进程然后在返回1 此函数已经分析完毕  退出该函数
///////////////////////////////////////////////////////////////////////////
返回到该函数

retn 该主线程就执行完毕了
但是IDA还有东西没有执行完毕所以我们继续

OD中找到执行到该位置的代码段

下图就是我们要跳过来执行的东东

OD中如下图所述

点击函数CALL 0x00410860进入使用IDA查看



如上图将程序拖入010 查看文件偏移3C是何处!

由此得知 其位置是NT头再找到ReadFile的内存地址 查看内存数据发现与[EBP-4]是同样的位置


然后是对NT头进行操作 偏移58(下图计算器内是:F8+58)


偏移是150  所以找到偏移为150的 如上所述执行完该函数回到上一层进入此函数观察


IDA得知 如下:

在创建了两个新的线程之时  在线程回调函数中下好断点 设置一下OD


创建完两个新线程后 继续走
忽然 函数跳转到其中之一个线程中去了
上边有个函数Wow64DIsableWow64FsFolder是禁用调用线程的文件系统重定向然后接下来就是调用执行堆栈中构造的语句vssadmin.exe是:卷影复制服务     删除全部
但是在执行此线程的时候又跳到了另一个线程循环比较当前所有线程 并干掉特殊线程


后边有个对文件加密的函数
  
该函数中对文件进行了加密
  <-完->

病毒样本文件 

原创 (编辑:800li)

在线客服
咨询电话
021-54255738