CTF逆向线下赛必备解密脚本积累(上)
字数 4057
更新时间 2026-10-08 11:34:11

Perusing# 基于 Fiora 框架的 CS 恶意样本分析教学文档

知识来源:阿里云先知社区文章《基于Fiora框架的CS恶意样本分析》(原文链接:https://xz.aliyun.com/news/92711)
本文对原文核心知识进行系统化梳理,涵盖工具原理、环境搭建、样本分析全流程、关键函数逆向解析及反制思路,适用于红蓝对抗、恶意代码分析、C2 基础设施研究等场景。


一、背景与核心概念

1.1 Cobalt Strike(CS)与 Fiora 框架

  • Cobalt Strike(CS):一款主流的红队协同作战框架,常被攻击者用于生成恶意 payload(Beacon),具备 DNS/HTTP/HTTPS 等多种 C2 通信方式。
  • Fiora 框架:一款专为分析 CS 恶意样本而设计的开源工具,核心能力包括:
    • 自动化解析 CS Beacon 配置(如 C2 地址、端口、心跳间隔、加密密钥等)
    • 模拟 CS Team Server 与 Beacon 的交互逻辑
    • 辅助逆向工程师快速定位关键解密函数与通信逻辑
    • 支持多版本 CS 样本(3.x–4.x 常见版本)

1.2 为什么需要 Fiora

传统 CS 样本分析依赖 IDA Pro + 动态调试,需手动追踪解密逻辑、还原配置结构,耗时且易出错。Fiora 通过以下方式降低门槛:

  • 内置 CS 各版本配置结构定义(偏移、字段类型、加密方式)
  • 自动识别样本版本并提取明文配置
  • 提供交互式命令行,可模拟 Beacon 回连、执行指令

二、环境准备

2.1 硬件与系统要求

项目 推荐配置
CPU 2 核及以上
内存 4 GB 及以上
磁盘 20 GB 可用空间
系统 Ubuntu 20.04 LTS / Kali Linux 2023+ / Windows 10/11(WSL2 推荐)

2.2 软件依赖

  • Python 3.8+
  • Git
  • 反汇编/调试工具(IDA Pro 7.6+、x64dbg、Ghidra 任选其一)
  • 网络抓包工具(Wireshark、tcpdump)
  • 可选:Docker(用于快速部署 Fiora 服务端)

2.3 Fiora 框架安装

方式一:源码安装(推荐)

git clone https://github.com/xxx/fiora.git   # 原文仓库地址,实际以官方为准
cd fiora
pip3 install -r requirements.txt
python3 fiora.py -h

方式二:Docker 部署

docker pull fiora/fiora:latest
docker run -it --rm -p 8080:8080 fiora/fiora

2.4 样本获取与合法性说明

  • 样本应来自沙箱报告、威胁情报平台、授权渗透测试项目
  • 禁止将恶意样本用于非法攻击或传播
  • 分析环境务必隔离(虚拟机 + 快照 + 断网或仅主机模式)

三、Fiora 核心功能与命令详解

3.1 命令行参数

参数 作用
-f / --file 指定 CS 样本路径(PE 文件)
-d / --dump 提取并转储解密后的配置到文件
-v / --version 指定 CS 版本(如 4.7),不指定则自动识别
-o / --output 输出目录
--teamserver 启动模拟 Team Server 模式
--interactive 进入交互式 Beacon 模拟终端

3.2 配置提取流程

  1. 加载样本,识别 CS 版本(基于特征字符串、RSA 公钥、编译时间等)
  2. 定位配置加密区域(通常位于 .data 或 .rdata 段)
  3. 使用内置密钥或用户指定密钥解密 AES/RC4 配置块
  4. 解析配置结构体,输出 JSON 格式结果

3.3 模拟 Team Server 模式

  • 监听指定端口,伪装成 CS Team Server
  • 接收 Beacon 回连,记录元数据(主机名、IP、进程名、PID)
  • 可下发预设命令(如 shell whoami、sleep 60)
  • 用于观察 Beacon 真实通信行为,验证配置正确性

四、CS 样本分析全流程实战

4.1 样本静态分析

4.1.1 基本信息获取

使用 file、strings、pefile 等工具:

file beacon.exe
strings beacon.exe | grep -i "cobalt"
pefile beacon.exe

关键识别点:

  • 是否存在 pipe\\msagent_* 等命名管道字符串
  • 是否包含 Cobalt Strike 相关 User-Agent(如 Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0))
  • 是否存在 RSA1、RSA2 等公钥标记

4.1.2 定位配置解密函数

CS Beacon 通常使用以下加密组合:

  • 配置块:AES-256-CBC 或 RC4,密钥硬编码或派生
  • 字符串:XOR 循环加密,密钥来自配置
  • 通信数据:AES + HMAC 或 RSA 加密

在 IDA Pro 中搜索关键交叉引用:

  • CryptDecrypt
  • AES_set_decrypt_key
  • RC4_set_key
  • 自定义 XOR 循环(xor byte ptr [eax+ebx], cl)

4.2 使用 Fiora 自动提取配置

python3 fiora.py -f beacon.exe -d -o ./output

输出示例(config.json):

