-
攻击者使用的 Dtrack RAT 木马可响应 C2 服务器文件上传/下载、远程 Shell 等远程指令,相较以往变化并不大;
-
攻击者使用入侵的服务器作为其 C2 通信服务器,这也是 Lazarus 惯用的攻击手法之一;
-
在对本次攻击活动分析中,我们发现攻击者窃取了数十 GB 医药相关文件,对于这些文件的影响性还有待进一步评估;
-
截止分析时,本次攻击活动中已经有多个国家地区的服务器或个人 PC 被成功入侵;
-
微步在线通过对相关样本、IP和域名的溯源分析,提取多条相关 IOC,可用于威胁情报检测。微步在线威胁感知平台 TDP、本地威胁情报管理平台 TIP、威胁情报云 API、互联网安全接入服务 OneDNS 等均已支持对此次攻击事件和团伙的检测。
Lazarus 组织经常通过批量扫描、爆破、漏洞利用等攻击方式入侵暴漏在公网的站点服务器,再以攻陷的服务器为跳板继续其攻击活动,此外通过钓鱼邮件等攻击方式向目标发送恶意载荷文件也是该组织惯用手法之一,本次捕获到的攻击样本为 Dtrack RAT 组件,文件信息如下:
文件名称 |
dwem |
文件大小 |
138752 字节 (135.50 KB) |
MD5 |
cf236bf5b41d26967b1ce04ebbdb4041 |
SHA1 |
feb79a5a2bdf0bcf0777ee51782dc50d2901bb91 |
SHA256 |
60425a4d5ee04c8ae09bfe28ca33bf9e76a43f69548b2704956d0875a0f25145 |
编译时间戳 |
2020/09/16 14:16:21 |
在此次攻击活动中,Lazarus 入侵了一批暴漏在公网上的服务器,将入侵的服务器作为 Dtrack RAT 的 C2 服务端。在分析期间,我们捕获到了攻击者放在服务器上的 Dtrack 服务端组件,以及攻击者所窃取的部分文件。
-
http://145.232.235.222/usr/users/common.php -
http://46.14.68.202/editor/common.php
之后,通过注册表获取主机系统注册机构、注册人和注册日期。
获取主机信息和 MAC 地址,与系统注册信息拼接。
使用 “anon” 作为密钥进行异或运算,得到一个4字节的值作为主机 ID,这个主机 ID 后面也会当作密钥来解密数据。
Struct{
BYTE 指令a;
BYTE 指令b;
DWORD 主机ID;
系统版本+木马版本+主机IP;
}
然后,计算以上字符串 MD5 值,取出 MD5 第11位的2个字节。
以分析时的主机为例,最终拼接的 URL 格式如下:
字段 |
说明 |
http://145.232.235.222/usr/users/common.php |
C2 服务器路径 |
id |
参数名 |
4C |
后面数据也就是主机信息数据包的M D5 值的第11位 |
1 |
指令 a |
0 |
指令 b |
A4959C16 |
主机系统注册信息和mac地址生成的主机 ID |
2D518299A8C0 |
木马版本+系统版本+主机 IP |
之后,将上述信息以 HTTP 协议 POST 方法发送至 C2 服务器,并接收服务器下发数据,保存到 temp 文件。
分析时,服务器仅下发字符串 “BM”,未下发有效指令。
接收到服务器下发有效数据后,先使用主机 ID 生成8字节的密钥,对数据进行解密,之后再查找字符串 “tick” 来确定指令格式。
响应 C2 服务器远程指令。
远程指令代码如下表:
指令代码 |
指令操作 |
1003 |
下载文件 |
1005 |
持久化 |
1006 |
上传文件 |
1018 |
重新设置通信频率时间 |
1023 |
卸载木马 |
默认 |
执行CMD命令 |
指令执行完毕后,将会使用 0xFFFFFFFF 生成 key 来加密执行结果,并上传至 C2 服务器。
通过对服务器上所存在的 cert 后缀文件分析,发现其实均为经过 Base64 编码的 PE 模块。
我们对 Dtrack 服务端组件进行了分析,并将各功能信息整理如下:
文件名称 |
功能说明 |
common.php |
木马 C2 php 服务端文件 |
mini.ps1 |
Powershell 下载器组件 |
mm.ps1 |
Powershell 下载器组件 |
dwem.cert |
木马远控组件,也就是上面所分析的样本 |
pl.cert |
PuTTY 的 Plink 组件,用以支持 SSH、telnet 登录 |
proc.cert |
微软的 procdump.exe,可搭配 mimikatz 获取 windows 系统账户密码 |
psc.cert |
PuTTY 的 pscp 组件,文件传输工具 |
sc.cert |
3proxy 代理工具、端口转发 |
up.cert |
文件上传 exe 客户端组件 |
up_new.php |
文件上传 php 服务端组件 |
3.2.1 Dtrack php 服务端
对指令进行校验之后,将会保存主机上线信息,同时根据攻击者下发指令执行查看上线主机列表、更新命令文件、下发命令、获取执行结果4种操作。
common.php 收到木马上线信息后,将会调用函数 UpdateAuthCode 把木马提交的主机信息保存到文件 /tmp/f5b338d6bca36d47ee04d93d08c57861(sess 的 md5 值).log 中。
攻击者下发指令后,调用 SaveCommand 函数将指令数据保存到文件 /tmp/sess_{主机 ID 的 MD5 值},并且会创建一份文件 sess_{(主机 ID+“+”)的 MD5 值},用来保存执行结果。
之后调用 SendCommand 函数从文件 /tmp/sess_{主机 ID 的 MD5 值}中取出指令数据,下发给木马客户端。
待客户端返回执行结果后,再调用 SendResult 函数将结果文件发送到攻击者服务端,完成一次远程指令执行。
3.2.2 Powershell 后门组件
而 mm.ps1 则在 mini.ps1 基础上完成了后门功能,其与 mini.ps1 一样,同样与服务器 68.183.78.131:4444 建立通信。
然后从服务器接收指令执行 cmd 命令。
3.2.3 文件上传组件
up_new.php 为文件上传 php 服务端组件,用以支持文件上传,将接收到的文件数据保存到目录 pngs 中。
而 up.exe 则为上传文件客户端组件,与 RAT 组件一样,其同样获取主机名称、系统注册者、注册组织、注册日期、MAC 地址、IP 地址来生成主机 ID。
之后根据命令行参数执行上传文件功能。
up.exe 与 up_new.php 相呼应,将文件内容以表单形式提交,每次提交1MB。
基本一致的 API 动态获取部分。
获取主机信息和系统注册者、注册机构、注册日期。
并且,当时安全机构同样截获到了攻击者所执行的命令,与本次攻击所截获的命令格式一致,同样以字符串 tick 起始。
以及几乎一致的远程指令格式:
参考链接
-
https://s.threatbook.cn/report/file/60425a4d5ee04c8ae09bfe28ca33bf9e76a43f69548b2704956d0875a0f25145/?sign=history&env=win7_sp1_enx86_office2013 -
https://unit42.paloaltonetworks.com/inside-tdrop2-technical-analysis-of-new-dark-seoul-malware/ -
https://www.cyberbit.com/blog/endpoint-security/dtrack-apt-malware-found-in-nuclear-power-plant/ -
https://securelist.com/my-name-is-dtrack/93338/
公众号内回复“DRAT”,可获取 PDF 版报告(含 IOC)。
关于微步在线研究响应团队
微步在线
研究响应中心
-长按二维码关注我们-
本文始发于微信公众号(微步在线研究响应中心):继攻击核能行业后,金融恶匪Lazarus又将恶爪伸向全球医药领域
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论