SalahEldinFikri/Kalim_Backdoor
GitHub: SalahEldinFikri/Kalim_Backdoor
一份 Kalim 后门木马的分析报告,解析其持久化、C2 通信与 MITRE ATT&CK 技术,并提供 IOCs 与 Yara 规则。
Stars: 3 | Forks: 0
# Kalim 后门木马分析报告

## 本报告将介绍 Kalim 后门木马的功能。
## 目录:
### - 什么是后门?
### - 技术分析。
### - 总结。
### - 战术与技术(MITRE ATT&CK)。
### - IOCs。
### - Yara 规则。
## 什么是后门?
### 后门是一种绕过正常认证和安全控制、隐藏访问系统的方法。
## 技术分析:
## 基础静态分析:
### 首先将其上传到 VirusTotal 进行初步分析。结果显示该文件是一个 64 位 DLL,属于 Kalim 恶意软件家族。此外,多个检测结果提示其可能与 MuddyWater 威胁组织有关联。
### 该木马还与域名 moodleuni[.]com 建立网络通信。
### 它释放了一些文件:

### 现在在 Die(Detect it easy)中打开:
### 样本导入了大量 Windows API,表明其未经过打包。总共从六个 DLL 导入了函数:KERNEL32.dll、USER32.dll、ADVAPI32.dll、SHELL32.dll、ole32.dll 和 WININET.dll。
### 虽然每个 DLL 都导入了多个函数,但其中一些函数因在木马行为中的作用而特别值得关注。
### 具体而言,样本从 WININET.dll 导入了与网络通信相关的 API,以建立与命令与控制(C2)服务器的通信。它还利用 ole32.dll 中的 COM 相关函数来创建并交互组件对象模型(COM)对象。此外,恶意软件使用 SHELL32.dll 中的 SHGetFolderPathW 来检索由 CSIDL 值标识的系统目录路径。
## 高级静态分析:
### 在 ***DllMain*** 处,执行的唯一操作是创建一个新线程。在此线程中,执行两个函数:***sub_1800063A0*** 和 ***StartAddress***。
### 分析 ***sub_1800063A0*** 函数,我发现它包含两个不同的阶段。第一阶段,恶意软件将其自身副本释放到 *AppData\Roaming* 目录。它通过创建一个名为 *Updates* 的新子目录,随后创建一个名为 *update.exe* 的可执行文件来实现。写入该文件的二进制载荷直接来源于嵌入在 *unk_18002AA10* 处的数据。因此,最终文件被写入以下路径:*“C:\Users<用户名>\AppData\Roaming\Update\update.exe”*。
### 第二阶段,恶意软件使用 *RCLSID: {00021401-0000-0000-C000-000000000046}*(对应 Shell 链接对象 CLSID_ShellLink)和 *RIID: {000214F9-0000-0000-C000-000000000046}*(对应 IShellLinkW 接口)初始化一个组件对象模型(COM)对象。通过查看 shell32.dll 实现的完整 Shell COM 接口表,可以准确识别被调用的方法。恶意软件调用四个关键 COM 方法:*SetPath、SetDescription、Save 和 Release*。使用这些函数,它在 Windows 启动目录中创建一个名为 MicrosoftUpdateSerice.lnk 的恶意启动快捷方式,从而在受感染系统上建立持久性。
### 分析 StartAddress 函数
### 恶意软件通过三个不同的函数实现其网络通信逻辑,并生成两个独立的线程。一个线程负责生成和管理命令 shell,另一个线程在木马执行完成后负责上传收集的数据。
### 这三个函数共同管理与受感染主机和命令与控制(C2)服务器之间的通信,并组织为三个逻辑层。
### 第一层负责从被入侵系统中收集基于主机的指纹信息。第二层处理这些数据,执行加密及其他操作以准备传输。第三层建立与 C2 域名 moodleuni[.]com 的网络通信并传输处理后的数据。
### 前两个与网络相关的函数专门负责身份验证和 HTTP POST 请求构造,从而实现向远程服务器的认证数据传输。
### 第三个函数负责接收来自 C2 服务器的命令。根据服务器的响应,恶意软件决定其下一步操作——要么生成隐藏的命令 shell,要么根据从 C2 接收到的命令上传收集的数据。
### 分析两个线程以全面了解其行为。
### 在第一个线程中,恶意软件创建一个作业对象以及另外两个管道,然后为其设置特定属性。
### 然后它创建一个 CMD,并设置以下属性:
### 第四参数的值 1 表示 CMD 可以继承管道句柄。
### 第五参数的值 0x1000200u 表示 CMD 具备以下标志:
### **CREATE_NO_WINDOW = 0x0000000u**
### **CREATE_NEW_PROCESS_GROUP = 0x0000200u**
### **CREATE_UNICODE_ENVIRONMENT = 0x0000400u**
### 以及其他启动信息:{结构大小 = 104 字节,hStdError = hWritePipe,hStdOutput = hWritePipe,hStdInput = hReadPipe2,dwFlags |= 0x100u = STARTF_USESTDHANDLES}。第一个管道负责读取 shell 的输出,第二个管道负责写入 shell。
### **并指向一个 PROCESS_INFORMATION 结构。**
### **创建 shell 后,将其分配给作业对象并置于挂起状态,等待来自 C2 的命令。**

