Kimsuky APT组织持续利用AppleSeed后门攻击韩国政府
2021-06-04 11:35:00 Author: www.4hou.com(查看原文) 阅读量:149 收藏

Kimsuky(也称为Thallium、BlackBanshee、VelvetChollima)APT是朝鲜的网络间谍组织,主要针对韩国的政府实体开展网络威胁活动,该组织自2012年以来一直活跃。2020年12月,KISA(韩国互联网与安全局)提供了对Kimsuky用于网络钓鱼的基础设施和TTP的详细分析。

Malwarebytes安全团队在近期观测到Kimsuky的活动迹象,发现其用于攻击韩国政府内知名人士的网络钓鱼网站、恶意文档和脚本。活动中使用的设备、TTP与KISA报告中的内容一致。

攻击目标

Kimsuky使用的钓鱼文件之一名为“외교부사판2021-05-07”,翻译为“外交部版2021-05-07”,表明它的目标是韩国外交部。其他与韩国政府有关的目标包括:

· 大韩民国外务省一秘

· 大韩民国外务省二秘

· 贸易部长

· 韩国驻香港总领事馆副总领事

· 国际原子能机构(IAEA)核安全官员

· 斯里兰卡驻华大使馆大使

· 外交贸易部参赞

除了针对政府之外,Kimsuky的目标还包括韩国的大学和公司,比如首尔国立大学、大新金融安全公司以及KISA。

网络钓鱼基础设施

Kimsuky会模仿知名网站并诱骗受害者输入其凭据,这是该组织用来收集电子邮件地址的主要方法之一,地址之后用于发送钓鱼邮件。Kimsuky组织仍在使用之前在KISA报告中提到的类似的网络钓鱼模型,但有一些细微的变化。

例如,Mobile_detect和Anti_IPs模块从B型添加到C型(KISA报告),以便能够检测移动设备并基于此调整视图。此网络钓鱼模型能够根据从钓鱼邮件收到的参数值以英语或韩语的形式呈现钓鱼页面。

图1:网络钓鱼服务模型

Kimsuky开发了多种网络钓鱼技术来模仿以下Web服务并窃取凭据:Gmail、Hotmail、MicrosoftOutlook、Nate、Daum、Naver、Telegram、KISA。

图2:KimsukyAPT开发的Nate钓鱼页面

Kimsuky使用Twitter帐户来查找目标,并向其发送定制钓鱼邮件。该组织还使用Gmail帐户进行钓鱼攻击或注册域,使用的Gmail帐户之一是“tjkim1991@gmail[.]com”,注册了以下域名:

· ns1.microsoft-office[.]us

· ns2.microsoft-office[.]us

上面两个域名于4月3日注册,应该是暂时保留用于未来的活动中。从域名中我们能找到攻击者使用的基础设施,其中一些与之前报道的由Kimsuky运营的活动重叠。

图3:基础设施关联

C2基础设施

Kimsuky将其部分钓鱼基础设施用于指挥和控制通信。在最近针对韩国政府的攻击中,他们重新利用了曾经用于托管钓鱼网站的基础设施,如AppleSeed后门的C&C通信。除了用AppleSeed后门针对Windows用户外,还有针对Android用户的定制后门,Android后门可看作是AppleSeed后门的移动版本,它使用与Windows相同的命令模式和基础设施。

图4:C2基础设施

以下是攻击者用于C2通信的一些IP和域:

210.16.120[.]34

216.189.157[.]89

45.58.55[.]73

45.13.135[.]103

27.102.114[.]89

210.16.121[.]137

58.229.208[.]146

27.102.107[.]63

download.riseknite[.]life

onedrive-upload.ikpoo[.]cf

alps.travelmountain[.]ml

texts.letterpaper[.]press

对最近一次AppleSeed攻击的分析

在本节中,我们将分析Kimsuky用于攻击韩国外交部的AppleSeed后门。

初始访问

Kimsuky于2021年5月7日对韩国外交部进行了鱼叉式网络钓鱼攻击,钓鱼邮件中携带恶意附件(외교부사판2021-05-07.zip),攻击目标由上文所述的途径收集。

附件文件包含一个伪装成PDF文件的JavaScript文件(외교부사판2021-05-07.pdf.jse),它包含两个Base64编码的数据块,第一个是数据块是PDF诱饵文件的内容,另一个为Base64格式的AppleSeed有效负载(编码两次)。后者先使用MSXMLBase64解码函数解码第一层,然后使用certutil.exe解码第二层并获得最终的ApppleSeed有效负载。

图5:JS文件

解码PDF和AppleSeed有效负载后的内容将写入ProgramData目录。最后,通过调用Wscript.Shell.Run打开诱饵PDF文件,并通过PowerShell调用regsvr32.exe执行AppleSeed有效负载。调用regsvr32.exe来运行DLL将其注册为一个服务器,该服务器自动调用名为DllRegisterServer的DLL导出函数。

powershell.exe-windowstylehiddenregsvr32.exe/sAppleSeed_Payload
Wscript_Shell.Run(Pdf_Name);

AppleSeed后门

植入的有效负载是由UPX封装的DLL文件。解压后的样本经过高度混淆,重要的API调用和字符串已使用自定义加密算法进行加密。字符串和API调用的加密版本采用十六进制ASCII格式,每当在代码中恶意软件需要使用字符串时,它就会获取加密的字符串并将其传递给两个函数对其进行解密。

