软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动

APT 3个月前 admin
228 0 0


团伙背景

Kimsuky,别名Mystery Baby、Baby Coin、Smoke Screen、Black Banshe等,奇安信内部跟踪编号为APT-Q-2。该APT组织于2013年公开披露,攻击活动最早可追溯至2012年,疑似具有东北亚国家背景。Kimsuky主要攻击目标为韩国,涉及国防、教育、能源、政府、医疗以及智囊团等领域,以机密信息窃取为主。该组织通常使用社会工程学、鱼叉邮件、水坑攻击等手段投递恶意软件,攻击手法多样,拥有针对Windows和Android平台的攻击武器。


事件概述

近期奇安信威胁情报中心发现一批以韩国软件公司SGA旗下产品安装程序为伪装的窃密攻击样本,样本运行后释放正常的安装包迷惑受害者,并暗中执行经过VMProtect处理的恶意DLL,恶意DLL由Go语言实现,收集感染设备上的各类信息回传给攻击者,然后清除攻击痕迹。


根据窃密软件样本携带的数字签名我们关联到另一种用作后门的恶意软件,同样为Go编写,并带有VMProtect保护壳。此后门软件与Kimsuky组织历史攻击样本存在多处特征重叠,因此我们认为这两种恶意软件均和Kimsuky组织存在关联。


详细分析


窃密软件

以软件安装包为伪装的攻击样本基本信息如下。


MD5

文件类型

数字签名时间

27ef6917fe32685fdf9b755eb8e97565

EXE

2023-12-13 08:25:21 UTC

7457dc037c4a5f3713d9243a0dfb1a2c

DLL

2023-12-13 08:10:34 UTC

7b6d02a459fdaa4caa1a5bf741c4bd42

EXE

2024-01-05 08:04:01 UTC

88f183304b99c897aacfa321d58e1840

DLL

2023-12-18 01:57:13 UTC

19c2decfa7271fa30e48d4750c1d18c1

EXE

2024-01-08 13:58:33 UTC

c8e7b0d3b6afa22e801cacaf16b37355

DLL

2023-12-18 01:57:34 UTC

程序文件数字签名的签名者为”D2innovation Co.,LTD”。


软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动


上面攻击样本可以分为3组:EXE为初始样本,起到dropper的功能,DLL为释放的窃密软件。3组样本对应的正常安装程序去重后共有如下两个。


MD5

安装程序名称

eb8d073840e95cf24c9c3f5a2b6470e0

NXTPKIENT.exe
 (TrustPKI Enterprise Non-ActiveX Client Setup)

d259ef7500e7e667afc42e9570f9707a

NX_PRNMAN.exe
 (SGASolutions NX_PRNMAN Setup)

以样本27ef6917fe32685fdf9b755eb8e97565为例,执行流程如下。


软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动


Dropper

初始EXE样本首先在同目录释放正常安装程序NXTPKIENTS.exe,然后在”%Temp%”目录释放bat脚本。Bat脚本的文件名格式为”%Temp%[4字节随机字符串].tmp.bat”,该脚本负责删除初始EXE样本和自身。


软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动


接着在”%AppData%Media”目录释放恶意DLL,文件名格式为”%AppData%Mediawin-[随机字符串].db”。


软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动


启动释放的bat脚本和安装包程序NXTPKIENTS.exe。Bat脚本由于此时的初始EXE样本还处于运行状态,因此会进入循环。


释放用于DLL运行的标志文件”C:programdatahai.a”,调用rundll32.exe启动恶意DLL中名为”hai”的导出函数。初始EXE样本至此完成主要工作。


软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动


窃密DLL

恶意DLL由Go语言实现,根据样本中的Go元数据信息,该窃密软件的代号似乎为TrollAgent。


软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动


恶意DLL首先调用schtasks.exe命令删除名为”ChromeUpdateTaskMachineUAC”的计划任务。随后检查标志文件”C:programdatahai.a”是否存在,如果不存在则表明DLL不是由初始EXE样本启动,直接进入自删除过程:再次删除计划任务”ChromeUpdateTaskMachineUAC”,释放并执行用于自删除的powershell脚本。


软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动


如果标志文件hai.a存在,则将其删除,然后执行窃密软件的主要功能。


在配置初始化过程中,窃密软件将版本设为”[email protected]″,获取感染设备网络接口的MAC地址,并以此生成标记受害者的UID,设置用于C&C通信的URL列表。


