专栏名称: 深信服千里目安全实验室
深信服科技旗下安全实验室,致力于网络安全攻防技术的研究和积累,深度洞察未知网络安全威胁,解读前沿安全技术。
目录
相关文章推荐
川大研究生  ·  研想 | 川小研的“上岸锦囊”请查收! ·  17 小时前  
川大研究生  ·  研想 | 川小研的“上岸锦囊”请查收! ·  17 小时前  
沪考一点通  ·  2025复旦、上交大、同济考研复试分数线公布 ·  2 天前  
沪考一点通  ·  2025复旦、上交大、同济考研复试分数线公布 ·  2 天前  
手游那点事  ·  2月出海榜:又一国产手游冲破150亿大关,《 ... ·  4 天前  
手游那点事  ·  二游2025:今年首个爆款让同行“大跌眼镜”? ·  4 天前  
51好读  ›  专栏  ›  深信服千里目安全实验室

【EDR极'智'勒索防护】“暗黑天使”降临:DarkAngels勒索病毒全揭秘

深信服千里目安全实验室  · 公众号  ·  · 2022-09-16 17:00

正文


恶意家族名称:

DarkAngels

威胁类型:

勒索病毒

简单描述:

近期捕获了一款新的 ELF 格式的勒索软件,它根据给定的文件夹路径加密 Linux 系统内的文件,该勒索软件与 DarkAngels 勒索软件勒索说明文档完全一致。而DarkAngels 勒索软件于 2021 年 5 月首次被发现,主要攻击 Windows 系统。


恶意文件分析

1.恶意文件描述

近期,深信服深盾终端实验室在运营工作中发现了一种 ELF 格式的勒索软件,该勒索软件近期开始出现,其释放的勒索信中的 Onion 链接似乎已关闭,这表明该勒索软件可能仍在开发中。


经过分析,发现该勒索软件与今年5月出现的 DarkAngels 勒索信内容非常相似。而 DarkAngels 与 Babuk 勒索软件也存在相似之处。 本文主要分析最新捕获的针对 Linux 平台的 ELF 格式的勒索软件以及针对 Windows 平台的 DarkAngels 两种格式的样本,探究其中的相似与不同之处。


左图为针对 Linux 系统下的勒索信内容,右图为针对 Windows 系统下的勒索信内容。

2.恶意文件分析

(一)Windows 版本分析


总体功能框架



使用静态分析,发现恶意文件是基于 32 位 GUI (图形用户界面)的二进制文件。



获取命令行参数,通过调用 SetProcessShutdownParameters(0,0)  ,恶意软件为指定进程设置它相对于其它程序的关闭顺序,参数为 0,意味着较其他进程关闭得最迟。



终止服务


为了确保在系统加密过程中不中断其加密过程,恶意软件会枚举和检索受害者机器上所有可用的服务,在加密系统之前尝试终止服务。


打开服务控制管理器数据库 (0xF003F = SC_MANAGER_ALL_ACCESS)。


调用 OpenServiceA,打开一个目标服务(0x2c = SERVICE_STOP )。



查询服务状态,判断上一步骤参数是否正确传递。


检索每个依赖于指定服务的服务的名称和状态;也就是说,在依赖服务能够运行之前,指定的服务必须运行 (0x1 = SERVICE_ACTIVE)。



终止服务 (0x1 = SERVICE_CONTROL_STOP)。


终止的服务列表



终止进程


函数 CreateToolhelp32Snapshot() 获得当前运行进程的快照后,我们可以利用 process32First 函数来获得第一个进程的句柄。


将当前进程与硬编码中的进程表对比,如果当前进程句柄与表中匹配。则打开指定进程的句柄,并传入 0x1 参数(0x1 = PROCESS_TERMINATE),随后终止进程,最后关闭该进程句柄。



继续枚举下一个进程。


重复上述操作,直至遍历完所有进程。


终止进程列表



防止恢复


(1)删除卷影

(2)清空回收站


使用 SHEmptyRecycleBinA() API,恶意软件会从回收站中删除所有项目,以确保加密后不会恢复已删除的文件。



最大化执行加密操作

首先创建互斥变量 DarkAngels:


(1)当命令行参数中包含"shares"


使用 NetShareEnum () API 检索有关服务器上每个共享资源的信息。


检查  $ADMIN  共享并开始加密文件:



(2)当命令行参数中包含 "path"

勒索软件会调用 GetDriveTypeW() API  来找出连接到受感染机器的网络驱动器。一旦识别出网络驱动器,勒索软件就会开始加密文件。



(3)当命令行参数中既不包含 "shares"又不包含 "paths"


勒索软件会递归遍历所有本地驱动器并加密所有目标文件。加密后,文件被赋予 .crypt 扩展名。


遍历所有本地驱动器


枚举卷及本地磁盘

获取驱动器类型,判断路径是否有效GetDriveTypeW(0x1),如果路径有效,则对卷进行枚举。调用 GetVolumePathNamesForVolumeName 获取路径信息,查看该卷是否被安装,若未被安装,则调用SetVolumeMountPointW 安装未被安装的卷。


枚举网络资源


文件加密


(1)被加密文件添加扩展

调用 SetFileAttributesW(0x80 = FILE_ATTRIBUTE_NORMAL ) 设置文件属性,取消文档的只读、隐藏、系统、存档权限。调用 MoveFileExW 函数,被加密文件添加扩展 .crypt。



调用CreateFileW(0xC0000000 = GENERIC_READ | GENERIC_WRITE,0x3 = OPEN_EXISTING),打开一个已经存在的文件。








请到「今天看啥」查看全文