{
  "version": "4.7",
  "c2": [
    "https://c2.example.com/jquery/1.0.0/jquery.min.js",
    "https://backup.example.com/api/v1"
  ],
  "port": 443,
  "beacon_type": "HTTPS",
  "polling_interval": 60000,
  "jitter": 20,
  "public_key": "-----BEGIN PUBLIC KEY-----\n...",
  "watermark": 123456,
  "kill_date": "2025-12-31"
}

4.3 动态调试辅助验证

  1. 在 x64dbg 中加载样本,在 VirtualAlloc 或 Sleep 处下断点
  2. 运行至配置解密完成,dump 内存中解密后的配置块
  3. 与 Fiora 输出对比,验证一致性
  4. 跟踪 Beacon 心跳逻辑,观察 HTTP GET/POST 请求格式

4.4 通信协议逆向

CS Beacon 与 Team Server 通信特征:

阶段 特征
初始回连 HTTP GET 请求,URI 包含随机路径,Cookie 携带 base64 编码元数据
任务获取 响应为加密的 task 数据,解密后包含命令 ID 与参数
结果回传 HTTP POST 请求,body 为 AES 加密的执行结果
心跳间隔 默认 60 秒,±jitter% 随机偏移

Fiora 可模拟上述流程,自动解密流量,还原命令与结果。


五、关键函数逆向解析

5.1 配置解密函数(Config Decrypt)

典型伪代码:

int decrypt_config(unsigned char* cipher, int len, unsigned char* key, unsigned char* out) {
    AES_KEY aes_key;
    AES_set_decrypt_key(key, 256, &aes_key);
    AES_cbc_encrypt(cipher, out, len, &aes_key, iv, AES_DECRYPT);
    return 0;
}

关键点:

  • 密钥来源:样本内硬编码或派生自 watermark
  • IV 通常为全零或前 16 字节密文
  • 解密后配置结构为固定偏移的字段数组

5.2 字符串解密函数(String Decrypt)

CS 使用 XOR 循环解密字符串表:

void decrypt_strings(unsigned char* str_table, int len, unsigned char key) {
    for (int i = 0; i < len; i++) {
        str_table[i] ^= key;
        key = str_table[i];  // 更新密钥,形成反馈
    }
}

Fiora 内置字符串解密引擎,可自动识别并还原所有加密字符串。

5.3 Beacon 心跳与任务处理

心跳线程主循环:

while (1) {
    sleep(interval + rand() % jitter);
    send_http_get(uri, cookie);
    if (recv_task(&task)) {
        execute_task(task);
    }
}

任务执行函数通过命令 ID 分发:

命令 ID 功能
1 执行 shell 命令
2 上传文件
3 下载文件
4 注入进程
5 加载模块(dll)

六、反制与防御思路

6.1 基于 Fiora 的主动反制

  • 部署 Fiora 模拟 Team Server,诱捕攻击者 Beacon
  • 记录攻击者 IP、证书、命令习惯,用于溯源
  • 下发虚假任务,误导攻击者判断

6.2 检测与防御建议

  • 网络层:检测长连接、固定心跳、异常 User-Agent、base64 Cookie
  • 主机层:监控 powershell、rundll32、mshta 异常调用
  • 内存层:扫描进程内存中的 CS 特征字符串、RSA 公钥
  • 威胁情报:将提取的 C2 地址同步至防火墙、IDS、EDR

6.3 样本对抗手段(供分析者参考)

  • 自定义加密算法替换 AES/RC4
  • 修改配置结构偏移,增加 Fiora 识别难度
  • 使用域名前置(Domain Fronting)隐藏真实 C2
  • 启用 Malleable C2 Profile 混淆流量

七、常见问题与解决方案

问题 原因 解决
Fiora 无法识别版本 样本加壳或版本过新 手动指定 -v 参数,或脱壳后重试
配置解密失败 密钥错误或非标准 CS 样本 使用 IDA 手动定位解密函数,提取密钥
模拟 Team Server 无回连 样本使用 TCP/HTTP 外其他协议 检查样本配置,确认 Beacon 类型
输出配置字段缺失 样本为自定义改造版 结合动态调试补充字段

八、总结与扩展学习

8.1 核心要点回顾

  • Fiora 框架大幅简化 CS 样本分析流程,实现配置自动提取与流量解密
  • 分析需结合静态逆向(IDA)、动态调试(x64dbg)、网络抓包(Wireshark)
  • 理解 CS 通信协议与加密逻辑是深入分析的基础
  • 反制思路可从模拟 Team Server、流量检测、内存扫描多维度展开

8.2 扩展学习资源

  • Cobalt Strike 官方文档(Malleable C2 Profile)
  • 《恶意代码分析实战》(Practical Malware Analysis)
  • 先知社区、FreeBuf、安全客等平台 CS 分析文章
  • GitHub 相关项目:CS-Extract、BeaconConfigExtractor、Fiora

8.3 实践建议

  1. 搭建隔离实验环境(VMware + 快照)
  2. 使用已知版本 CS 生成测试样本,验证 Fiora 功能
  3. 尝试手动还原配置解密流程,加深理解
  4. 参与 CTF 或红蓝对抗,积累实战经验

本文档基于阿里云先知社区文章《基于Fiora框架的CS恶意样本分析》提取整理,保留原文技术细节,去除无关内容,适用于教学、研究与防御参考。

相似文章
相似文章
小程序二维码
 全屏