概述
Kimsuky 是位于朝鲜的APT组织,又名(Mystery Baby, Baby Coin, Smoke Screen,BabyShark, Cobra Venom)等,最早由Kaspersky在2013年披露。
该组织长期针对于韩国的智囊团、政府外交、新闻组织、教育学术组织等进行攻击,在过去几年里,他们将攻击目标扩大到包括美国、俄罗斯和欧洲各国在内的国家。主要目的为窃取情报、间谍活动等。
Kimsuky使用各种鱼叉式网络钓鱼和社会工程方法来获取对受害者网络的初始访问权限。
2. 样本详情
文件名 | ESTCommon.dll |
---|---|
Md5 | 6844589e2962b3914824cc8b90a552a6 |
文件类型 | Dll x64 |
4. 详细分析
1.字符串解密
恶意程序将所有可见的字符串和重要的API使用自定义的加密算法进行加密,加密后的数据以十六进制的ANSII格式存放,当需要使用时调用解密函数进行解密。如下图:
首先将加密数据转换成十六进制,然后取前16个字节为异或key,剩余的数据为已加密的字符串。 解密算法如下,当i为0时,string[i-1]为0。
1 | key[i] ^ string[i-1] ^ string[i] |
以上图中的加密数据为例,解密过程如下:
1 | 异或Key为: 5a a6 54 15 c2 fc 1b e5 25 29 0b 29 23 75 89 4b |
用python脚本编写的解密代码如下:
1 | def decrypt(s): |
2.判断互斥量
恶意程序在API解析完成后会判断互斥量”SpyRegsvr32-20210604170153”是否存在,如果存在则退出程序避免重复允许。
3.权限提升
恶意程序通过检测ConsentPromptBehaviorAdmin和PromptOnSecureDesktop的值来判断UAC是否被启用,如果这两个注册表项值都为0, 则表示UAC已被禁用无需做提权操作。
1 | - HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System |
UAC检测代码如下:
判断当前进程是否有TokenElevation。
如果UAC被禁用并且当前进程没有TokenElevation,则通过powershell来间接使用regsvr32启动恶意进程,此时恶意程序具有与regsvr32相同的权限。
4. 线程执行主要功能
恶意程序使用多个线程来实现主要功能, 创建的线程如下:
1. 屏幕截图线程
该线程的主要功能为每隔5分钟屏幕截图依次并通过SMTP协议发送到邮件服务。截图后文件保存到目录”c:\\programData\\{random}.tmp”,当整个文件的数据被加密时,文件名改成” {random }.tmp.tmp”。
2. 键盘按键记录线程
该线程的主要功能为监听带有窗口名称的按键记录,它每记录256次按键就将其写入到文件,然后休眠1秒,最后每隔10分钟发送按键记录文件到邮件服务。
3. 文件监控线程
该线程的主要功能是每隔一分钟从指定的目录搜索指定后缀的文件。这些目录分别是:
1 | %Desktop% |
如果发现指定后缀的文件,将文件名写入到文件list.fdb中。
4. USB文件监控线程
恶意程序通过函数get_usbs找到所有存在的USB驱动器,然后通过dir命令获取该驱动器的文件列表,压缩加密后发送的邮件服务。
5. 泄露文件列表线程
该文件由于恶意程序从受害者机器上收集的各种数据,该文件被保存到路径:
1 | C:\ProgramData\Software\ESTsoft\Common\list.fdb |
文件格式如下:
1 | Struct format |
该线程的主要功能是将list.fdb中的文件或目录列表信息压缩加密后发送到邮件服务。一旦发送成功,恶意程序就会将list.fdb中包含文件或目录列表的数据清除,只留下magic部分。
5.C&C解密
读取电子邮件
攻击者将邮件服务作为发送C&C指令和接收泄露数据信息的中转站,C&C指令由C&C服务器发起,并以电子邮件的形式存放在特定邮件账户的特定目录中,邮件正文无任何内容但是包含由加密的附件,该附件提供后门要执行的命令。恶意程序每隔30秒。邮件读取过程如下:
1 | 发送IMAP命令”UID SEARCH ALL”获取所有邮件的UID。收到的响应内容为”\* SEARCH 1 2 3 4”,后面的数字就是邮件的uid号 |
1.在邮件搜索关键字” Subject:”找到邮件主题数据
2.附件内容在邮件主题中以base64编码, 以”filename=”开头,结尾一般是”–”,因此搜索这两个字符串就能找到对应的附件数据。
3.附件保存为临时文件,发送post请求让邮件服务删除该邮件。
1 | 请求连接: imaps://imap.daum.net:993/cmd/;Uid={uid} |
电子邮件附件解密
恶意程序通过SMTP协议从账号为k2x0604@daum.net的邮箱的cmd文件夹中获取要执行的C&C命令,
C&C指令以加密的形式存放在邮件附件中。
恶意程序获取到邮件后首先将邮件附件下载并第一次解密后保存到临时目录,文件名为**{temp_name}.enc。邮件附件使用如下结构保存加密的C&C指令数据。
1 | Struct encrypt_Command |
首先查找PDF标识,如果不是则取消解密操作,否则进行解密C&C指令操作。恶意程序通过将邮件附件伪装成PDF文件的手段绕过邮件安全系统的检测。
恶意程序采用自定义算法生成一个key,该key与xor_key、encrypt_command通过自定义算法计算出crc32值,将该值取反后与vertifity_crc比较来验证邮件附件是否被修改过。
解密加密的C&C指令时,使用xor_key来进行解密;解密后写入临时文件。
C&C指令解密
恶意程序在第一次解密邮件附件后,C&C指令部分仍处于加密状态,对应的格式如下:
1 | Struct encrypt_cmd |
为防止被人解密出C&C指令数据,攻击者将用于解密C&C指令的RC4密钥用RSA算法加密,即发送邮件时使用公钥对RC4密钥加密,接收到邮件时使用RSA私钥解密RC4密钥。
RSA公钥与密钥以硬编码和加密的形式存放在程序内,解密方法与解密字符串一样。解密后的数据为十六进制字符串,转换成十六进制为对应的MicrosoftBlob Format格式,使用程序openssl可以将其转换成文本形式。
解密后的RSA 公钥如下:
解密后的RSA私钥如下:
恶意程序将要发送的数据加密后上传到电子邮件附件然后发送到邮件服务。对数据加密的过程如下:
1.生成大小为117的随机数并计算其md5值作为RC4算法的密钥
2.使用RSA公钥加密RC4密钥
3.将原始数据长度写入文件,长度为4字节
4.将加密后的RC4密钥写入文件,长度为0x80字节
5.加密要加密的数据,并写入文件
代码实现如下图
恶意程序接从邮件服务获取邮件时解密邮件附件得到加密的C&C指令,解密过程如下:
1.从邮件附件中读取被加密的RC4密钥
2.使用RSA私钥解密RC4密钥
3.使用RC4密钥解密加密的C&C指令
代码实现如下图:
从对邮件附件的加密解密来看,RC4算法使用的密钥为随机生成并且被RSA算法加密,只要RSA密钥不被泄露,想要解密数据目前是很困难的。
指令读取
恶意程序要执行的指令包含在由攻击者通过邮件服务发送的电子邮件附件中,C&C指令部分解密后使用的结构如下:
1 | Struct C2C_command |
C&C指令读取代码如下:
6.C&C指令
C&C指令由恶意程序从邮件附件中解密而来,主要由以下几种:
C&C指令 | 描述 |
---|---|
0x64 | 写入数据到list.fdb |
0x66 | 创建文件 |
0x65 | 启用或禁用恶意程序的主要功能 |
0x00 | 子指令1:执行文件并返回输出结果 |
0x00 | 子指令1或3: 通过regsvr32.exe执行命令 |
0x02 | DLL注入 |
1. 写入文件或目录列表到list.fdb
攻击者在该文件中写入想要从受害者机器上获取的文件和目录,等到下一次执行泄露文件列表线程时将这些文件泄露出去。该命令使用的结构如下:
1 | Struct format{ |
2. 文件创建
该指令主要用于攻击在在受害者机器上创建文件,使用的指令格式为:
1 | Struct format{ |
3. 关闭或启用主要功能
该指令的主要功能用于开启或者关闭主要功能,比如键盘按键记录、文件监控、屏幕截图等等。该指令使用的格式如下:
1 | Struct format{ |
4. 执行命令并返回执行结果
该指令的主要功能为在受害者机器上执行命令,并将执行后的结果发送到邮件服务。
该指令使用的结构如下:
1 | Struct format{ |
5. 使用regsvr32.exe调用dll程序
该指令主要是使用regsvc32.exe来调用dll文件,前提是该dll文件导出了函数DllRegisterServer。dll文件下载后保存到临时目录,使用regsvr32.exe注册成功后将该dll文件删除。该指令使用的格式如下:
1 | Struct format{ |
6. dll注入
该命令的功能主要为将dll注入到进程中,使用的结构如下:
1 | Struct format{ |
将接收到的dll注入到指定的进程中,并执行指令中给定的导出函数function_name。
7. ATT&CK矩阵
Tactic | ID | Name | Description |
---|---|---|---|
exfiltration | T1041 | Exfiltration Over C2 Channel | 通过邮件泄露数据 |
Command and Control | T1071.003 | Application Layer Protocol:Mail Protocols | 使用邮件服务接收泄露数据或发送C&C指令 |
T1001 | Data Obfuscation | 使用RC4加密或解密数据,使用RSA算法加密RC4密钥 | |
Collection | T1113 | Screen Capture | 屏幕截图 |
T1056 | Input Capture | 按键记录 | |
T1560 | Archive Collected Data | 使用ZIP算法压缩收集的数据 | |
T1005 | Data from Local System | 搜索本地文件 | |
T1025 | Data from Removable Media | 从USB驱动器收集数据 | |
Discovery | T1083 | File and Directory Discovery | 遍历文件或目录 |
T1082 | System Information Discovery | 获取操作系统版本号用于机器标识符 | |
Persistence | T1547 | Boot or Logon Autostart Execution | 注册自启动项 |
execution | T1059 | Command and Scripting Interpreter | 使用cmd执行命令 |
最后更新: 2024年03月31日 12:52:24
本文链接: http://shxi.cc/post/e22d03da.html
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可,转载请注明出处!