未加星标

GandCrab_v5.0.3勒索病毒―JS代码分析与Loader分析

字体大小 | |
[前端(javascript) 所属分类 前端(javascript) | 发布者 店小二05 | 时间 2018 | 作者 红领巾 ] 0人收藏点击收藏

GandCrab_v5.0.3勒索病毒―JS代码分析与Loader分析
概述

Gandcrab家族算是勒索病毒中最“出名”的了,它仅仅在半年的时间了就发布了从v1.0到v5.0.3,截止到我分析前,已经出现了v5.0.5版本了,我这个分析的是v5.0.3的JS脚本产生的勒索病毒。勒索病毒的最终执行的Payload部分我就不分析了,因为和之前的版本上没有太大的改变,但是这个Loader很有意思,用到了在2017年BlackHat大会上提到的ProcessDopplegnging技术,有兴趣的可以看看。

该JS脚本的功能:

(1)对抗Avast杀软

(2)对抗windows Defender

(3)对抗MSC微软安全客户端

(4)对抗Ahnlab安博士杀软

(5)生成GandCrabV5.0.3勒索病毒变种样本并执行

详细分析

下图是经JS格式转换后的混淆脚本,需要通过Chrome浏览器动态调试得到源码,在hrodjgengsl函数处下断,查看参数信息即是解混淆后的JS源码了


GandCrab_v5.0.3勒索病毒―JS代码分析与Loader分析

经JS格式化后的JS源码部分(两张图)


GandCrab_v5.0.3勒索病毒―JS代码分析与Loader分析
GandCrab_v5.0.3勒索病毒―JS代码分析与Loader分析
1、检查avast杀毒服务是否运行,如处于运行状态,生成kyoxks.js脚本并运行,脚本内容如下:
GandCrab_v5.0.3勒索病毒―JS代码分析与Loader分析

脚本功能:

1、首先在注册表HKEY_CURRENT_USERSOFTWAREycsdrrpvrylqzhlnv下写一段base64加密的powershell脚本

2、通过创建计划任务以固定间隔时间调PowerShell运行它。

解密之后的powershell代码如下,这其中有一段C#代码:


GandCrab_v5.0.3勒索病毒―JS代码分析与Loader分析

C#代码―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――


GandCrab_v5.0.3勒索病毒―JS代码分析与Loader分析
GandCrab_v5.0.3勒索病毒―JS代码分析与Loader分析

――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――


GandCrab_v5.0.3勒索病毒―JS代码分析与Loader分析

第一段Powershell脚本主要功能:

1、首先拷贝对应的文件到临时目录

2、找到对应路径下Avast更新程序并且动

3、清除对应路径下缓存数据

第二段C#代码主要功能:

C#代码中定义了类:a12,其中在a12这个类中定义了a10、a11、a13、a14四个方法

第三段Powershell脚本主要功能:

执行调用C#代码中方法

a10方法主要是找到Avast进程得到有效句柄后从死循环中break退出。

a11和a13方法主要是向Avast程序发送消息,按下Tab键、空格键,释放Tab键、空格键。

a14方法主要是将Avast窗口程序隐藏

2、检查WdNisSvc、WinDefend服务是否运行,如处于运行状态,生成nykvwcajm.js脚本并运行,脚本内容如下:


GandCrab_v5.0.3勒索病毒―JS代码分析与Loader分析

主要功能:

1、利用打开fodhelper.exe进程使cmd.exe Bypass UAC的目的,进而关闭Windows Defender杀毒功能及强制结束Windows Defender服务程序MSASCui.exe。

判断是否是Win 10系统,如是通过将cmd.exe /C “powershell Set-MpPreference -DisableRealtimeMonitoring $true && taskkill /im MSASCui* /f /t命令写入到HKEY_CURRENT_USER\Software\Classes\ms-settings\shell\open\command\注册表中,并以隐藏窗口的形式打开fodhelper.exe,这时就会执行上述注册表中写入的命令。同时最小化桌面上的所有窗口。再删除相应的注册表HKEY_CURRENT_USER\Software\Classes\ms-settings\shell\open\command\。

2、利用打开eventvwr.exe进程使cmd.exe Bypass UAC的目的,进而关闭Windows Defender杀毒功能及强制结束Windows Defender服务程序MSASCui.exe。

判断是否是Win 7系统,如是通过将cmd.exe /C “sc stop WinDefend && taskkill /im MSASCui* /f /t命令写入到HKEY_CURRENT_USER\Software\Classes\mscfile\shell\open\command\注册表中,并以隐藏窗口的形式打开eventvwr.exe。这时就会执行上述注册表中写入的命令。执行完后再删除注册表HKEY_CURRENT_USER\Software\Classes\ms-settings\shell\open\command\。

