jm33-m0/emp3r0r
GitHub: jm33-m0/emp3r0r
专为 Linux 环境设计的后渗透 C2 框架,具备自愈 Mesh 网络、瞬时身份认证、完美前向保密和纯内存执行等 OPSEC 特性,支持隔离网段的反向隧道接入。
Stars: 1691 | Forks: 274
### emp3r0r
**具有辅助节点发现、模块化后渗透和 OPSEC 传输特性的自愈 Gossip Mesh C2**
[](https://discord.gg/vU98aQtk9f) [](https://github.com/sponsors/jm33-m0) [](./Screenshots.md) [](https://goreportcard.com/report/github.com/jm33-m0/emp3r0r/core) [](https://github.com/jm33-m0/emp3r0r/blob/v3/core/go.mod) [](https://github.com/jm33-m0/emp3r0r/actions/workflows/test.yml) [](https://github.com/jm33-m0/emp3r0r/blob/v3/LICENSE) [](https://github.com/jm33-m0/emp3r0r/releases)
## 什么是 emp3r0r?
emp3r0r 是一个专为 Linux 环境从头设计的全面后渗透框架。虽然大多数 C2 平台将 Linux 视为附带支持,但 emp3r0r 实现了**零信任架构**,具有瞬时加密身份、完美前向保密和自主 Mesh 网络,适用于渗透测试和红队行动。
## emp3r0r 有何独特之处?
### 🔐 瞬时 TOFU 身份
Agent(代理)身份使用 ECDSA P-256 **按会话生成**,并在重启后**丢失**——二进制文件或磁盘上不存在静态凭据。**首次使用信任 (TOFU)** 认证在首次签到时固定 Agent 的公钥;后续连接必须证明拥有相同的瞬时密钥。密钥轮换需要操作员手动批准。
**为什么这很重要:** 大多数 C2 框架将 Agent 凭据嵌入二进制文件中。如果被捕获,这些凭据可以被提取并重用。emp3r0r 的瞬时密钥仅存在于进程内存中,并在每次重启时重新生成。
### 🔒 所有通信的完美前向保密
每个 C2 会话使用 **ECDH 密钥交换**和 **HKDF 派生的会话密钥**。即使长期密钥或 Agent 受到损害,过去的流量依然安全。每个会话的加密密钥都是唯一的,无法从其他会话推导出来。
**为什么这很重要:** 传统的 C2 使用静态加密密钥。如果这些密钥被恢复,历史网络捕获可以被解密。emp3r0r 的 PFS 确保即使今天的会话密钥泄露,也不会暴露以前的通信。
### 🕸️ 点对点 (P2P) Mesh 网络
处于隔离网段的 Agent 通过基于 Gossip(memberlist)的 Mesh 网络,**自主发现并通过具有互联网连接的节点进行隧道传输**。Mesh 跳跃传输是**可插拔的**:默认为 `mtls`——使用瞬时、可延展证书的伪装 mTLS 1.3——同时也提供 `kcp`(可靠 UDP)。所有跳跃都进一步封装在 AES-GCM 端到端加密中。
**为什么这很重要:** 手动跳板需要操作员持续干预,并在中间主机故障时中断。emp3r0r 的 Agent 自动形成冗余通信路径,通过弹性的节点发现和中继确保持久性。
### 🚪 Bring2CC:针对隔离目标的反向隧道
当 Agent **无法**进行出站连接时,**Bring2CC** 使用 SSH + KCP 隧道将其反向代理回 C2 服务器。这反转了连接模型:不是 C2 主动连接进入网络,而是将隔离目标通过隧道传输到 C2 基础设施。
**为什么这很重要:** 当出口过滤阻止出站连接时,传统 C2 会失效。Bring2CC 通过让具有互联网连接的主机通过反向隧道将隔离目标拉出,从而实现对隔离网段的访问。
### 💾 具有透明加密的纯内存操作
Agent 使用**带有 AES-GCM 加密的内存文件系统**进行所有文件操作。Bash、PowerShell、Python 和 ELF 模块完全在内存中执行。大文件在内存耗尽时自动溢出到**加密磁盘存储**。Agent 不创建专用目录或持久配置文件。
**为什么这很重要:** EDR 和取证工具依赖于磁盘特征进行检测和分析。emp3r0r 的内存优先设计最大限度地减少了磁盘写入。当发生磁盘溢出时,所有数据都经过加密,并且没有可识别的文件扩展名或文件头。
### 🧩 原生 BOF 支持(跨平台)
在 Windows Agent 上执行**Windows COFF 对象**,支持类型化参数打包(LPSTR/LPWSTR/INT/BOOL/BINARY)。在 Linux 上,完全在内存中加载**ELF 对象文件 (.o)**,具有相同的模块化。模块使用标准化模式以确保跨平台一致性。
**为什么这很重要:** BOF 避免了进程创建开销,并且难以检测。emp3r0r 将此功能带到 Linux,而大多数 C2 框架在 Linux 上依赖于派生进程或解释 Shell 脚本。
### 🎭 JA3 指纹规避 + CBOR 序列化
HTTP2/TLS 连接使用 **uTLS** 随机化 TLS Client Hello 指纹,防止静态 JA3 签名检测。所有网络流量和数据存储使用 **CBOR**(二进制)而不是 JSON,减少了 30-40% 的带宽,并避免了基于文本的解析签名。
**为什么这很重要:** 网络监控工具通过对 TLS 握手进行指纹识别来确定应用程序。静态 TLS 实现会产生一致的签名。emp3r0r 在每次连接时随机化这些签名,同时使用缺少 JSON 明显结构的紧凑二进制协议。
## 快速开始
### 安装
虽然可能提供预编译的二进制文件,但从源代码构建是主要且推荐的安装方法:
```
# 自动安装脚本(安装依赖并从源代码构建)
curl -sSL https://raw.githubusercontent.com/jm33-m0/emp3r0r/refs/heads/v3/install.sh | bash
```
### 3 步部署
#### 初始化服务器
```
emp3r0r server --c2-hosts 'your.domain.com' --port 12345 --operators 2
```
此命令部署 emp3r0r,包括:
- 随机端口上的 HTTP2/TLS Agent 监听器。
- WireGuard 操作员服务。
- 操作员 mTLS 服务器。
#### 作为操作员连接
复制生成的连接命令,并将 `标签:C2框架, CVE利用辅助, Emp3r0r, EVTX分析, EVTX分析, EVTX分析, Gossip协议, Go语言, HTTP工具, IP 地址批量处理, Mesh网络, OPSEC, P2P通信, PE 加载器, Runtime Enforcement, 主机接管, 内存分配, 后渗透框架, 命令控制, 安全学习资源, 对等节点发现, 持久化控制, 数据采集, 日志审计, 模块化开发, 横向移动, 流量加密, 程序破解, 编程规范, 网络信息收集, 网络安全, 自愈网络, 行动安全, 远控木马, 隐匿通信, 隐私保护, 零信任架构