污水攻击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. 客户端流程

客户端执行流程如下:

  1. 访问/get接口获取初始payload
  2. 访问/getc接口获取处理后的payload
  3. 访问/hjf接口获取C://ProgramData下的a.zip和b.ps1文件
  4. 访问/hjfs接口获取C://ProgramData下的sct.ini文件
  5. 访问/sct接口获取ps1脚本文件
  6. 访问/hta接口获取ps1脚本文件
  7. 访问/dl接口进行文件下载
  8. 访问/up接口(当前不支持)
  9. 访问/img接口获取相关图像
  10. 访问/md接口添加模块
  11. 执行其他PowerShell可以直接执行的命令

5. 技术细节分析

5.1 通信机制

MuddyC3使用HTTP协议进行通信,主要特点包括:

  • 使用GET方法获取命令和payload
  • 使用POST方法提交数据和结果
  • 简单的身份验证通过id参数实现

5.2 持久化技术

框架采用多种持久化技术:

  • 在ProgramData目录下放置文件(a.zip、b.ps1、sct.ini)
  • 使用MSHTA执行脚本
  • 使用PowerShell脚本

5.3 命令执行流程

  1. 客户端定期轮询/cm/~接口获取新命令
  2. 执行命令后通过/re/~接口返回结果
  3. 服务器通过/info/~接口维护代理列表

6. 防御建议

针对MuddyC3攻击的防御措施:

  1. 网络监控

    • 监控对上述API端点的访问
    • 检测异常的PowerShell网络活动
  2. 主机防护

    • 限制PowerShell执行权限
    • 监控ProgramData目录的异常文件创建
    • 禁用或限制MSHTA执行
  3. 日志分析

    • 收集和分析PowerShell日志
    • 监控进程创建事件,特别是涉及PowerShell和MSHTA的
  4. 应用控制

    • 实施白名单策略,限制未经授权的脚本执行
    • 使用AppLocker或其他应用控制解决方案
  5. 网络分段

    • 限制内部主机对外部C2服务器的访问
    • 实施出站流量过滤

本教学文档涵盖了MuddyC3框架的主要技术细节,包括其通信协议、API接口、客户端流程以及防御措施,为安全研究人员提供了全面的分析参考。

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接口、客户端流程以及防御措施,为安全研究人员提供了全面的分析参考。