3、如果WdNisSvc或WinDefend服务存在,则持续检测20s。

3、检查NisSrv服务是否运行,如处于运行状态,生成bervcptyvulur.js脚本并运行,脚本内容如下:
GandCrab_v5.0.3勒索病毒―JS代码分析与Loader分析

NIsSrv指的是微软网络实时检测服务,是微软在系统开机时启动的一个用来检测网络的反病毒服务。卸载Microsoft Security Client程序命令:MsiExec.exe /X{2AA3C13E-0531-41B8-AE48-AE28C940A809}

1、利用打开fodhelper.exe进程使MsiExec.exe Bypass UAC的目的,进而以最小化的方式静默卸载Microsoft Security Client程序。

判断是否是Win 10系统,如是通过将MsiExec.exe /X {2AA3C13E-0531-41B8-AE48-AE28C940A809} ACCEPT=YES /qr+ /quiet命令写入到HKEY_CURRENT_USER\Software\Classes\ms-settings\shell\open\command\注册表中。并以隐藏窗口的形式传入C:Windowsfodhelper.exe参数打开explorer.exe。这时就会执行上述注册表中写入的命令。再删除注册表项HKEY_CURRENT_USER\Software\Classes\ms-settings\shell\open\command\。

2、利用打开eventvwr.exe进程使MsiExec.exe Bypass UAC的目的,进而以最小化的方式静默卸载Microsoft Security Client程序。

判断是否是Win 7系统,如是通过将MsiExec.exe /X {2AA3C13E-0531-41B8-AE48-AE28C940A809} ACCEPT=YES /qr+ /quiet命令写入到HKEY_CURRENT_USER\Software\Classes\mscfile\shell\open\command\注册表中,并以隐藏窗口的形式传入C:Windowseventvwr.exe打开explorer.exe。这时就会执行上述注册表中写入的命令。再删除相应的注册表项HKEY_CURRENT_USER\Software\Classes\ms-settings\shell\open\command\。

3、如果NisSrv服务存在,则持续检测90s。

4、检查V3 Service服务是否运行,如处于运行状态,再检查tgydmilslvp.txt文件是否存在%USERPROFILE%目录下,如存在就生成recjyzcz.js脚本并运行,不存在该txt文件就生成内容是777的tgydmilslvp.txt,脚本内容如下:


GandCrab_v5.0.3勒索病毒―JS代码分析与Loader分析

主要功能:

1、利用打开fodhelper.exe进程使Powershell.exe Bypass UAC的目的,进而执行写在注册表中的Powershell脚本。

判断是否是Win 10系统,如是通过将djziapwzi变量所赋的值(Powershell脚本)写入到HKEY_CURRENT_USER\Software\Classes\ms-settings\shell\open\command\注册表中,并以隐藏窗口的形式传入C:Windowsfodhelper.exe参数打开explorer.exe。这时就会执行上述注册表中写入的命令。再删除相应的注册表项HKEY_CURRENT_USER\Software\Classes\ms-settings\shell\open\command\。

2、利用打开eventvwr.exe进程使Powershell.exe Bypass UAC的目的,进而关闭Windows Defender杀毒功能及强制结束Windows Defender服务程序MSASCui.exe。

判断是否是Win 7系统,如是通过将djziapwzi变量所赋的值(Powershell脚本)写入到HKEY_CURRENT_USER\Software\Classes\mscfile\shell\open\command\注册表中,并以隐藏窗口的形式传入C:Windowseventvwr.exe打开explorer.exe。这时就会执行上述注册表中写入的命令。再删除相应的注册表项HKEY_CURRENT_USER\Software\Classes\mscfile\shell\open\command\。

3、如果WdNisSvc或WinDefend服务存在,则持续检测60s。

解密后Powershell脚本:


GandCrab_v5.0.3勒索病毒―JS代码分析与Loader分析

主要功能:

查找Ahnlab安博士杀软的卸载程序,拷贝到指定位置后并执行。

5、解密Payload并写入到dsoyaltj.exe文件中后执行。
GandCrab_v5.0.3勒索病毒―JS代码分析与Loader分析

以上是比较详细的脚本分析内容。

6、ProcessDoppelgnging技术与Process Hollowing技术交叉使用的恶意Loader

Loader流程图如下:


GandCrab_v5.0.3勒索病毒―JS代码分析与Loader分析

