用于带外发现的漏洞利用服务器。将目标指向你拥有的域名。它发回的每个 HTTP 请求和每封电子邮件都会落入你控制的仪表板中,并且它会得到你选择的任何响应作为回报。
BEAR-C2 是一个对手模拟与仿真框架,围绕受 俄罗斯、中国、朝鲜和伊朗 APT 组织 启发的真实世界 TTP 构建。它为多样化的交战场景提供了灵活的环境,并为红队行动和对手仿真提供了逼真的基础,其灵感来源于 APT Attack Simulation Repository 中的相关仿真研究。它支持防御规避技术和多种加密选项,以准确呈现真实世界的入侵场景。
[!CAUTION] 必须注意,本项目仅供教育和研究目的使用,任何未经授权的使用都可能导致法律后果。
git clone https://github.com/S3N4T0R-0X0/BEAR-C2.git && cd BEAR-C2
chmod +x requirements.sh && ./requirements.sh
./BEAR-C2
## 🧠 对手模拟面临的挑战:
准确复现 **APT 技术** 需要一个 `灵活的环境,能够模拟现代入侵中使用的连接协议、加密方法、数据外传技术以及 C2 通道/配置文件`。然而,达到这种精确度一直是一项挑战。
<img width="1366" height="732" alt="main " src="https://assets.kitploit.com/production/public/readmes/54775/8af4474bf61f52114745ec8403b4ea6d01d26a57f85913f1f01b4bba559a1eb7/59654a7b465df184554d5c31ee49293c1f5d9da71a1e6ef81aa0a2fa5b88b8ea-display-v1.webp" />
每当操作人员需要使用特定的**数据外传配置文件**测试特定的**加密方案**时,都`必须构建一个单独的 C2 脚本以匹配攻击场景。`例如,一次模拟可能需要 **AES 加密**配合 **OneDrive 数据外传**,而另一次可能需要**不同的加密方法**结合 **Dropbox 数据外传**,以反映在真实世界攻击中观察到的技术。这种缺乏灵活性的问题使整个过程效率低下且耗时。
<img width="1359" height="680" alt="Screenshot From 2026-09-01 05-54-48" src="https://assets.kitploit.com/production/public/readmes/54775/c106129e53832b08e6575610090337721e4e5892eade10bee395fae638326cc2/299229b4ffae9286d368a6e9243c4528d469f5395f166d9b67fa0020beaf5d8a-display-v1.webp" />
这正是开发 **BEAR C2** 的原因,它通过新的监听器为**对手模拟**提供完全自定义能力,允许无缝配置 `连接协议、加密、数据外传` 以及自动化加载技术。这确保了模拟能够准确反映真实的 **APT 入侵**,而无需为每种场景构建自定义脚本。
## Reaper Node 载荷示例
Reaper Node 提供了 C++ 载荷示例 `/Stagers-Loaders/Reaper Node Samples/`,可用作在不需要预生成载荷的环境中的可自定义模板。这些示例包含与相应 Reaper Node 实例建立通信所需的核心配置字段。
在编译载荷之前,必须配置所需的连接和传输参数,使其与 Reaper Node 配置相匹配。
### 载荷配置
载荷配置应提供以下参数的输入字段:
* **Authentication ID**
用于将载荷与所配置的 Reaper Node 实例关联的标识符。
* **Server Host**
Reaper Node 端点的 IP 地址或主机名。
* **Server Port**
Reaper Node 为所选通信协议开放的网络端口。
* **Encryption Key**
当所选传输方式使用加密时必需。该值必须与 Reaper Node 使用的加密配置相匹配。如果加密已禁用,则此字段不是必需的。
* **User-Agent**
在建立初始 HTTP/HTTPS 通信时使用的 HTTP 客户端标识值。载荷应使用相应 Reaper Node 配置所支持的 User-Agent。
User-Agent 在不同 Reaper Node 配置之间不需要完全相同。只要生成的配置与服务器端传输设置兼容,载荷就可以使用所选 Reaper Node 配置文件所定义支持的任何 User-Agent。
### 配置示例
以下示例展示了一个示例 HTTPS 传输配置,包含身份验证、服务器寻址、加密和 User-Agent 参数:```cpp
const string AUTH_ID = "YOUR_AUTH_ID";
const string SERVER_HOST = "YOUR_SERVER_HOST";
const int SERVER_PORT = YOUR_SERVER_PORT;
const string KEY = "YOUR_ENCRYPTION_KEY";
const string DEFAULT_USER_AGENT = "YOUR_USER_AGENT";
bool VERIFY_SSL = true;
此配置表示启用了加密的 HTTPS 传输。上面显示的值是占位符,应替换为相应 Reaper Node 配置所定义的参数。
C++ 示例旨在为自定义提供起点。用户可以根据其正在测试的 Reaper Node 配置文件修改配置和传输相关参数,然后为其授权的模拟环境编译自定义载荷。
监听器表提供了所有活动及已配置 C2 监听器的集中概览。它显示关键详细信息,例如监听器名称、地址、网络协议、加密方法、外传配置文件以及当前状态(活动或已停止/已断开)。通过此界面,操作员可以轻松启动、停止、重命名或删除监听器。它还提供对加密密钥和身份验证 ID 的快速访问,用于管理信标通信。此表是编排和监控 C2 基础设施的命令中心。

此版本具有完整的 GUI,通过集中式监听器管理、实时会话跟踪、可自定义的通信配置文件、集成式外传工作流以及灵活的操作员控制来简化对手模拟操作,从而实现高效的行动管理。
⚠️ 注意: 此项目正在积极开发中。功能会持续添加和改进。
| 功能 | 描述 |
|---|---|
| 多协议监听器 | DoH、HTTPS、HTTP、QUIC、Reverse TCP |
| 每监听器加密 | AES、XOR、RC4、DES、ChaCha20、RSA |
| 外传配置文件 | Google Drive、OneDrive、Dropbox |
| 集成式 C2 通道 | 集成 Telegram、Discord C2 通信通道 |
| 代理支持 | SOCKS4、SOCKS4a 和 SOCKS5 代理及重定向器支持 |
| 动态域名生成算法 | DGA 支持,用于弹性基础设施模拟 |
| JA3S 指纹识别 | 可自定义的 JA3S 指纹,用于流量模拟和网络配置文件调优 |
| 可塑 C2 配置文件 | 支持社区 Malleable C2 profiles,用于灵活的网络流量模拟 |
| Stagers 与 Loaders | 为 APT 对手模拟设计的自动化 stager 和 loader 技术 |
| 集成工具 | 内置脚本混淆器、钓鱼工具包和文件托管 |
| TLS 证书生成 | 模拟受信任供应商的自签名 TLS 证书 |
| HTTP 自定义 | 用于客户端和服务器通信的 Base64 URL 编码和自定义 HTTP 标头 |
| 实时会话管理器 | 实时状态跟踪、会话监控和实时更新能力 |
| 自定义命名与 URI 路径 | 用户定义的行动名称和可配置的 URI 路径,以实现操作灵活性 |
| 重连与超时控制 | 可配置的重连延迟和每个会话可调整的超时阈值 |
| 身份验证标识符 | 具有内置过期控制的唯一身份验证令牌,以增强安全性 |
| 会话加固实用工具 | 用于活动会话的历史记录清理器、会话限制器和身份验证超时管理 |
为支持的云存储提供商(例如 Google Drive、OneDrive 和 Dropbox)配置每个会话的外传设置。外传配置文件界面允许您定义 API 访问令牌和目标文件夹路径,使您能够为每个会话自定义数据收集工作流。每个会话可以使用自己的外传配置文件,从而可以轻松地根据操作将收集的数据路由到不同的云存储提供商或目标位置。

Telegram 通信层使用 Telegram 机器人作为 C2 服务器与载荷之间的中介。C2 服务器使用配置的 API ID、API Hash 和电话号码向 Telegram 账户进行身份验证,然后通过该账户连接到先前创建的 Telegram 机器人

机器人的 Bot Token 嵌入在载荷中,使载荷能够通过 Telegram API 与机器人通信。命令从 C2 服务器发送到机器人,机器人将其转发给载荷,载荷执行接收到的任务并通过相同的通信路径返回结果。这创建了一个使用 Telegram 作为通信层的双向命令与控制通道。

在 Telegram 中打开 @BotFather 并使用 /newbot 创建新机器人。
/newbotbot 结尾的唯一用户名
Telegram Agent 需要 Bot Token 来向 Telegram Bot API 进行身份验证。
打开官方 Telegram API 开发门户并创建新应用程序。
生成以下凭据:https://my.telegram.org/apps
API IDAPI Hash
BEAR-C2 使用这些凭据来验证用于管理机器人通信的 Telegram 账户。
打开 Telegram Agent.cpp 并配置 Telegram 通信设置。
在编译载荷之前,必须将 BotFather 生成的 Bot Token 放入 /Stagers-Loaders/C2 Channel Agent Samples/Telegram Agent.cpp。

配置流程为:
BotFather → Bot Token → payload.cpp → Compile
API ID 和 API Hash 由 BEAR-C2 Telegram 集成使用,而 Bot Token 配置在 Telegram 载荷中,以便其能够与配置的 Telegram 机器人通信。
此阶段使用 Discord Gateway API 将传统的命令与控制通信通道替换为基于 Discord 的通信层。操作员无需依赖专用服务器、固定 IP 地址或自定义域名,而是通过私有 Discord 频道与模拟植入程序进行通信。

Discord 通信层使用通过同一 Discord 频道连接的两个 Discord 机器人。一个机器人连接到 C2 服务器,而第二个机器人分配给载荷。这两个机器人通过共享的 Discord 频道进行通信,从而允许 C2 服务器与载荷之间通过 Discord 进行任务下发和通信。
由于 Discord 不允许机器人直接与其他机器人通信,因此使用共享频道提供双方之间的通信路径。

Discord Agent 使用 Discord Gateway 和 API 作为载荷与 BEAR-C2 之间的通信层。设置需要 Discord Bot 应用程序、专用文本频道、所需的机器人权限,以及在 C++ agent 示例中配置的相应值。
打开官方“Discord Developer Portal”(https://discord.com/developers/applications)并创建模拟所需的 Discord Bot 应用程序。
Discord C2 频道使用两个 Bot 身份:
对于每个应用程序,打开 Bot 设置并生成所需的 Bot Token。

打开 Discord Developer Portal 中的 Bot 配置并启用 Message Content Intent。
Bot 还必须具有模拟所使用的 Discord 文本频道所需的权限,包括:
这些权限允许 Bot 访问配置频道中的消息,并通过相同的通信路径发送消息。对于需要通过 API 接收消息内容的应用程序,Discord 要求启用 Message Content Intent。

为 Discord Agent 创建一个专用的私有文本频道,并将两个 Bot 应用程序添加到该频道。
确保在 Discord Developer Portal 中配置的相同权限也已在频道中为 Bot 应用程序启用。
在启用 Discord 开发者模式的情况下复制 Channel ID。当开发者模式启用时,Discord 通过 Copy Channel ID 选项提供 Channel ID。

C2 配置和 Discord Agent 使用相同的 Channel ID,因此双方通过同一 Discord 频道进行通信。
打开位于以下位置的 Discord Agent 示例:
"Stagers-Loaders/C2 Channel Agent Samples/Discord Agent.cpp"
该示例提供了 Discord Bot Token、Channel ID 和 Bot User ID 的配置字段:

将占位符替换为属于 Payload Bot 和专用 Discord 频道的值。
“BOT_USER_ID”标识载荷所使用的 Bot 账户。启用开发者模式后可以复制 Discord User ID。
在 BEAR-C2 内的 Discord Channel 配置中,提供相应的 C2 Bot Token、Channel ID 和 Listener Name。

C2 Bot 和 Payload Bot 使用同一 Discord 频道作为通信路径,而每一方使用自己的 Bot Token 进行身份验证。
完成 Discord 配置和载荷示例后,编译 C++ Agent 以在授权的对手模拟环境中使用。
⚠️ 注意: C2 通道限制
当使用第三方消息平台作为 C2 服务器与 Beacon 之间的通信层时,C2 通道会引入与数据传输和 Beacon 识别相关的限制
● 数据传输限制
Telegram 和 Discord 对其机器人 API 交换的单个消息施加了最大字符数限制。在 BEAR C2 中,C2 通道充当 C2 服务器与 Beacon 之间的传输层,因此此限制适用于通过该通道传输的数据,而不适用于 Beacon 载荷本身的大小。从 C2 服务器发送到 Beacon 的数据以及从 Beacon 返回到 C2 服务器的数据在传输前可能会进行 Base64 编码。由于 Base64 会增加传输表示的大小,因此单条消息中可以传输的原始数据量低于平台字符限制。
[ Telegram ] 每条消息最多 4096 个字符,为 C2 数据传输配置为 4000 个字符

[ Discord ] 每条消息最多 2000 个字符,为 C2 数据传输配置为 1400 个字符

配置的限制有意保持在平台限制以下,以便为 C2 消息结构和编码开销提供足够的余量。当数据超过配置的限制时,编码后的数据必须拆分为多条消息,并由接收方重新组装。
● Beacon 识别与响应归属
当多个 Beacon 共享同一 Telegram 机器人或 Discord 频道时,C2 通道也会引入限制。通过同一机器人或频道通信的所有 Beacon 使用相同的通信路径,因此 C2 服务器无法在本质上将每个 Beacon 表示为独立的通信会话。例如,如果五个 Beacon 通过同一 Telegram 机器人或 Discord 频道通信,它们将显示为单个 C2 通信路径,而不是五个可独立识别的 Beacon。
同样的限制也影响命令响应。当命令通过同一机器人或频道分发到多个 Beacon 时,产生的响应会通过同一通信路径返回。如果没有额外的 Beacon 识别机制,C2 服务器无法可靠地确定特定响应是由哪个 Beacon 生成的。
直接的解决方案是在 Telegram 上为每个 Beacon 分配专用机器人,或在 Discord 上为每个 Beacon 分配隔离的频道或机器人配置。这会创建 Beacon 与其通信路径之间的一对一映射,从而可以区分各个 Beacon 及其响应。代价是随着 Beacon 数量的增加,基础设施和管理开销也会增加。
这些限制特定于使用消息平台作为 C2 传输通道,与 Beacon 载荷本身无关。
● 实际影响
消息大小限制减少了可以一次传输的数据量,这可能会增加发送命令和接收其输出所需的时间
使用共享的 Telegram 机器人或 Discord 频道会导致多个 Beacon 在 C2 表中显示为单个 Beacon,而命令会传递给使用该机器人或频道的所有 Beacon,并且响应无法可靠地归属于特定 Beacon。
在授权的对手模拟演练期间,通过专用界面模拟鱼叉式网络钓鱼活动,用于配置和管理钓鱼场景。该模块提供行动控制,例如受害者提交限制、可配置的钓鱼参数和会话管理,允许操作员控制行动行为并评估用户与模拟钓鱼场景的交互。它旨在支持受控的钓鱼评估,同时为操作员提供对行动执行的更大可见性和控制。

通过专用的托管文件界面托管和分发文件,具有可配置的服务器设置和自动化文件交付。托管文件在被访问时会自动加载,无需用户交互或手动下载提示。该界面为受控的对手模拟和授权的安全测试工作流提供集中式文件托管和交付管理。
脚本混淆器提供全面的混淆引擎,支持 PS1、BAT、HTML、VBS、JS 和 PY 载荷,并具有多个可配置的混淆层。它包括变量和函数重命名、字符串加密、垃圾代码插入、多层混淆、反调试技术以及基于 XOR 的载荷加密。这些功能增加了分析复杂度,降低了脚本可读性,并使逆向工程显著更加困难,同时帮助载荷更好地抵御静态分析。
BEAR-C2 在整个开发过程中模拟的 APT 组织完整列表
| [**Labyrinth Chollima ✅**](https://github.com/S3N4T0R-0X0/APTs-Adversary-Simulation/tree/main/North%20Koreans%20APT/Labyrinth%20Chollima) [**Velvet Chollima ✅**](https://github.com/S3N4T0R-0X0/APTs-Adversary-Simulation/tree/main/North%20Koreans%20APT/Velvet%20Chollima) [**Famous Chollima ✅**](https://github.com/S3N4T0R-0X0/APTs-Adversary-Simulation/tree/main/North%20Koreans%20APT/Famous%20Chollima) [**Stardust Chollima ✅**](https://github.com/S3N4T0R-0X0/APTs-Adversary-Simulation/tree/main/North%20Koreans%20APT/Stardust%20Chollima) [**Ricochet Chollima ✅**](https://github.com/S3N4T0R-0X0/APTs-Adversary-Simulation/tree/main/North%20Koreans%20APT/Ricochet%20Chollima) [**Silent Chollima ✅**](https://github.com/S3N4T0R-0X0/APTs-Adversary-Simulation/tree/main/North%20Koreans%20APT/Silent%20Chollima) |
|
Helix Kitten |