http://ar.kostin.p-e.kr/index.php

http://ai.kostin.p-e.kr/index.php

在C&C通信时,窃密软件先调用SendPing函数与服务器建立连接,向服务器发送”init”信息,并检查响应消息是否为”ok”。


软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动


用于组织窃密软件与C&C服务器通信数据的结构体名为NpwwMsg。窃密软件将其转换为字节序列后,使用XorCBC的方式进行加密,密钥为[0xDD, 0x33, 0x99, 0xCC],再对加密数据进行Base64编码。


软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动


SendPing函数向C&C发送的请求内容如下。


软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动


窃密软件通过SendPing函数获取到C&C的”ok”响应后,开始收集感染设备的各类信息,将其保存到文件中,加密后回传给C&C服务器。收集的信息包括以下几类。


(1) 窃密软件的配置数据

配置数据转换为JSON字符串后,保存在”.org”后缀的临时文件中,加密回传给C&C后删除该临时文件。


软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动


(2) 指定目录的数据

依次查找4个特定的目录是否存在,如果存在,将该目录数据打包为zip压缩包,然后加密回传。查找的目录如下。


目录

说明

“%USERPROFILE%.ssh”

SSH数据

“%USERPROFILE%appdataroamingfilezilla”

FileZilla数据

“%USERPROFILE%appdatalocalpackagesmicrosoft.microsoftstickynotes_8wekyb3d8bbwelocalstate”

Microsoft Sticky Notes数据

C盘下某未知目录或文件

未知目录或文件的搜索方式为:历C盘,将子目录或文件名转换为小写形式,前面拼接字符串”aaxxyyzz”,后面拼接”zzyyxxaa”,所得字符串计算其SHA-512 hash值,与下面的硬编码值进行比较,如果相同则表明找到指定目录或文件。


17ccb0832c3382b5f9e86236e035d899a351c98f3871080c138d4494218cbbc2b6f9dc43705ed97e8b0b09f25752302094e0d297151f67b22328af95610f72f1

   

(3) 浏览器数据

这部分功能疑似使用了Github开源项目HackBrowserData的修改版。HackBrowserData针对Windows平台的浏览器数据目录配置信息如下。


软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动


窃密软件中配置的浏览器数据目录如下,多了一款由韩国Naver公司开发的Naver Whale浏览器。


软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动


(4) Cmd命令收集的信息

窃密软件还执行下列cmd命令收集信息。


软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动

命令

收集信息说明

systeminfo

Windows系统软硬件

net user

系统的用户

query  user

系统的用户会话

powershell  Get-CimInstance -Namespace root/SecurityCenter2 -Classname AntivirusProduct

安装的杀毒软件

wmic  qfe

安装的Windows系统和软件更新

wmic startup get

启动项

wmic  logicaldisk get

磁盘

ipconfig /all

网络配置

arp  -a

ARP缓存

route print

路由表

tasklist

进程列表

wmic process get  Caption, Commandline

进程命令行

dir  “%programfiles%”

%programfiles%目录

dir  “%programfiles% (x86)”

%programfiles% (x86)目录

dir  “%programdata%MicrosoftWindowsStart MenuPrograms”

系统开始菜单的程序目录(包含一些安装软件的信息)

dir  “%appdata%MicrosoftWindowsRecent”

当前用户最近访问的文件或文件夹

dir  /s “%userprofile%desktop”

当前用户桌面

dir /s  “%userprofile%downloads”

当前用户下载目录

dir  /s “%userprofile%documents”

当前用户文档目录

(5) 截屏
使用kbinani/screenshot库获取截屏。


软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动


以上5类信息的加密文件保存在窃密软件配置数据的LocalPath目录中,回传C&C后立即删除。使用的加密文件名称以及存放的对应信息分别如下。


加密文件名称

保存信息

gcfg@[时间戳].gte1

窃密软件配置数据

tcd@[时间戳].gte1

C盘下某未知目录或文件的数据

tfd@[时间戳].gte1

FileZilla目录数据

tsd@[时间戳].gte1

SSH目录数据

tnd@[时间戳].gte1

Sticky Notes目录数据

tbd@[时间戳].gte1

浏览器数据

ccmd@[时间戳].gte1

Cmd命令收集的信息

ssht@[时间戳].gte1

截屏数据

信息收集完毕,窃密软件不会保持驻留状态,而是进入自删除过程,清除攻击痕迹。


软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动


