个人学习日记

Warzone的分析

Word count: 1.6kReading time: 6 min
2020/11/11 Share

0x00 概述

本次要分析的是WARZONE RAT。该RAT从2018年开始已经就有了,持续更新到现在,已经是版本2.7了。

image-20201104143740828

而网上流传的破解版本是1.84,因此可以使用先研究研究旧的版本。

image-20201104144228058

0x01 样本分析

样本名字 w131313.exe
MD5 B87E412E2C31142441F48A6126340D8B
创建时间 2019-03-13 00:37:27
VT上传时间 2020-10-12 01:36:02

一、获取C&C

为了防止C&C被轻易提取或者发现,该木马将一些关键数据包括C&C经过加密后,存放在.bss段里。经过分析,发现该木马使用RC4算法进行解密。

sbox

在木马.bss段前四个字节是key的长度,也就是0x32(小端存储)。紧跟着的0x32个字节是RC4使用到的密钥,剩下0x6C个字节是待解密的数据。

image-20201105152600321

加密数据经过RC4解密后,能够得到C2:192.168.0.65,以及一些未知字符串:Images.exe,EI4KRRHJDV,Images。

image-20201105153115936

二、持续化

在获取完C&C以后,为了使木马能够在受害者电脑中持续运行,本木马采取了两种方式,分别是通过设置注册表启动项和使用保护进程的方式来保护木马。

首先将木马拷贝到C:\Program Data\目录下并命名为images.exe

拷贝文件到Images.exe

接着将该路径设置到注册表启动项HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\中,数值名称为Images,数值数据为C:\ProgramData\images.exe

image-20201111201123763

除此之外,我还注意到,该木马使用进程注入的方式使得木马能够持续运行。

木马会检测当前程序运行的系统环境,如果是在64位系统环境下,木马将创建cmd.exe进程并且进行远程线程注入,否则,在32位系统环境下木马对explorer.exe进程进行远程线程注入,注入的shellcode将会对木马进行进程保护。

image-20201106141541135

三、通信协议

当成功注入到目标进程后,木马将尝试连接黑客服务器并且处理返回的数据。这里可以看到,该样本连接的C2为上面解码得到的192.168.0.65,所使用的端口为5350。不过可以看到,该ip实际上是一个局域网,估计是某位黑客在局域网使用的而已。

image-20201106161122522

当黑客服务器将数据发送过来,木马会对数据进行RC4解密,而密钥为”warzone160”。

根据我的分析,该数据传输的数据结构如下:

1
2
3
4
5
6
7
typdef struct Info
{
DWORD dwFlag; // 固定为0xE466BB29
DOWRD dwDataSize; // 附加数据的大小
DWORD dwOpcode; // 操作码
char* pData; // 附加数据
}

经过我的详细分析可以得知有以下指令。

指令 意思
0x00 上线并发送机器信息
0x02 遍历进程
0x04 枚举磁盘
0x06 遍历目录
0x08 下载文件
0x0A 删除文件
0x0C 结束进程
0x0E 远程Shell请求
0x12 相机连接请求
0x13 相机帧传输
0x14 启动相机
0x16 相机关闭
0x18 发送心跳包
0x1A 卸载木马
0x1C 上传文件
0x1E 发送数据到服务器
0x20 获取浏览器密码
0x22 下载并执行
0x24 键盘监听启动
0x26 键盘监听停止
0x28 hrdp安装
0x2A 反向代理启动
0x2C 反向代理停止
0x30 远程VNC启动
0x32 远程VNC停止
0x33 提权(UAC)
0x38 反向代理端口设置
0x3A 运行文件
0x3B 远程键盘监听请求

0x02、技术细节

一、保护模块

使用上面密文解密得到的EI4KRRHJDV字符串作为注册表项,并且对C:\Program Data\images.exe路径字符串进行RC4加密,得到的密文,设置进注册表键值里。

image-20201106105455637

image-20201106105221029

一、保护模块

远程线程注入的代码如下,使用CreateRemoteThread创建线程,线程回调函数从ShellCode偏移0x10E处的位置开始,并以进程PID和全路径作为参数进行传递。

image-20201106141815385

经过分析可以得知,该ShellCode主要用于保护木马进程,首先判断木马文件开头是否为0x4D(正常PE文件是以0x4D,0x5A开头的)。紧接着判断木马进程的终止状态,如果进程终止了,则会重新创建木马进程,从而来保护木马可持续运行。

image-20201106154357225

二、窃密模块

经过分析,可以发现,该RAT会窃取浏览器和邮箱的用户帐号信息以及使用键盘监听技术来窃取键盘内容。

窃取浏览器帐号信息如下:

  • chrome存储的用户信息:

    image-20201109182545616

  • IE存储的用户信息:

    image-20201109182627152

  • firefox存储的用户信息

    image-20201109182803794

窃取邮箱信息如下:

  • Outlook存储的用户信息

    image-20201109182657340

  • Thunderbird存储的用户信息

    image-20201109182733341

  • foxmail存储的用户信息

    foxmail

当收到键盘监听的命令时候,木马会对键盘记录进行监听,将捕获到的按键信息和窗口名信息保存到以时间命名的文件里。

键盘监听代码

键盘监听

三、提权模块

当木马收到提权命令的时候,会进行以下提权操作。主要是利用了具有自动提升权限的合法应用程序”pkgmgr.exe”来执行DISP模块。

保存当前路径到注册表HKEY_CURRENT_USER\SOFTWARE\_rptls中,数值名称为Install,数值数据为木马的当前路径。

image-20201110161445438

image-20201110161629292

木马从资源表中加载名为WM_DSP的资源,并且创建cmd.exe进程,通过进程镂空技术,将cmd.exe进程替换为WM_DSP资源。

image-20201110152241575

傀儡进程

WM_DSP资源主要做了以下事情:

从资源表中加载名为WM_DISP的资源,保存为%Temp%\dismcore.dll中。

将以下xml代码写入到%Temp%\ellocnak.xml中。

1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<servicing>
<package action="install">
<assemblyIdentity name="Package_1_for_KB929761" version="6.0.1.1" language="neutral" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35"/>
<source location="%configsetroot%\Windows6.0-KB929761-x86.CAB" />
</package>
</servicing>
</unattend>

image-20201110154836762

修改PEB结构,使得Peb->ProcessParameters->ImagePathName指向系统explorer.exe进程(系统UAC白名单程序)

image-20201110155624657

下一步就是通过pkgmgr.exe来加载dismcore.dll。

image-20201110161046704

dismcore.dll中主要是从注册表HKEY_CURRENT_USER\SOFTWARE\_rptls中读取木马路径,以管理员权限运行它,并且结束掉刚才非管理员权限的木马。

image-20201110161340728

这么一来木马就成功地绕过UAC了。

0x03 参考链接

https://bbs.pediy.com/thread-209362.htm

https://www.secrss.com/articles/10745

https://www.secrss.com/articles/10745

https://research.checkpoint.com/2020/warzone-behind-the-enemy-lines/

CATALOG
  1. 1. 0x00 概述
  2. 2. 0x01 样本分析
    1. 2.0.1. 一、获取C&C
    2. 2.0.2. 二、持续化
    3. 2.0.3. 三、通信协议
  • 3. 0x02、技术细节
    1. 3.0.1. 一、保护模块
    2. 3.0.2. 一、保护模块
    3. 3.0.3. 二、窃密模块
    4. 3.0.4. 三、提权模块
  • 4. 0x03 参考链接