一步一步分析勒索软件Darkside(中) - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

一步一步分析勒索软件Darkside(中)

fanyeee 技术 2021-07-21 09:00:00
232812
收藏

导语:​在本文中,我们继续从技术角度为读者深入分析勒索软件Darkside。

在本文中,我们继续从技术角度为读者深入分析勒索软件Darkside。

一步一步分析勒索软件Darkside(上)

系统权限

该恶意二进制程序可以不带参数运行,或使用一个、两个或三个参数运行(这些情况将在后面介绍)。正如我们在下面看到的,它使用CommandLineToArgvW来获取指向命令行参数的指针(argv[0]是可执行文件名称)+ 参数数量:

 1.png

图42

WTSQueryUserToken API用于获取会话1指定的登录用户的主访问令牌:

1.png

图43

OpenWindowStationW 用于打开“Winsta0”窗口站(交互式窗口站),0x40000(WRITE_DAC)用于修改对象安全描述符中的DACL:

1.png

图44

实际上,“Winsta0”窗口站的DACL(自由访问控制列表)是通过调用NtSetSecurityObject例程(相应的参数为0x4 = DACL_SECURITY_INFORMATION)来修改的:

1.png

图45

之后,该恶意软件将调用OpenDesktopW,用于打开“默认”桌面对象,参数为0x40081 = WRITE_DAC | DESKTOP_WRITEOBJECTS | DESKTOP_READOBJECTS,具体如下所示:

1.png

图46

通过调用带有0x4 = DACL_SECURITY_INFORMATION参数的NtSetSecurityObject函数来修改“默认”桌面对象的DACL:

1.png

图47

同时,该恶意软件创建了一个名为 "Global4787658f1cc4202b8a15e05dd0323fde "的互斥锁(该值在此操作之前已经计算好,代表恶意软件的自定义“哈希”值),这确保了每次只有一个勒索软件的实例在运行(如果互斥锁已经存在,那么恶意软件就会退出):

1.png

图48

1.png

图49

该勒索软件强制系统在进程运行时无法进入睡眠模式并且不关闭显示器,其中一个参数是0x80000001 = ES_CONTINUOUS | ES_SYSTEM_REQUIRED:

1.png

图50

该文件将权限改为SE_PRIVILEGE_ENABLED,以便通过调用ZwAdjustPrivilegesToken函数来启用该令牌的权限(注意TOKEN_PRIVILEGES结构体):

1.png

图51

CreateThread API被用来创建一个新的线程,如下图所述:

1.png

图52

使用GetLogicalDriveStringsW例程提取系统中有效驱动器清单:

1.png

图53

该勒索软件还会寻找DRIVE_REMOVABLE(0x2)和DRIVE_FIXED(0x3)驱动器,如图54所示:

 1.png

图54

回收站中的所有文件和目录都会被该进程清空。为此,它是通过FindFirstFileExW API调用完成遍历的:

1.png

图55

如下图所示,它将通过DeleteFileW函数删除文件,使用RemoveDirectoryW程序删除目录:

1.png

图56

该二进制程序然后使用COM对象和WMI命令来删除卷影副本。并且,它还调用CoCreateInstance函数来创建一个CLSID为{dc12a687-737f-11cf-884d-00aa004b2e24}的、IWbemLocator类的单例对象(具体请参考https://forum.powerbasic.com/forum/user-to-user-discussions/source-code/25222-wmi-wrapper-functions):

1.png

图57

此外,它还会创建一个新的IWbemContext接口,CLSID为{44aca674-e8fc-11d0-a07c-00c04fb68820}(详情请参考https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-wmi/3485541f-6950-4e6d-98cb-1ed4bb143441),该接口是通过CoCreateInstance函数创建的:

1.png

图58

使用IWbemLocator对象,该进程通过调用ConnectServer API连接到本地“ROOT\CIMV2”命名空间,并检索指向IWbemServices对象的指针,具体如下所示:

1.png

图59

然后,它将调用CoSetProxyBlanket函数,如下图所述(0xA = RPC_C_AUTHN_WINNT - NTLMSSP,0x3 = RPC_C_AUTHN_LEVEL_CALL和0x3 = RPC_C_IMP_LEVEL_IMPERSONATE):

1.png

图60

接着,该进程执行以下SQL查询“SELECT * FROM Win32_ShadowCopy”,以获得所有卷影副本的枚举器,然后通过DeleteInstance方法删除每个卷影副本对象:

1.png

图61

然后,通过调用EnumServicesStatusExW函数(0x30 = SERVICE_WIN32, 0x3 = SERVICE_STATE_ALL)来获取所有服务及其状态: 1.png

图62

其中,每个服务名称都会与前面解密的列表进行比较:

1.png

图63

恶意软件通过调用OpenServiceW例程(0x10020 = DELETE | SERVICE_STOP)打开目标服务:

1.png

图64

然后,使用ControlService和DeleteService来中止并删除所有目标服务,如图65所示:

1.png

图65

NtQuerySystemInformation API将返回一个SYSTEM_PROCESS_INFORMATION结构体数组(系统上运行的每个进程都有一个这样的数组,0x5 = SystemProcessInformation):

1.png

图66

每个进程的名称都会与之前解密的列表进行比较,如下图所示:

1.png

图67

对于每一个目标进程,该恶意软件都会打开相应的进程,然后终止该进程及其所有线程,具体如下所示:

 1.png

图68

该二进制程序还会创建一个名为< RansomPseudoValue >.ico的文件,如下图所示:

1.png

图69

使用RegCreateKeyExW函数创建一个名为< RansomPseudoValue >的新注册表项,如图70所示:

1.png

图70

之后,DefaultIcon子项被创建,它指定了新创建的ico文件的路径:

1.png

图71

该恶意软件调用SHChangeNotify例程,通知shell更新其图标缓存(0x08000000 = SHCNE_ASSOCCHANGED, 0x1000 = SHCNF_FLUSH):

1.png

图72

使用CreateFileW函数创建一个名为%PROGRAMDATA%\< RansomPseudoValue >.BMP的新文件:

1.png

图73

然后,通过调用RegCreateKeyExW API打开一个注册表项,如下图所示:

1.png

图74

注册表项中的“WallPaper”值被改为新创建的BMP文件的位置:

1.png

图75

在所有这些活动之后,桌面已经被改为下面的样子:1.png

图76

小结

在本文中,我们从技术角度为读者深入分析了勒索软件Darkside,由于篇幅过长,我们分为两篇文章进行发表,更多精彩内容,敬请期待!

本文翻译自:https://cybergeeks.tech/a-step-by-step-analysis-of-a-new-version-of-darkside-ransomware/如若转载,请注明原文地址
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2024 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务