这种单次运行的方式可以增加攻击行动的隐蔽性,窃密软件从感染设备上收集的丰富数据,有助于攻击者从中挑选出高价值目标采取进一步行动。


后门

与窃密软件带有相同数字签名的后门程序基本信息如下,Go代码使用的项目名称为”mirror”。


MD5

87429e9223d45e0359cd1c41c0301836

文件名

svchost.exe

文件大小

7.67 MB (8043416 bytes)

数字签名时间

2024-01-05 06:12:29 UTC

软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动


后门运行后首先检查运行环境,如果检查不通过,则立即删除对应的磁盘文件并退出程序。检查操作包括:(1) 获取注册表”HKEY_CURRENT_USERSOFTWAREMicrosoft”下”LastUpdateName”的值;(2) 启动时的命令行参数数量是否等于2。以上两点表明该后门是由其他恶意软件启动。


后门通过当前用户HOME目录下是否存在锁文件”update.lock”保证单例运行。命令行的第2个参数支持两种选项:”UpdateAll”和”UpdateNormal”。


参数UpdateAll

“UpdateAll”参数负责建立持久化。首先设置注册表”HKEY_CURRENT_USERSOFTWAREMicrosoft”下”LastUpdateTime”的值,作为与C&C建立连接的时间。


然后将后门文件复制为当前用户HOME目录下的”svchost.exe”文件。创建名为”WindowsUpdate”的计划任务,以参数”UpdateNormal”运行复制的svchost.exe文件。最后删除当前程序的磁盘文件并退出运行。


软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动


参数UpdateNormal

“UpdateNormal”参数负责与C&C服务器通信。首先根据感染设备的计算机名和用户名生成标记受害者的UID。获取注册表”HKEY_CURRENT_USERSOFTWAREMicrosoft”下”LastUpdateTime”的值,判断是否到达与C&C建立连接的时间。未到时间则休眠20s后再次检查,反之则调用LoopSession函数进入与C&C服务器交互的过程。


软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动


C&C通信

C&C服务器使用的域名coolsystem[.]co.kr很可能来自被攻陷的网站。


软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动


后门获取指令和回传结果均是向URL “hxxp://coolsystem.co.kr/admin/mail/index.php”发送POST请求。


软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动


获取指令的请求数据格式如下,参数1的值为”2″,参数2的值在UID后添加了字符”1″。


a[9字节随机字符串]=2&b[9字节随机字符串]=[UID]1&c[9字节随机字符串]=

软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动


回传结果的请求数据格式如下,参数1的值为”1″,参数2的值在UID后加了字符”2″。


x[9字节随机字符串]=1&y[9字节随机字符串]=[UID]2&z[9字节随机字符串]=[加密数据]

软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动


获取指令后,后门根据响应数据的前两字节进行指令分发,之后的数据作为指令参数。


软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动


后门支持的指令如下:


C&C指令

函数名

功能

“01”  (0x3130)

Process_Sleep

休眠指定时间,设置注册表LastUpdateTime值,结束当前C&C通信会话

“02” (0x3230)

Process_Cmd

执行shell命令

“03”  (0x3330)

Process_Pwd

获取当前工作目录

“04” (0x3430)

Process_Cd

切换工作目录

“05”  (0x3530)

Process_Conn

向指定服务器建立TCP连接

“06” (0x3630)

Process_Exit

退出程序

“07”  (0x3730)

Process_Where

获取程序的文件路径

“08” (0x3830)

Process_Dirsize

获取指定目录的统计信息(子目录和文件数量,目录中文件总大小)

“09”  (0x3930)

Process_GetInfo

获取设备信息,包括主机名、用户名、CPU信息、内存信息、网卡信息

“10” (0x3031)

Process_CmdPath