首先简单说一下ProcessDoppelgnging攻击技术,这个技术是2017年欧洲BlackHat大会上由网络安全公司enSilo两名研究人员提出的新型在野攻击,其中还用到了NTFS文件系统事务回滚机制,相关的BlackHatPDF文档在最后会添加到附件。

ProcessDoppelgnging攻击技术:

1、创建一个新事务并这个事务中直接创建一个新文件

2、将新创建的文件映射到进程新创建的section中

3、利用NTFS文件系统事务回滚机制,回滚到之前的无创建文件状态

4、再跳转执行内存中的section部分的payload

上述介绍的是常规ProcessDoppelgnging攻击技术,本Loader结合使用了Process Hollowing技术,配合使用后较为复杂。以下是详细分析:


GandCrab_v5.0.3勒索病毒―JS代码分析与Loader分析

以上程序经动态调试之后首先发现该程序通过申请空间并解密出PE文件,然后随机创建挂起原始文件状态的合法进程(本文是wermgr.exe,还有可能是svchost.exe),这种操作让我们想起了Process Hollowing技术常用的创建傀儡进程的手法。我们了解下两种技术不同点,就能知道该样本作者如何将两种技术交叉使用的。

与Process Hollowing技术不同点:

1、在ProcessDopplegnging技术中,创建进程的操作需要很长时间,并使用官方未公开的API:NtCreateProcessEx。

2、在ProcessDoppelgnging技术中,新进程不是从原始文件创建的,而是从特殊缓冲区(section)创建的。

如下图所示:


GandCrab_v5.0.3勒索病毒―JS代码分析与Loader分析
GandCrab_v5.0.3勒索病毒―JS代码分析与Loader分析

因为NTDLL是一个特殊的低级DLL。基本上,它只是系统调用的一个包装器。它与系统中的其他DLL没有任何依赖关系。由于这个原因,它可以方便地加载,而无需填充其导入表。其他系统DLL(如Kernel32)在很大程度上依赖于从NTDLL导出的函数。所以许多用户层监视工具Hook并拦截NTDLL导出的函数。恶意程序作者知道这一点,所以有时为了躲过这种机制,他们会选择加载一个新的NTDLL副本。查看内存映射表,我们看到附加的ntdll_1作为映像加载,和其他DLL一样,这种类型的映射是使用NTDLL的。但是NTDLL默认加载到每个可执行文件中,并且官方的API无法加载相同的DLL两次。在这里它们使用一种比较好的解决方式:调用以下函数将文件以一个section的方式加载

1、ntdll.NtCreateFile 打开ntdll.dll文件

2、ntdll.NtCreateSection 在ntdll文件中创建一个section

3、ntdll.ZwMapViewOfSection 将section映射到进程地址空间,ntdll模块文件就能映射进内存了。


GandCrab_v5.0.3勒索病毒―JS代码分析与Loader分析

这种方式非常聪明,因为DLL映射类型为Image,所以它看起来像是以普通的方式加载,这样的操作可以绕过各种安全产品的检测与拦截。又以同样的方式映射了wermgr.exe文件。


GandCrab_v5.0.3勒索病毒―JS代码分析与Loader分析
7、使用NTFS事务创建新文件

简要介绍一下NTFS事务是什么,这种机制通常在数据库上运行时使用,它们存在于NTFS文件系统中。NTFS事务将一系列操作封装到一个单元中。在事务内部创建文件时,在提交事务之前,外部任何人都无法访问它。ProcessDoppelgnging使用它们来创建不可见的Payload文件,加载程序创建一个新事务,在该事务中创建一个新文件。首先,调用NTDLL中的函数ZwCreateTransaction。再调用RtlSetCurrentTransaction和ZwCreateFile(所创建的文件是%TEMP%\ Liebert.bmp)。然后调用ZwWriteFile将缓冲区内容写入文件。我们可以看到正在写入的缓冲区中包含新的PE文件:第二阶段Payload。通常,对于此技术,文件仅在事务中可见,并且不能由其他进程(如AV扫描程序)打开。

本文前端(javascript)相关术语:javascript是什么意思 javascript下载 javascript权威指南 javascript基础教程 javascript 正则表达式 javascript设计模式 javascript高级程序设计 精通javascript javascript教程

代码区博客精选文章
分页:12
转载请注明
本文标题:GandCrab_v5.0.3勒索病毒―JS代码分析与Loader分析
本站链接:https://www.codesec.net/view/610747.html


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 前端(javascript) | 评论(0) | 阅读(41)