金融红队突破出网实战开发应用
字数 1366 2025-08-22 12:22:30

金融红队突破出网实战开发应用技术文档

1. 背景与挑战

在金融单位渗透测试项目中,发现目标网络存在以下限制:

  • 严格出网控制,采用白名单机制
  • 常规C2通道无法直接建立连接
  • 存在文件上传功能但受限于网络隔离

2. 技术方案概述

通过利用目标系统的文件上传功能,构建基于文件交换的中转通道,实现C2通信。核心思路:

  • 使用两个文件(client.txt和server.txt)进行双向数据交换
  • 客户端和服务端分别监听本地端口并处理数据
  • 通过定时任务同步更新配置文件保持连接持久性

3. 详细技术实现

3.1 通信流程设计

客户端工作流程:

  1. CS Beacon监听本地端口(127.0.0.1:17777)
  2. 中转程序接收数据并上传至WEB系统(client.txt)
  3. 定期检查server.txt获取服务端指令

服务端工作流程:

  1. 定期检查client.txt获取客户端数据
  2. 将数据转发至CS服务端监听端口(x.x.x.x:17777)
  3. 接收CS指令并保存至server.txt

3.2 文件上传机制分析

目标系统使用阿里云OSS进行文件存储,上传流程:

  1. 获取上传Token(GET /getUploadToken)
  2. 解析返回的OSS配置信息(包含签名、策略等)
  3. 构建multipart/form-data请求上传文件

关键上传参数:

  • bucket: 存储桶名称
  • x-amz-signature: 请求签名
  • key: 文件存储路径
  • policy: 上传策略(Base64编码)

3.3 Go语言实现代码解析

3.3.1 上传功能实现

// 获取上传Token
func getUploadToken(session string) (UploadData, error) {
    // 构建GET请求获取上传凭证
    // 包含必要的请求头和Cookie
}

// 文件上传函数
func uploadFile(uploadData UploadData, filePath string) (string, error) {
    // 构建multipart表单
    // 填充所有必需字段
    // 执行上传并返回文件URL
}

3.3.2 客户端监听

func startClient(bind_address string) {
    // 监听本地端口
    // 处理传入连接
    // 数据编码(Base64)后上传
}

func process(conn net.Conn) {
    // 处理单个连接
    // 读取数据并检查完整性
    // 与server.txt交互获取响应
}

3.3.3 服务端监听

func startServer(server_address string) {
    // 定期检查client.txt
    // 处理文件变更
}

func checkFileChanges(currentContent string, server_address string) {
    // 文件变更检测
    // 加锁机制防止冲突
    // 转发数据到CS服务器
}

3.4 配置文件同步机制

服务端同步流程:

  1. 定时执行(每20分钟)
  2. 获取新的上传Token
  3. 上传临时配置文件
  4. 重命名文件完成更新
func timedownload2() {
    // 定时任务主循环
    // 加锁保护关键操作
    // 分阶段更新配置文件
}

客户端同步检测:

  1. 检查server.txt内容
  2. 识别"success"标识
  3. 下载并替换本地配置文件
if strings.HasPrefix(currentContent, `{"success`) {
    // 处理新配置文件
    // 安全替换现有文件
}

4. 关键技术与注意事项

4.1 突破出网技术汇总

  1. 白名单访问:利用已授权的网站或服务
  2. VPN/代理:通过内部代理通道中转
  3. RDP跳板:借助已出网机器作为跳板
  4. 移动设备:通过MDM管理的设备通道
  5. API接口:利用已授权的数据接口

4.2 实现中的关键点

  1. 文件锁定机制:防止配置更新时数据冲突
  2. Base64编码:确保数据传输完整性
  3. 定时任务同步:维持连接持久性
  4. 错误处理:网络波动和超时处理
  5. 日志记录:操作审计和问题排查

4.3 实战测试验证

已验证功能:

  • 截图捕获
  • 文件下载
  • 命令执行
  • 多主机管理

