该恶意文件为ACE压缩文件,内含4个jpg文件和一个PE文件,利用WinRAR漏洞(CVE-2018-20250),诱使受害者解压文件触发漏洞释放PE文件到启动目录,等待计算机重启后自动执行。
通过自启的PE文件,释放powershell脚本、vbs脚本,并写入自启项到注册表,层层解密得到最终的powershell攻击脚本,计算机启动后自动执行攻击脚本。脚本包含功能:远端下载文件、接收执行远端命令、解码数据等功能。
powershell脚本经过几十次的混淆,手动反混淆比较费时间,定位到混淆用到的指令iex所在C#库,修改替换库可以比较方便的获取到混淆之前的代码。

1. 样本概况

1.1 样本信息

文件名:9CFB87F063AB3EA5C4F3934A23E1D6F9
Size: 410224 bytes
MD5: 9CFB87F063AB3EA5C4F3934A23E1D6F9
SHA1: 7E181CE4CD405836E658C888334CD5893637FB1A
CRC32: 7A9FCD5C

1.2 测试环境及工具

运行平台:Windows 7 X64
系统监控工具:火绒剑
调试工具:IDA Pro、Windows Powershell ISE

2. 沙箱监控

使用WinRAR打开查看压缩包内容,包含4个jpg图片文件和一个exe文件Dropbox.exe,并设置有路径:
C:\C:C:..\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
PowerShell脚本样本分析 - 图1
PowerShell脚本样本分析 - 图2
解压后会触发WinRAR漏洞(CVE-2018-20250),释放exe到启动目录。
PowerShell脚本样本分析 - 图3

PowerShell脚本样本分析 - 图4
PowerShell脚本样本分析 - 图5

Dropbox.exe将在计算机启动时自动运行。其详细功能见逆向分析。

3. 逆向分析

3.1 CVE-2018-20250

WinRAR目录穿越漏洞(CVE-2018-20250):该漏洞是由于WinRAR 所使用的一个陈旧的动态链接库UNACEV2.dll所造成的,该动态链接库在2006 年被编译,没有任何的基础保护机制(ASLR,DEP 等)。该动态链接库的作用是处理ACE 格式文件。而在解压处理过程中存在一处目录穿越漏洞,允许解压过程写入文件至开机启动项,导致代码执行。

3.2 Dropbox.exe分析

将Dropbox.exe脱掉upx壳
PowerShell脚本样本分析 - 图6
脱壳后的PE文件信息
PowerShell脚本样本分析 - 图7

使用IDA Pro静态分析,主要行为:释放并执行ps1脚本。
PowerShell脚本样本分析 - 图8
释放目录:
PowerShell脚本样本分析 - 图9

3.3 释放的脚本a.ps1

PowerShell脚本样本分析 - 图10

PowerShell脚本样本分析 - 图11
主要行为:解密生成并执行vbs脚本

3.4 释放的vbs脚本

PowerShell脚本样本分析 - 图12

PowerShell脚本样本分析 - 图13
PowerShell脚本样本分析 - 图14

PowerShell脚本样本分析 - 图15

主要行为:
创建id.png文件,被加密的powershell脚本文件”
PowerShell脚本样本分析 - 图16

创建tmp.vbs文件,用于隐藏窗口执行命令
PowerShell脚本样本分析 - 图17

注册开机自启服务CortanaService,作用为—启动tmp.vbs无窗口执行解密脚本,解密脚本解密id.png文件,得到“被混淆的powershell脚本”,见下图。
PowerShell脚本样本分析 - 图18

脚本执行完成后,文件资源管理器查看被释放的文件:
PowerShell脚本样本分析 - 图19

解密脚本:
PowerShell脚本样本分析 - 图20
解密得到被混淆的ps1脚本,该脚本分析见下节。

3.5 反混淆powershell脚本

混淆脚本见下图:
PowerShell脚本样本分析 - 图21
脚本使用Invoke-Expression指令,将混淆脚本代码字符串作为命令执行,并使用字符串反转、字符串替换等手段混淆脚本。
修改替换Invoke-Expression指令对应的库,在执行iex函数执行命令时保存命令文本,得到如下明文脚本:
PowerShell脚本样本分析 - 图22
该脚本开机时被执行,详细分析见下节。

3.6 明文powershell脚本

PowerShell脚本样本分析 - 图23

运行时首先进入如下循环:(该循环作用为连接服务端并上传设备信息)
尝试获取设备信息,并连接服务器,连接成功则跳出循环进行下一步操作。
PowerShell脚本样本分析 - 图24

获取设备信息操作如下:
(1)收集当前环境信息:Windows版本;内网IP地址;系统位数;计算机名称;用户组;公网地址。
(2)计算hash得到一个设备识别id。
PowerShell脚本样本分析 - 图25
(3)获取计算机当前公网地址如下
PowerShell脚本样本分析 - 图26

连接服务端报错日志:
PowerShell脚本样本分析 - 图27
由于样本的远端服务器失效,将在死循环请求连接。手动跳出循环观察后续行为:

进入下一个循环:(本循环用于接收服务端指令)
PowerShell脚本样本分析 - 图28

PowerShell脚本样本分析 - 图29
PowerShell脚本样本分析 - 图30

分发服务端返回的指示,并执行对应指示操作:
PowerShell脚本样本分析 - 图31

PowerShell脚本样本分析 - 图32

该循环的主要行为整理如下:
PowerShell脚本样本分析 - 图33

4. 网络行为

4.1 上传设备信息的post请求:

PowerShell脚本样本分析 - 图34
url:http://162.223.89.53/oa/
data:序列化的设备信息

4.2 接收服务端指令的get请求

PowerShell脚本样本分析 - 图35
url:http://162.223.89.53/oc/api/?t={deviceID}

4.3 发送服务端指令执行结果

PowerShell脚本样本分析 - 图36
url:http://162.223.89.53/or/?t={deviceID}
data: 处理结果

4.4 查询计算机所在公网ip

PowerShell脚本样本分析 - 图37
PowerShell脚本样本分析 - 图38

5. 溯源

5.1 IP关联

PowerShell脚本样本分析 - 图39
样本请求的服务器地址被收录在微步开源情报, 地址标签归属于APT组织MuddyWater。

5.2 公开报告

根据APT组织MuddyWater与样本利用漏洞检索发现微软曾发布如下报告:利用WinRAR CVE-2018-20250漏洞的针对性攻击分析。
报告提供CVE-2018-20250利用的攻击链与本样本一致:
PowerShell脚本样本分析 - 图40

5.3 APT组织简介

PowerShell脚本样本分析 - 图41
在收录的apt组织利用手段信息库中,本次样本的利用方式,也匹配该组织曾使用的技术手段。
PowerShell脚本样本分析 - 图42