Kimsuky,别名Mystery Baby、Baby Coin、Smoke Screen、Black Banshe等,奇安信内部跟踪编号为APT-Q-2。该APT组织于2013年公开披露,攻击活动最早可追溯至2012年,疑似具有东北亚国家背景。Kimsuky主要攻击目标为韩国,涉及国防、教育、能源、政府、医疗以及智囊团等领域,以机密信息窃取为主。该组织通常使用社会工程学、鱼叉邮件、水坑攻击等手段投递恶意软件,攻击手法多样,拥有针对Windows和Android平台的攻击武器。
近期奇安信威胁情报中心发现一批以美国军工企业在德国地区的招聘为诱饵的攻击样本,同时其他安全研究人员也对相关样本进行了公开披露[1~3]。攻击者使用的诱饵内容包括:
(1)通用动力陆地系统(General Dynamics Land Systems)招聘系统安全经理,工作地德国柏林;
(2)洛克希德马丁(Lockheed Martin)招聘服务工程师,工作地德国不来梅;
(3)洛克希德马丁(Lockheed Martin)招聘自动化工程师,工作地德国柏林。
攻击者采用不同方式植入同一种木马,该木马与Kimsuky历史攻击样本[4]具有高度相似的代码特征,结合其他线索我们认为此次针对欧洲军工行业人员的攻击活动很可能和Kimsuky有关。
相关样本信息如下:
MD5 | VT上传时间 | 文件名 | 说明 |
8346d90508b5d41d151b7098c7a3e868 | 2024-05-15 12:54:27 UTC | Safety Manager JD (General Dynamics HR Division II).jse | Dropper,JSE脚本 |
73d2899aade924476e58addf26254c2e | 2024-05-23 16:30:56 UTC | Job Description (LM HR Division II).pdf .scr | Dropper,EXE,C++编写 |
aa8936431f7bc0fabb0b9efb6ea153f9 | 2024-05-30 08:25:58 UTC | Automation Manager JD(LM HR II).scr | Dropper,EXE,Go编写 |
537806c02659a12c5b21efa51b2322c1 | 2024-05-15 13:05:45 UTC | zt1fbtn.on5l | 木马,DLL |
8d948bb863ea38ecb46b7e78d1b1abfa | 2024-05-22 10:57:35 UTC | icon.ini | 木马,DLL |
27d4ff7439694041ef86233c2b804e1f | 2024-05-23 16:34:20 UTC | desktop.ini | 木马,DLL |
7221403834a6761696060f1aa22da0fb | 2024-05-30 08:46:07 UTC | desktop.ini | 木马,DLL |
攻击样本执行流程如下:
JSE脚本
JSE脚本在"C:\ProgramData"目录下释放诱饵PDF和"vjVr53p.yOOL",然后使用Powershell再次进行Base64解码,得到"zT1fbtn.oN5L",使用regsvr[]32.exe执行。
C++ Dropper
样本73d2899aade924476e58addf26254c2e用PDF文档图标伪装,使用双扩展名,且真实扩展名".scr"与伪装扩展名".pdf"之间用大量空格符号分开。携带"Nexaweb, Inc."数字签名,签名时间为2024-05-24 00:03:50 UTC+8。
资源中出现韩语字符串。
Dropper在同目录下释放同名诱饵PDF,将木马释放到"C:\ProgramData\desktop.ini",并且释放自删除脚本"%temp%\msbuild.bat"。
运行释放的这三个文件,其中木马文件desktop.ini也是使用regsvr[]32.exe执行。
Go Dropper
样本aa8936431f7bc0fabb0b9efb6ea153f9同样带有"Nexaweb, Inc."数字签名,签名时间为2024-05-28 00:04:54 UTC+8。相比之前的C++ Dropper,Go版本不再从自身释放木马文件,而是从远程服务器获取载荷,然后将其解密为"C:\ProgramData\desktop.ini"。
获取载荷的URL为:
hxxp://download-attachments.mooo[.]com/down.php?ctx=bin&id=daniel
使用Github上的开源Go模块secur30nly/go-self-delete完成自删除操作,同样调用regsvr[]32.exe执行释放的desktop.ini。
样本中的文件路径字符串出现用户名"niki"。
在短短十几天的时间里,攻击者对投放的木马DLL代码进行了数次调整,包括增加对抗分析的手段(控制流混淆、无效指令膨胀)、修改木马使用的字符串、添加新的木马控制功能。下面以较早出现的木马样本(MD5: 537806c02659a12c5b21efa51b2322c1)为例进行分析。
持久化
木马DLL根据进程是否已经提权采用不同的持久化策略:
(1)如果已经提权,则用CreateProcessW执行如下命令,创建名为CacheDB的服务;
sc create CacheDB binPath= "cmd /c regsvr[]32.exe /s [木马文件路径]" start= auto
(2)如果未提权,则在注册表HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run下设置名为CacheDB的值,执行命令为"regsvr[]32.exe /s [木马文件路径]"。
配置数据
木马获取配置数据时,先查看木马DLL自身是否带有可选数据流(Alternate Data Streams, ADS),示例样本访问的ADS名称为"info"。如果该ADS不存在,则使用RC4算法从.data段内容中解密出配置数据明文信息,解密的key为"RGdcsedfd@#%dg9ser3$#$^@34sdfxl"。最后将配置数据写入木马DLL的ADS,便于之后直接从ADS中获取配置数据。
配置数据长度为0x122C字节,但解密出的大部分内容为零字节,木马使用的有3部分内容。
偏移 | 保存内容 | 说明 |
0x0 | C&C URL字符串 | 用于和C2服务器通信 |
0xA28 | cmd.exe路径字符串 | 用于命令执行 |
0x1228 | 4字节随机数 | 在配置数据解密后才被赋值,用于作为标识受害者的victim_id |
C&C通信
木马的C2通信过程如下。
木马通过HTTP POST请求与C2服务器通信,通信消息按格式划分有三类。
(1)建立连接
在C2通信过程的最开始,木马尝试与C2服务器建立连接,POST请求的内容格式为
id=user&pwd=page4&ctx=[victim_id]
如果响应内容首字节为字母"y",表明成功建立连接,否则休眠300s后再次发送建立连接的请求。
(2)获取来自C2服务器的数据
此类请求用于获取C2服务器下发的指令和从C2服务器下载文件。获取C2服务器数据的POST请求格式为
id=user&pwd=page1&ctx=[victim_id]
对于获取到的原始响应数据,木马仍然检查首字节是否为字母"y",并判断接收数据总长度是否大于1。检查通过之后,木马对剩下的数据先进行Base64解码,再使用RC4解密。
如果C2服务器发送数据是木马指令,则前4字节为指令代码,后面内容为指令的相关参数。
(3)回传数据
木马向C2服务器回传指令执行结果或其他数据时,采用的POST请求格式如下,回传的数据也经过RC4加密和Base64编码。同样木马会检查响应数据的首字母是否为"y"。
id=user&pwd=page2&ctx=[victim_id]&content=[data]
木马指令
木马支持的功能如下。
指令代码 | 参数 | 功能 |
---|---|---|
0x64 ("d") | cmd命令 | 命令执行,命令执行结果回传给C&C服务器 |
0x65 ("e") | 文件路径 | 文件下载,从C&C服务器下载数据,写入指定文件 |
0x66 ("f") | 文件路径 | 文件上传,将指定文件上传到C&C服务器 |
0x67 ("g") | cmd命令 | 创建进程 |
0x69 ("i") | 文件路径 | 删除文件 |
0x6a ("j") | - | 截屏,截屏文件上传到C&C服务器 |
0x6b ("k") | - | 向C2发送木马当前的配置数据 |
0x6c ("l") | 配置数据 | 更新木马的配置数据 |
0x6d ("m") | IP地址和端口 | 连接指定主机和端口 |
0x6e ("n") | 数字 | 休眠指定小时数 |
0x6f ("o") | 两个文件路径 | 将src文件的时间戳复制给dest文件 |
0x70 ("p") | - | 木马文件自删除,清除持久化痕迹,结束木马进程。文件自删除时释放的脚本为"%temp%\msbuild.bat" |
0x72 ("r") | cmd命令 | 命令执行,功能与指令0x64相同 |
0x73 ("s") | 进程id和DLL文件路径 | 向指定进程中注入特定的DLL(新增功能) |
指令0x73在2024-05-13编译的木马(MD5:537806c02659a12c5b21efa51b2322c1)中还未出现,而在2024-05-25编译的木马(MD5:7221403834a6761696060f1aa22da0fb)中使用,可见攻击者对木马代码的更新迭代速度很快。从功能上看,木马支持修改配置信息和执行后续载荷,意味着攻击者在控制受害者设备后很可能会切换网络基础设施,或者植入其他恶意组件进行深入渗透。
以上样本涉及恶意URL里的域名解析到两个IP上。
恶意URL | 用途 | IP |
---|---|---|
http[:]//download.uberlingen[.]com/index.php | 木马C&C | 94.131.120.80 |
http[:]//en.uberlingen[.]com/index.php | 木马C&C | - |
http[:]//imagedownload.ignorelist[.]com/index.php | 木马C&C | 67.217.62.219 |
http[:]//download-attachments.mooo[.]com/down.php?ctx=bin&id=daniel | 下载木马文件 | 67.217.62.219 |
http[:]//playboys.chickenkiller[.]com/index.php | 木马C&C | 67.217.62.219 |
http[:]//apphelloworld.crabdance[.]com/index.php | 木马C&C | - |
除了Dropper的资源数据出现韩文,样本释放的诱饵PDF也带有韩语信息。
此次攻击活动使用的木马与Kimsuky之前针对韩国的恶意软件[4]有多处相似:
(1)均通过FNV hash间接查找API地址;
(2)异或解密字符串的方式相同,异或的key为第一个字符(ASCII字符串的key为1字节,宽字符串的key为2字节);
(3)与C2通信数据都经过RC4加密处理,且密钥形式一致;
(4)C2通信的内容格式相似。
除此之外,JSE脚本中有一段未使用的PE数据,该数据实际上是释放的木马"zT1fbtn.oN5L"数据复制两次拼接而来,而Kimsuky在之前的攻击活动中也有类似的做法。
Go版本Dropper所带有的用户名"niki"在今年3月有关Kimsuky的攻击分析报告[5]中提及。
综合以上信息,我们认为此次攻击活动很可能和Kimsuky有关。
根据"niki"这个用户名,我们发现了攻击者其他用Go编写的恶意软件,该软件用于实现端口代理的功能。
攻击者使用的IP 94.131.120.80和67.217.62.219还关联其他恶意域名。
其中出现Kimsuky此前常用的*.r-e.kr和*.o-r.kr系列域名,与攻击者有关的可疑域名如下。
paypal.uberlingen[.]com |
online.viewers.r-e[.]kr |
share.dihl-defence.o-r[.]kr |
www.linkedin.r-e[.]kr |
share-defence.uberlingen[.]com |
域名share[.]dihl-defence.o-r.kr模仿德国军工企业迪尔防务(Diehl Defence)。该公司总部位于德国城市Uberlingen,而攻击者使用的恶意域名中也出现了带有该城市名称的uberlingen.com。从域名解析时间看,攻击者至少从2024年4月就在为攻击活动做准备。
迪尔防务前身曾是美国军事武器的承包商,根据美欧之间军工制造的合作关系,攻击者对欧洲军工从业人员的攻击很可能是试图从供应链角度获取美国军事武器的资料。
在此次以美国军工企业招聘为诱饵的攻击活动中,攻击者在十几天的时间里使用了不同方式植入木马,并多次调整木马代码,可见攻击者高频的攻击节奏。我们基于代码相似性和其他线索认为此次攻击活动很可能和Kimsuky组织有关。不过采用虚假招聘的社会工程学手段和涉足欧洲这些活动特点也令人联想到另一个来自东北亚地区的APT组织Lazarus。随着网络威胁的演变,同一地域的APT组织互相借用攻击手法或者在攻击活动中融合协作也不再罕见。
奇安信威胁情报中心提醒广大用户,谨防钓鱼攻击,切勿打开社交媒体分享的来历不明的链接,不点击执行未知来源的邮件附件,不运行标题夸张的未知文件,不安装非正规途径来源的APP。做到及时备份重要文件,更新安装补丁。
MD5
8346d90508b5d41d151b7098c7a3e868
73d2899aade924476e58addf26254c2e
aa8936431f7bc0fabb0b9efb6ea153f9
537806c02659a12c5b21efa51b2322c1
8d948bb863ea38ecb46b7e78d1b1abfa
27d4ff7439694041ef86233c2b804e1f
7221403834a6761696060f1aa22da0fb
3d4a42d00e7b6947d52d03feac236423
C&C
download.uberlingen[.]com
en.uberlingen[.]com
imagedownload.ignorelist[.]com
download-attachments.mooo[.]com
playboys.chickenkiller[.]com
apphelloworld.crabdance[.]com
paypal.uberlingen[.]com
online.viewers.r-e[.]kr
share.dihl-defence.o-r[.]kr
www.linkedin.r-e[.]kr
share-defence.uberlingen[.]com
URL
http[:]//download.uberlingen[.]com/index.php
http[:]//en.uberlingen[.]com/index.php
http[:]//imagedownload.ignorelist[.]com/index.php
http[:]//download-attachments.mooo[.]com/down.php?ctx=bin&id=daniel
http[:]//playboys.chickenkiller[.]com/index.php
http[:]//apphelloworld.crabdance[.]com/index.php
[1].https://x.com/asdasd13asbz/status/1791390914038149339
[2].https://x.com/1ZRR4H/status/1793873968471970214
[3].https://x.com/asdasd13asbz/status/1797564135468859613
[4].https://mp.weixin.qq.com/s/s7bQggtes5YQEtCBeLsOrw
[5].https://asec.ahnlab.com/en/6339