5. 扩展应用与改进方向

  1. 多语言实现:Python、C#等版本适配不同环境
  2. 协议伪装:模拟正常业务流量特征
  3. 加密增强:提升通信数据安全性
  4. 自动化部署:简化红队操作流程
  5. 代理功能:通过该通道建立完整代理

6. 防御建议

针对此类攻击的防护措施:

  1. 严格审查文件上传功能
  2. 监控异常的文件访问模式
  3. 实施文件内容检查机制
  4. 限制OSS等存储服务的权限
  5. 加强网络流量审计

附录:参考实现

完整代码参考CSDN文章:
https://blog.csdn.net/bring_coco/article/details/144015218

注意:本文档仅用于安全研究和技术学习目的,实际应用需遵守相关法律法规和道德准则。

金融红队突破出网实战开发应用技术文档 1. 背景与挑战 在金融单位渗透测试项目中,发现目标网络存在以下限制: 严格出网控制,采用白名单机制 常规C2通道无法直接建立连接 存在文件上传功能但受限于网络隔离 2. 技术方案概述 通过利用目标系统的文件上传功能,构建基于文件交换的中转通道,实现C2通信。核心思路: 使用两个文件(client.txt和server.txt)进行双向数据交换 客户端和服务端分别监听本地端口并处理数据 通过定时任务同步更新配置文件保持连接持久性 3. 详细技术实现 3.1 通信流程设计 客户端工作流程: CS Beacon监听本地端口(127.0.0.1:17777) 中转程序接收数据并上传至WEB系统(client.txt) 定期检查server.txt获取服务端指令 服务端工作流程: 定期检查client.txt获取客户端数据 将数据转发至CS服务端监听端口(x.x.x.x:17777) 接收CS指令并保存至server.txt 3.2 文件上传机制分析 目标系统使用阿里云OSS进行文件存储,上传流程: 获取上传Token(GET /getUploadToken) 解析返回的OSS配置信息(包含签名、策略等) 构建multipart/form-data请求上传文件 关键上传参数: bucket: 存储桶名称 x-amz-signature: 请求签名 key: 文件存储路径 policy: 上传策略(Base64编码) 3.3 Go语言实现代码解析 3.3.1 上传功能实现 3.3.2 客户端监听 3.3.3 服务端监听 3.4 配置文件同步机制 服务端同步流程: 定时执行(每20分钟) 获取新的上传Token 上传临时配置文件 重命名文件完成更新 客户端同步检测: 检查server.txt内容 识别"success"标识 下载并替换本地配置文件 4. 关键技术与注意事项 4.1 突破出网技术汇总 白名单访问 :利用已授权的网站或服务 VPN/代理 :通过内部代理通道中转 RDP跳板 :借助已出网机器作为跳板 移动设备 :通过MDM管理的设备通道 API接口 :利用已授权的数据接口 4.2 实现中的关键点 文件锁定机制 :防止配置更新时数据冲突 Base64编码 :确保数据传输完整性 定时任务同步 :维持连接持久性 错误处理 :网络波动和超时处理 日志记录 :操作审计和问题排查 4.3 实战测试验证 已验证功能: 截图捕获 文件下载 命令执行 多主机管理 5. 扩展应用与改进方向 多语言实现 :Python、C#等版本适配不同环境 协议伪装 :模拟正常业务流量特征 加密增强 :提升通信数据安全性 自动化部署 :简化红队操作流程 代理功能 :通过该通道建立完整代理 6. 防御建议 针对此类攻击的防护措施: 严格审查文件上传功能 监控异常的文件访问模式 实施文件内容检查机制 限制OSS等存储服务的权限 加强网络流量审计 附录:参考实现 完整代码参考CSDN文章: https://blog.csdn.net/bring_ coco/article/details/144015218 注意:本文档仅用于安全研究和技术学习目的,实际应用需遵守相关法律法规和道德准则。