一个悲桑的问题 发表于 2017-12-5 15:30

【原创】一款勒索病毒的详细分析

本帖最后由 一个悲桑的问题 于 2017-12-5 15:38 编辑

感谢15PB提供的教育环境,感谢吾爱破解提供的平台!
(病毒副本解压密码:52pojie.com)
(申明:所提供的所有文件以及资料仅供研究、学习。严禁传播扩散、如有意外、概不负责!!!)
此款勒索病毒 会加密你的所有文件,并生成勒索信息!
切记、新手朋友们在虚拟机里边玩!免得造成不可挽回的后果!
不废话脱壳、 开干
(请各位大牛指导!!!   多谢!)

目录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,Ollydbg,PEID,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的内存地址 查看内存数据发现与是同样的位置


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


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


由IDA得知 如下:

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


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

后边有个对文件加密的函数

该函数中对文件进行了加密
<-完->





Hmily 发表于 2017-12-5 17:10

前面分析很详细,但加密部分没有细说?另外写内存那我一般是直接看看原始文件在内存中还是解密出来的,最好在pe还没有初始化的时候就先dump下来,这样完整的也不用修任何东西。

一个悲桑的问题 发表于 2017-12-5 20:02

shaokui123 发表于 2017-12-5 19:31
是国外的还是国产的
中毒界面有图片吗
中毒后能恢复吗

国内还是国外的不知道
中毒界面有图片 没放上来
因为是虚拟机破解所以没有尝试过恢复

weizhiyao 发表于 2017-12-5 15:48

{:17_1074:}一脸蒙蔽的看不懂

一个悲桑的问题 发表于 2017-12-5 16:23

尝试个杀毒软件商提供的破解恢复软件、能否恢复!
最好的方法就是养成良好的上网习惯和备份文件的习惯!切最好备份文件存在2份以及以上{:1_903:}

飞翔的大橙子 发表于 2017-12-5 16:48

支持一下师哥{:1_921:}。

Valices 发表于 2017-12-5 16:53

楼主分析的很详细,我自己也是一个做分析的,突然感觉差距好大,还得好好学习啊~

Eternity-Myth 发表于 2017-12-5 16:58

我正在学习计算机系统与网络安全,收藏学习一个

yswl520 发表于 2017-12-5 17:09

这么深奥的东西,琢磨不透呀,扎心。

zhengzhu89 发表于 2017-12-5 17:36

厉害了我的哥

chased 发表于 2017-12-5 17:40

分析的真好,15pb牛人真多{:1_921:}
页: [1] 2 3 4 5
查看完整版本: 【原创】一款勒索病毒的详细分析