污水攻击MuddyC3开源代码分析
字数 2843 2025-08-18 11:38:56
MuddyC3开源代码分析教学文档
1. MuddyC3概述
MuddyC3是一种基于PowerShell的C2框架,主要用于远程控制受感染的Windows系统。该框架采用客户端-服务器架构,通过HTTP协议进行通信。
2. 参数分析
2.1 数据参数
MuddyC3使用以下数据结构存储代理信息:
| 角标 | 参数 | 归属 |
|---|---|---|
| * | id | key值 |
| 0 | ExternalIP | data |
| 1 | id | data |
| 2 | status | data |
| 3 | os | data |
| 4 | InternalIP | data |
| 5 | Arch | data |
| 6 | ComputerName | data |
| 7 | UserName | data |
简化表示:
| 角标 | 参数 |
|---|---|
| 0 | id |
| 1 | status |
| 2 | Internal IP |
| 3 | OS |
| 4 | Arch |
| 5 | Computer Name |
| 6 | User Name |
3. 服务器端API接口
MuddyC3服务器提供以下API端点:
| 编号 | 类别 | 表示方法 | HTTP方法 | 功能或结果 |
|---|---|---|---|---|
| 1 | index | / | GET | 返回'hello' |
| 2 | payload | /get | GET | 返回'config/PAYLOAD()' |
| 3 | payloadc | /getc | GET | 返回'toB52(config/PAYLOAD())' |
| 4 | payloadjf | /hjf | GET | 返回C://ProgramData下a.zip和b.ps1 |
| 5 | payloadjfs | /hjfs | GET | 返回C://ProgramData下sct.ini |
| 6 | sct | /sct | GET | 返回ps1文件 |
| 7 | mshta | /hta | GET | 返回ps1文件 |
| 8 | info | /info/~ | POST | 查询id,若不存在则在AGENTS中添加 |
| 9 | download | /dl/~ | POST | 从服务端指定路径下载文件 |
| 10 | upload | /up | - | 暂不支持该功能 |
| 11 | img | /img/~ | POST | 得到相关img |
| 12 | command | /cm/~ | GET | 得到'config.COMMAND[id]'中的命令 |
| 13 | result | /re/~ | POST | 得到指定id主机的data |
| 14 | modules | /md/~ | POST | 添加模块 |
4. 客户端流程
客户端执行流程如下:
- 访问/get接口获取初始payload
- 访问/getc接口获取处理后的payload
- 访问/hjf接口获取C://ProgramData下的a.zip和b.ps1文件
- 访问/hjfs接口获取C://ProgramData下的sct.ini文件
- 访问/sct接口获取ps1脚本文件
- 访问/hta接口获取ps1脚本文件
- 访问/dl接口进行文件下载
- 访问/up接口(当前不支持)
- 访问/img接口获取相关图像
- 访问/md接口添加模块
- 执行其他PowerShell可以直接执行的命令
5. 技术细节分析
5.1 通信机制
MuddyC3使用HTTP协议进行通信,主要特点包括:
- 使用GET方法获取命令和payload
- 使用POST方法提交数据和结果
- 简单的身份验证通过id参数实现
5.2 持久化技术
框架采用多种持久化技术:
- 在ProgramData目录下放置文件(a.zip、b.ps1、sct.ini)
- 使用MSHTA执行脚本
- 使用PowerShell脚本
5.3 命令执行流程
- 客户端定期轮询/cm/~接口获取新命令
- 执行命令后通过/re/~接口返回结果
- 服务器通过/info/~接口维护代理列表
6. 防御建议
针对MuddyC3攻击的防御措施:
-
网络监控:
- 监控对上述API端点的访问
- 检测异常的PowerShell网络活动
-
主机防护:
- 限制PowerShell执行权限
- 监控ProgramData目录的异常文件创建
- 禁用或限制MSHTA执行
-
日志分析:
- 收集和分析PowerShell日志
- 监控进程创建事件,特别是涉及PowerShell和MSHTA的
-
应用控制:
- 实施白名单策略,限制未经授权的脚本执行
- 使用AppLocker或其他应用控制解决方案
-
网络分段:
- 限制内部主机对外部C2服务器的访问
- 实施出站流量过滤
本教学文档涵盖了MuddyC3框架的主要技术细节,包括其通信协议、API接口、客户端流程以及防御措施,为安全研究人员提供了全面的分析参考。