### 该 shell 检查通过共享内存发送的控制命令:
### 待处理:正常执行。
### 终止:杀死 shell 并清理。shell 完全销毁并重置。
### Ctrlc:强制杀死所有剩余子进程。
### 在正常操作中,如果存在命令,它会将其写入 CMD,然后使用 PeekNamedPipe 检查输出并将其存储在缓冲区中。

### 第二个线程。
### 该线程首先在指定路径创建一个新文件。此文件用于在上传到 C2 服务器之前临时存储数据。如果文件无法创建或初始化过程中发生错误,该函数将在共享内存中设置状态字符串 “error” 并退出。该文件通过 HTTPS 上传至木马命令与控制服务器(moodleuni[.]com),使用自定义头部和会话标识符以模拟合法流量。上传完成后,函数在共享内存中更新状态以指示成功或失败:
### - 如果上传失败,则为 “error”。
### - 如果上传成功,则为 “done”。
## 总结:
### Kalim 后门木马首先专注于建立持久性,以确保在受害者系统上的长期存在。它通过在启动目录(CSIDL_STARTUP)中创建一个恶意快捷方式实现这一点:
### 该机制确保木马在每次系统启动时自动执行。
### 一旦持久性建立,木马开始与其命令与控制(C2)服务器 moodleuni[.]com 建立通信。它执行初始认证和系统指纹识别阶段,在此阶段收集、处理后并加密基于主机的信息。然后木马进入命令等待状态,持续轮询 C2 以获取指令。
### 根据接收到的命令,木马可以动态决定其后续操作,包括生成隐藏的命令 shell 以进行交互控制或将收集的数据上传回 C2 服务器。这种模块化设计使其能够同时实现远程命令执行和数据外泄,使 Kalim 成为一个灵活且持久的后门。
## 战术与技术(MITRE ATT&CK):
| 战术 | 技巧 ID | 名称 |
|-----------------------------|--------------|-----------------|
| 持久化 | T1547.001 | 启动文件夹 |
| 防御规避 | T1036.005 | 伪装 |
| 执行 | T1204.002 | 用户执行 |
| 命令与控制 / 阶段传输 | T1105 | 入侵工具传输 |
| 防御规避 | T1559.001 | COM 滥用 |
## IOCs:
```
- Family name: Kalim
- TA: MuddyWater
- SHA256 = 0c8071494bc155c96f2cee998200f63efffcb5a064c021de0925504271806229
- C2 = moodleuni[.]com
- MicrosoftUpdateSerice.lnk
- 150.171.27.12 (From VirusTotal)
```
## Yara 规则:
```
rule kalim{
meta:
description = "Detects Kalim malware"
author = "SalahEldin Fikri"
strings:
$m1 = "kalim.pdb" wide ascii
$s1 = "UPLOAD"
$s2 = "isHidden"
$s3 = "/command"
$s4 = "sleepTime"
$s5 = "hardwareId"
$s6 = "pending"
$s7 = "ctrlc"
$s8 = "terminate"
$s9 = { 8D 01 02 04 08 10 20 40 80 1B 36 }
$s10 = "KifHsNH6Xhgyebsr"
condition:
uint16(0) == 0x5A4D and
filesize < 500KB and
($m1) and
7 of ($s*)
}
```
### 该木马还与域名 moodleuni[.]com 建立网络通信。
### 它释放了一些文件:

