Ragnar Locker 勒索病毒分析报告
文件信息
MD5 | 文件大小 |
---|---|
6D122B4BFAB5E75F3AE903805CBBC641 | 116KB |
文件静态分析
垃圾代码
该样本包含大量的垃圾代码,来减缓分析的速度。但是其实在分析过程中发现这种垃圾代码也不会产生实际的影响:使用的垃圾代码手段很简单,就是重复执行无用循环语句。
恶意逻辑分析
#### shellcode执行逻辑![在这里插入图片描述](https://img-blog.csdnimg.cn/a8641600b9c144e585ffd11bdd063d6d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc3hyX19uYw==,size_20,color_FFFFFF,t_70,g_se,x_16)
执行解密函数,参数为Kernel32.dll的模块基址
加密获取关键函数名称:
遍历Kernel32.dll的导出表,获取目标函数
接下来调用GetProcAddress函数开始获取目标函数地址:
解密数据到申请的内存空间,调用函数3c0c20,函数的两个参数分别为解密出来的PE文件的基址和申请的内存空间基地址(这个PE文件还不标准,之后必然会进行处理)
PE数据处理之后,释放空间:
将解密出来的PE文件复制到文件加载基址处:
接下来执行的操作,其实就是将文件在内存中展开,典型的反射式加载的操作
获取部分API函数地址:SetFilePointerEx、FindClose、CloseHandle、GetNativeSystemInfo、GetTickOut、MapViewOfFile、UnMapViewOfFile、lstrcmpiW、lstrcpyA、lstrcpyW,lstrcatW、lstrlenW、CreateEventW、CreateFileMapping、LoadLibraryW、CreateProcessW等
通过获取的函数API可以大致推测接下来实现的功能:(释放文件,创建进程,进程注入等操作)
Sample2分析
将PE文件Dump出来之后进行分析:
生成字符串:
检索有关由标识符指定的语言环境的信息:(推测该样本指定地区进行投放)
azerbaijan(阿塞拜疆)、白俄罗斯、哈萨克斯坦语言、吉尔吉斯斯坦、罗马尼亚、塔吉克语、土库曼语、乌孜别克语、乌克兰语、格鲁尼亚语
注册表操作:
获取目标注册表键值内容:
将计算机名进行加密运算:(WIN-S50SAV0J2LE,计算机名存储采用UNICODE字符编码)
加密运算过程如下:
loop:
movzx ecx,word ptr ds:[edi+edx*2]
inc edx
xor ecx,0xAB01FF3c
add esi,ecx
mov eax,esi
rol eax,0xd
sub esi,eax
cmp edx,ebx
jl loop
将用户名(sam)、获取到的加密的注册表GUID值、产品名Windows 7 Professional、都进行上述的加密处理:之后将上述未处理之前的字符串进行拼接,之后再整体进行一次处理
处理之后的数据:
输出为GUID格式:
创建Event,EventName为刚才生成的GUID字符串(这东西类似于互斥体)
调用解密函数:
三次调用调用解密函数解密的数据如下
通过遍历进程和服务匹配解密出来的数据对应的服务和进程,结束指定的进程和服务:
创建进程,删除系统卷影:
如果是64位操作系统,执行函数Wow64EnableWow64FsRedirection,禁止重定向,删除卷影之后恢复重定向
调用解密函数,解密公钥数据:
调用解密函数,解密勒索信件:
创建勒索信件:
参数校验:
从这儿开始走两个分支:第一个分支是参数分支,另外的分支是没有参数的分支:
没有参数的分支
剔除指定目标文件夹
剔除目标文件以及目标后缀文件:
创建新线程
线程分析
新建线程主要功能是执行文件加密逻辑:
判断要加密的目标文件是否已经被加密过(使用加密标记进行比对)
执行加密逻辑,将加密标记写入到文件中
收尾阶段
展示勒索信件:
总结
1:该样本整体相对不是很复杂,逻辑也很清奇
2:执行的时候会调用较多winAPI的函数,执行阶段会被大多数主动防御的杀软检测到
3:该样本没有使用有效的反调试,反分析手段