设置执行shell命令的文件路径(默认为cmd.exe

“11”  (0x3131)

Process_Codepage

设置代码页,默认为euc-kr(韩语)

“12” (0x3231)

Process_Hibernate

设置下次连接的具体日期时间(解析时区为韩国时区Asia/Seoul),设置注册表LastUpdateTime值,结束当前C&C通信会话

“13”  (0x3331)

Process_Die

删除持久化对应的计划任务,删除程序文件并退出程序

“14” (0x3431)

Process_SocksAdd

添加Socks5代理

“15”  (0x3531)

Process_SocksList

列出Socks5代理

“30” (0x3033)

Process_Upload

向感染设备上传文件

“31”  (0x3133)

Process_Download

从感染设备下载文件


溯源关联

窃密软件和后门两种恶意样本除了数字签名相同、保护壳相同、编程语言相同外,在代码上也有一些相似之处。首先,标记受害者的UID的生成方式均是计算感染设备某个系统信息的hash值,然后截取其中一部分。其次,两者均内置了自删除功能。


另一方面,后门与几个月前披露的Kimsuky攻击活动[1]使用的攻击样本(MD5: d6abeeb469e2417bbcd3c122c06ba099)存在下面多处特征重叠。


(1) 生成受害者UID方式相似

后门生成的UID在hash值前拼接了”g-“字符串,而之前的攻击样本生成的UID是在系统盘序列号后拼接”0-2.3″字符串。


(2) 部分远控指令相同

均有getinfo, where, die, pwd, cd, sleep等攻击指令。


软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动


(3) C&C通信格式相似

都借助POST请求获取指令和回传结果,并且请求数据中参数的名称为随机生成的字符串,而参数值的构造方式相同。
之前的攻击样本获取攻击指令的数据格式如下,参数1的值为”2″,参数2的值在UID后添加字符”1″。


[10字节随机字符串]=2&[10字节随机字符串]=[UID]1&[10字节随机字符串]=

软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动


攻击样本回传结果的数据格式如下,参数1的值为”1″,参数2的值在UID后添加字符”2″。


[10字节随机字符串]=1&[10字节随机字符串]=[UID]2&[10字节随机字符串]=[加密数据]

软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动


综上,我们认为此次发现的窃密软件和后门与Kimsuky近期的攻击活动有关。


总结

对恶意软件进行加壳处理不仅可以避开静态特征检测,也能阻碍分析恶意软件具体功能的进程。Kimsuky在此次攻击活动中使用的恶意软件保持着一贯风格,通过检测运行环境中的特定设置判断是否由初始投递的攻击样本启动,并使用自删除代码清理攻击痕迹。以软件安装包进行伪装的窃密软件只负责信息收集工作,意味着攻击者很可能以此为基础筹划后续更加隐蔽且深入的攻击行动。


防护建议

奇安信威胁情报中心提醒广大用户,谨防钓鱼攻击,切勿打开社交媒体分享的来历不明的链接,不点击执行未知来源的邮件附件,不运行标题夸张的未知文件,不安装非正规途径来源的APP。做到及时备份重要文件,更新安装补丁。


若需运行,安装来历不明的应用,可先通过奇安信威胁情报文件深度分析平台(https://sandbox.ti.qianxin.com/sandbox/page)进行判别。目前已支持包括Windows、安卓平台在内的多种格式文件深度分析。


目前,基于奇安信威胁情报中心的威胁情报数据的全线产品,包括奇安信威胁情报平台(TIP)、天擎、天眼高级威胁检测系统、奇安信NGSOC、奇安信态势感知等,都已经支持对此类攻击的精确检测。


IOC

MD5

27ef6917fe32685fdf9b755eb8e97565

7457dc037c4a5f3713d9243a0dfb1a2c

7b6d02a459fdaa4caa1a5bf741c4bd42

88f183304b99c897aacfa321d58e1840

19c2decfa7271fa30e48d4750c1d18c1

c8e7b0d3b6afa22e801cacaf16b37355

87429e9223d45e0359cd1c41c0301836

 

C&C

ar.kostin.p-e.kr

ai.kostin.p-e.kr

qi.limsjo.p-e.kr

ai.limsjo.p-e.kr

ol.negapa.p-e.kr

ai.negapa.p-e.kr

 

URL

hxxp://ar.kostin.p-e.kr/index.php

hxxp://ai.kostin.p-e.kr/index.php

hxxp://qi.limsjo.p-e.kr/index.php

hxxp://ai.limsjo.p-e.kr/index.php

hxxp://ol.negapa.p-e.kr/index.php

hxxp://ai.negapa.p-e.kr/index.php

hxxp://coolsystem.co.kr/admin/mail/index.php


参考链接

[1].https://asec.ahnlab.com/en/59387/
软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动

点击阅读原文ALPHA 7.0

即刻助力威胁研判

原文始发于微信公众号(奇安信威胁情报中心):软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动

版权声明:admin 发表于 2024年1月30日 上午9:29。
转载请注明:软件安装包伪装下的Kimsuky(APT-Q-2)窃密行动 | CTF导航

相关文章