### 现在在 Die(Detect it easy)中打开:
### 样本导入了大量 Windows API,表明其未经过打包。总共从六个 DLL 导入了函数:KERNEL32.dll、USER32.dll、ADVAPI32.dll、SHELL32.dll、ole32.dll 和 WININET.dll。
### 虽然每个 DLL 都导入了多个函数,但其中一些函数因在木马行为中的作用而特别值得关注。
### 具体而言,样本从 WININET.dll 导入了与网络通信相关的 API,以建立与命令与控制(C2)服务器的通信。它还利用 ole32.dll 中的 COM 相关函数来创建并交互组件对象模型(COM)对象。此外,恶意软件使用 SHELL32.dll 中的 SHGetFolderPathW 来检索由 CSIDL 值标识的系统目录路径。
## 高级静态分析:
### 在 ***DllMain*** 处,执行的唯一操作是创建一个新线程。在此线程中,执行两个函数:***sub_1800063A0*** 和 ***StartAddress***。
### 分析 ***sub_1800063A0*** 函数,我发现它包含两个不同的阶段。第一阶段,恶意软件将其自身副本释放到 *AppData\Roaming* 目录。它通过创建一个名为 *Updates* 的新子目录,随后创建一个名为 *update.exe* 的可执行文件来实现。写入该文件的二进制载荷直接来源于嵌入在 *unk_18002AA10* 处的数据。因此,最终文件被写入以下路径:*“C:\Users<用户名>\AppData\Roaming\Update\update.exe”*。
### 第二阶段,恶意软件使用 *RCLSID: {00021401-0000-0000-C000-000000000046}*(对应 Shell 链接对象 CLSID_ShellLink)和 *RIID: {000214F9-0000-0000-C000-000000000046}*(对应 IShellLinkW 接口)初始化一个组件对象模型(COM)对象。通过查看 shell32.dll 实现的完整 Shell COM 接口表,可以准确识别被调用的方法。恶意软件调用四个关键 COM 方法:*SetPath、SetDescription、Save 和 Release*。使用这些函数,它在 Windows 启动目录中创建一个名为 MicrosoftUpdateSerice.lnk 的恶意启动快捷方式,从而在受感染系统上建立持久性。
### 分析 StartAddress 函数
### 恶意软件通过三个不同的函数实现其网络通信逻辑,并生成两个独立的线程。一个线程负责生成和管理命令 shell,另一个线程在木马执行完成后负责上传收集的数据。
### 这三个函数共同管理与受感染主机和命令与控制(C2)服务器之间的通信,并组织为三个逻辑层。
### 第一层负责从被入侵系统中收集基于主机的指纹信息。第二层处理这些数据,执行加密及其他操作以准备传输。第三层建立与 C2 域名 moodleuni[.]com 的网络通信并传输处理后的数据。
### 前两个与网络相关的函数专门负责身份验证和 HTTP POST 请求构造,从而实现向远程服务器的认证数据传输。
### 第三个函数负责接收来自 C2 服务器的命令。根据服务器的响应,恶意软件决定其下一步操作——要么生成隐藏的命令 shell,要么根据从 C2 接收到的命令上传收集的数据。
### 分析两个线程以全面了解其行为。
### 在第一个线程中,恶意软件创建一个作业对象以及另外两个管道,然后为其设置特定属性。
### 然后它创建一个 CMD,并设置以下属性:
### 第四参数的值 1 表示 CMD 可以继承管道句柄。
### 第五参数的值 0x1000200u 表示 CMD 具备以下标志:
### **CREATE_NO_WINDOW = 0x0000000u**
### **CREATE_NEW_PROCESS_GROUP = 0x0000200u**
### **CREATE_UNICODE_ENVIRONMENT = 0x0000400u**
### 以及其他启动信息:{结构大小 = 104 字节,hStdError = hWritePipe,hStdOutput = hWritePipe,hStdInput = hReadPipe2,dwFlags |= 0x100u = STARTF_USESTDHANDLES}。第一个管道负责读取 shell 的输出,第二个管道负责写入 shell。
### **并指向一个 PROCESS_INFORMATION 结构。**
### **创建 shell 后,将其分配给作业对象并置于挂起状态,等待来自 C2 的命令。**

