freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

“暗黑天使”降临:DarkAngels勒索病毒全揭秘
2022-09-21 10:16:57
所属地 北京

恶意文件分析

恶意文件描述

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

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

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

恶意文件分析

(一)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),打开一个已经存在的文件。

(2)处理密钥

调用 CryptGenRadom 随机生成 AES 密钥,之后使用Session Key 中的 RSA 公钥对 AES 密钥进行加密。

(3)文件加密大小

从文件头部开始遍历文件,先加密 0-64,接着加密 64-5242880,其次加密 5242880-20971520,最后加密20971520 之后的字符。

(3)不进行加密的文件、目录及扩展

不进行加密的目录:

AppData

Boot

Windows

Windows.old

不进行加密的文件:

autorun.inf

boot.ini

bootfont.bin

不进行加密的文件扩展:

.babyk  是著名的  Babuk  勒索软件扩展名,表明 DarkAngels  与  Babuk  勒索软件可能存在关联。

.exe

.dll

.babyk

DarkAngels 在加密文件的末尾附加了一个签名 "choung dong looks like hot dog!!",表明该勒索软件与  Babuk 相关。

(二)Linux版本分析

总体功能框架

1、定制化加密路径

该勒索软件二进制文件需要一个文件夹作为加密参数。给定文件夹路径后,DarkAngels 会加密文件夹中的文件并将 .crypted 扩展名附加到加密文件中。如果没有添加需要加密的路径,则会显示 Usage:%s [-m (10-20-25-33-50) ] Start Path  。

图片

该恶意程序使用 pthread_create 函数创建了一个新的线程,新的线程通过调用 start_routine 执行主模块。

图片

start_routine 函数为该勒索软件主要功能模块,分析内容如下所示:

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


图片

(2)将添加过 .crypted 扩展的文件设置写锁

调用 open64 函数打开目标文件,并且使用 fcnt 函数将目标文件设置为 F_WDLCK 写锁,随后 close 关闭目标文件。

图片

(3)终止进程

终止 pid>10 且占用文件的进程,尽可能多的加密文件且避免在加密过程中造成文件的损坏。

图片

(4)将进程的工作目录修改为"/"根目录,创建守护进程。

图片

(5)勒索信

打开另一个与目标文件同名但附加了README_TO_RESTORE 扩展的文件,写入了勒索信内容并关闭文件。

图片

写入的勒索信内容如下所示:

图片

(6)避免加密的文件扩展、目录、文件

不进行加密的文件扩展:

图片

不进行加密的目录:

图片

不进行加密的文件:

图片

(7)加密

打开被添加 .crypted 扩展的文件,调用 lseek 和 write 函数写入已加密的内容。

图片

(8)加密记录

所有被加密文件存储在  wrkman.log.0 文件中。

图片

IOCs

Windows 版本

Sha256 38e05d599877bf18855ad4d178bcd76718cfad1505328d0444363d1f592b0838

Linux 版本

Sha256 3b56cea72e8140a7044336933cf382d98dd95c732e5937a0a61e0e7296762c7b

处置建议

1. 避免将重要服务在外网开放,若一定要开放,需增加口令复杂度,避免使用弱口令。

2. 避免打开可疑或来历不明的邮件,尤其是其中的链接和附件等,如一定要打开未知文件,请先使用杀毒软件进行扫描。

3. 安装信誉良好的防病毒/反间谍软件,定期进行系统全盘扫描,并删除检测到的威胁,按时升级打补丁。

4. 使用官方和经过验证的下载渠道,使用正版开发人员提供的工具/功能激活和更新产品,不建议使用非法激活工具和第三方下载器,因为它们通常用于分发恶意内容。

5.重要的数据最好双机备份或云备份。

# web安全 # 终端安全 # 病毒分析 # 勒索病毒 # 病毒分析报告
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录