DarkAngels勒索病毒分析

0x00 前言准备

日常逛freebuf发现深信服发了一篇勒索病毒分析文章,名字非常炫酷“暗黑天使”降临,赶紧跟一下玩玩。

实验环境:win10

分析工具:die,IDA

0x01 样本基本信息

 

md5

b4a07cdd640bbaef21cd0493b4d62675

样本VT下载

0x02 逆向分析

die静态信息查看

32位GUI程序

用ida打开,start处即为程序开始处代码

 

注意这个API,作用是设置当前调用进程的关闭参数。此函数设置相对于系统中其他进程的进程关闭顺序。设置的参数为0,意味着较其他进程关闭得最迟。

终止服务

跟进4750函数,这里是与服务相关的操作,为了确保在系统加密过程中不中断其加密过程,恶意软件会枚举和检索受害者机器上所有可用的服务,在加密系统之前尝试终止服务。

 

API调用序列大致如下:

OpenSCManagerA(打开服务控制管理器数据库) --> OpenServiceA(打开一个目标服务) --> QueryServiceStatusEx(检索当前服务状态) --> EnumDependentServicesA(检索依赖于指定服务的每个服务的名称和状态) --> ControlService(终止服务)

要终止的服务列表可以在 OpenServiceA的参数 lpServiceName跟踪到,如下:

 

终止进程

跟进4990,这里是与进程相关的操作

 

API调用序列:

CreateToolhelp32Snapshot(获取当前运行进程快照) --> Process32FirstW(获取第一个进程句柄) -->用lstrcmpW与lpString1列表中的进程进行比较,如果匹配 --> OpenProcess(打开指定进程句柄) --> TerminateProcess(终止进程) 并且 CloseHandle(关闭进程句柄) --> Process32NextW(继续下一个进程)

lpString1列表中的进程:

 

防止恢复

跟进46b0,这里最重要的是执行了一个cmd命令

 

cmd的作用是删除卷影

 

后面还有一个清空回收站的API,防止恢复已删除的文件

加密相关

下面有一个CreatThread创建线程的操作,我们跟进StartAddress,然后跟进a2b0

 

首先是和勒索信生成相关的操作,跟进buffer可以查看勒索信的内容

 

然后过滤不进行加密的目录以及文件,这个存在lpString2里

 

 

下面这里是过滤不加密的类型

 

如果文件扩展名是exe,dll,babyk则不进行加密

跟进9720,里面是核心的加密操作

核心加密过程

首先用SetFileAttributesW()参数是0x80取消文档的只读、隐藏、系统、存档权限。

 

然后用MoveFileExW给被加密的文件添加后缀.crypt

 

下面是打开要被加密文件然后开始加密,密钥首先调用CryptGenRandom生成随机的AES私钥,然后使用unk_4141B8中的 RSA 公钥对 AES 密钥进行加密。

 

加密过程首先加密0-64字节,然后是64-5242880,然后是5242880-20971520,最后加密20971520 之后的字符。

 

最大化执行加密操作

回到主程序逻辑,有一个判断参数是shares还是path的过程

 

如果是share,使用 NetShareEnum () API 检索有关服务器上每个共享资源的信息,检查  $ADMIN  共享并开始加密文件。

 

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

 

如果两者都没有,勒索软件会递归遍历所有本地驱动器并加密所有目标文件。

首先创建一个DarkAngels的互斥体变量

 

然后遍历本地驱动器

 

最后的收尾工作又进行了一次删除卷影副本,至此执行结束

0x03 总结

整体来看这个勒索病毒分析起来结构比较清晰,也没有使用什么特殊的手段,很方便新手来进行分析跟踪了解勒索病毒常用的API,通过字符串和加密后缀很明显能看出来与Babuk  勒索软件有关系。

参考文献

“暗黑天使”降临:DarkAngels勒索病毒全揭秘 - FreeBuf网络安全行业门户

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值