### 该 shell 检查通过共享内存发送的控制命令:
### 待处理:正常执行。
### 终止:杀死 shell 并清理。shell 完全销毁并重置。
### Ctrlc:强制杀死所有剩余子进程。
### 在正常操作中,如果存在命令,它会将其写入 CMD,然后使用 PeekNamedPipe 检查输出并将其存储在缓冲区中。

### 第二个线程。
### 该线程首先在指定路径创建一个新文件。此文件用于在上传到 C2 服务器之前临时存储数据。如果文件无法创建或初始化过程中发生错误,该函数将在共享内存中设置状态字符串 “error” 并退出。该文件通过 HTTPS 上传至木马命令与控制服务器(moodleuni[.]com),使用自定义头部和会话标识符以模拟合法流量。上传完成后,函数在共享内存中更新状态以指示成功或失败:
### - 如果上传失败,则为 “error”。
### - 如果上传成功,则为 “done”。
## 总结:
### Kalim 后门木马首先专注于建立持久性,以确保在受害者系统上的长期存在。它通过在启动目录(CSIDL_STARTUP)中创建一个恶意快捷方式实现这一点:
### 该机制确保木马在每次系统启动时自动执行。
### 一旦持久性建立,木马开始与其命令与控制(C2)服务器 moodleuni[.]com 建立通信。它执行初始认证和系统指纹识别阶段,在此阶段收集、处理后并加密基于主机的信息。然后木马进入命令等待状态,持续轮询 C2 以获取指令。
### 根据接收到的命令,木马可以动态决定其后续操作,包括生成隐藏的命令 shell 以进行交互控制或将收集的数据上传回 C2 服务器。这种模块化设计使其能够同时实现远程命令执行和数据外泄,使 Kalim 成为一个灵活且持久的后门。
## 战术与技术(MITRE ATT&CK):
| 战术 | 技巧 ID | 名称 |
|-----------------------------|--------------|-----------------|
| 持久化 | T1547.001 | 启动文件夹 |
| 防御规避 | T1036.005 | 伪装 |
| 执行 | T1204.002 | 用户执行 |
| 命令与控制 / 阶段传输 | T1105 | 入侵工具传输 |
| 防御规避 | T1559.001 | COM 滥用 |
## IOCs:
```
- Family name: Kalim
- TA: MuddyWater
- SHA256 = 0c8071494bc155c96f2cee998200f63efffcb5a064c021de0925504271806229
- C2 = moodleuni[.]com
- MicrosoftUpdateSerice.lnk
- 150.171.27.12 (From VirusTotal)
```
## Yara 规则:
```
rule kalim{
meta:
description = "Detects Kalim malware"
author = "SalahEldin Fikri"
strings:
$m1 = "kalim.pdb" wide ascii
$s1 = "UPLOAD"
$s2 = "isHidden"
$s3 = "/command"
$s4 = "sleepTime"
$s5 = "hardwareId"
$s6 = "pending"
$s7 = "ctrlc"
$s8 = "terminate"
$s9 = { 8D 01 02 04 08 10 20 40 80 1B 36 }
$s10 = "KifHsNH6Xhgyebsr"
condition:
uint16(0) == 0x5A4D and
filesize < 500KB and
($m1) and
7 of ($s*)
}
```
标签:ADVAPI32, Ask搜索, C2 通信, COM 对象, DAST, Die 工具, DLL 劫持, DNS 反向解析, IOCs, IP 地址批量处理, Kalim 家族, KERNEL32, MuddyWater, ole32, SEO 关键词, SHELL32, SHGetFolderPathW, USER32, VirusTotal, Windows API, WININET, Yara Rule, 云安全监控, 后门, 命令与控制, 大语言模型, 威胁情报, 安全报告, 开发者工具, 恶意软件分析, 文件释放, 网络安全审计, 网络通信, 静态分析