第一个函数“string_decryptor_prep”获取加密的字符串,然后准备一个自定义数据结构,该结构有四个元素:

typedefstruct_UNICODESTR{
wchar_t*Buffer;//Encryptedstring
DWORDpadding;
uint64_tLength;//Lengthofthestring
uint64_tMaxLength;//Maxlengthforthestringwhichhasbeencalculatedbasedonthelenght
}UNICODESTR;

第二个函数“string_decryptor”获取前一个函数中创建的数据结构,解密其中的字符串并将其放入相同的数据结构中。

图6:字符串解密函数

解密器函数首先通过调用hexascii_to_binary函数,对每两个十六进制的ascii字符(即示例1中的c3、42、b1、1d...)转换为二进制,然后将输入中的前16个字节用作密钥,其余部分是在16个字节块(即ed、d5、0d、60)中解密的实际值。

解密过程是对key[i]^string[i-1]^string[i]的简单异或运算(第一个字符string_to_be_decrypted[i-1]设置为零)。

图7:字符串解码器示例

大多数重要的API调用在运行时使用“string_decryptor”函数动态解析。

图8:解析API调用

AppleSeed有效负载有一个名为“DllRegisterServer”的导出函数,该函数将在使用RegSvr32.exe执行DLL时调用。DllRegisterServer有一个函数负责执行DLL初始化和设置,包括以下步骤:

1、将自身复制到“C:\ProgramData\Software\ESTsoft\Common”中,并重命名为ESTCommon.dll,假装它是属于ESTsecurity公司的DLL。

2、通过创建以下注册表项使其持久化:

注册表项名称:EstsoftAutoUpdate

注册表项值:Regsvr32.exe/sC:\ProgramData\Software\ESTsoft\Common\ESTCommon.dll

注册表位置:HKLU\Software\Microsoft\Windows\CurrentVersion\RunOnce

图9:注册表创建

功能通过在“C:\ProgramData\Software\ESTsoft\Common\flags”目录中创建文件(FolderMonitor、KeyboardMonitor、ScreenMonitor、UsbMonitor)并将“flag”写入其中来激活。

下一步会创建一个互斥锁,确保只感染受害者一次。

图10:互斥锁创建

创建互斥锁后,通过调用GetTokenInformationAPI调用检查当前进程是否具有正确的访问权限,如果它没有,则尝试将SeDebugPrivilege传递给AdjustTokenPrivilege获得系统级权限。

图11:提权

最后,它在单独的线程中执行其主要功能。每个线程中收集的数据都被压缩和加密,并使用HTTPPOST请求发送到命令和控制服务器。将数据发送到服务器后,数据会从受害者的机器中删除。

ApppleSeed有效负载使用RC4来加密和解密数据。为了生成RC4密钥,它通过调用CryptGenRandom创建一个117字节的随机缓冲区,然后使用CryptCreateHash和CryptHashData将缓冲区添加到MD5哈希对象中,接着调用CryptDeriveKey来生成RC4密钥。

创建的117字节缓冲区使用RSA算法加密,并与RC4加密数据一起发送到服务器。RSA密钥采用十六进制ASCII格式,并已使用“string_decryptor”函数解密。

输入捕获(KeyLogger)

键盘记录器函数使用GetKeyState和GetKeyboardState来捕获受害者机器上按下的键,并将每个进程的所有键记录到log.txt文件中。

图12:键盘记录器

屏幕截图

该模块通过调用API(GetDesktopWindow、GetDC、CreateCompstibleDC、CreateCompatibleBitmap、Bitblt和GetDIBits)来截取屏幕截图,然后使用CreateFileW和WriteFile将它们写入文件。

图13:屏幕截图

收集可移动设备数据

该模块查找连接到机器的可移动媒体设备并收集数据,然后发送到命令和控制服务器。识别 USB 驱动器是调用 CM_Get_Device_IDW 检索格式为“

图 14:获取可移动设备

收集文件

该线程在Desktop、Documents、Downloads 和 AppData\Local\Microsoft\Windows\INetCache\IE 目录中查找 txt、ppt、hwp、pdf 和 doc 文件,将它们存档以备发送到服务器。

图 15:文件收集

命令结构

AppleSeed后门使用两层命令结构与服务器进行通信,模式为:

entity:url url:?m=[command layer one]&p1=[volume serial number]&p2=[command layer two]

第一层命令定义了服务器期望在机器上执行的命令类型,具有以下值之一:

· a  ping模式(收集受害者信息,包括 IP、时间戳、受害者操作系统版本)

· b 上传数据模式

· c 下载命令(等待命令)

· d 删除命令

· e 上传命令模式

· f 列出目录模式

· g 删除文件模式

· h 检查文件模式是否存在

命令层2仅用于当命令层 1 处于上传数据模式 (c) 并定义上传类型时。它可以具有以下值之一:

· a 上传命令执行结果

· b 上传文件和可移动媒体数据

· c 上传截图

· d 上传输入捕获数据(键盘记录器数据)

本文翻译自:https://blog.malwarebytes.com/threat-analysis/2021/06/kimsuky-apt-continues-to-target-south-korean-government-using-appleseed-backdoor/如若转载,请注明原文地址


文章来源: https://www.4hou.com/posts/ZvxR
如有侵权请联系:admin#unsafe.sh