返回更新列表
新发布Aug 21, 2026

emp3r0r v4.11.0

自愈型 Gossip Mesh C2,具备辅助对等点发现、跨平台 BOF 执行与可脚本化代理。

分享
emp3r0r

emp3r0r

自愈式 Gossip 网格 C2,支持辅助对等节点发现、跨平台 BOF 执行和可脚本化代理。


Discord GitHub Sponsors

GitHub go.mod Go version Tests GitHub License GitHub release


Screenshot From 2026-08-10 19-37-20

emp3r0r 是什么?

emp3r0r 是一个高级的零信任后渗透利用框架和命令与控制(C2)系统,专为 Linux 和 Windows 目标环境设计。emp3r0r 从零开始构建,适用于高安全性环境,结合了自主 gossip 网格组网无文件纯内存执行跨平台 BOF 加载代理间文件传输内存中可脚本化代理,提供卓越的隐蔽性、操作控制和操作安全(OPSEC)。


核心亮点与独特功能

🐍 可脚本化代理(内嵌 Starlark 引擎与 Win32 API 代理)

emp3r0r 代理内置 Starlark 脚本引擎(一种完全用 Go 实现的 Python 方言)。脚本以无文件方式在内存中执行,无需目标系统安装 Python、Bash 或 PowerShell。

  • 零主机依赖: 独立执行脚本,不启动命令解释器(/bin/shpowershell.exe),也不依赖已安装的运行时。
  • 内置代理 Go API: 暴露文件系统操作(read_filewrite_filelist_dirmkdirremoveexists)、HTTP 网络请求(http_gethttp_post)、命令执行(exec_cmd)和哈希计算(crypto_hash)等函数。
  • 动态 Win32 API 代理: 在 Windows 目标上,Starlark 脚本可动态加载系统 DLL,并直接从脚本代码执行原生 Win32 API(win_callwin_allocwin_freewin_read_mem),无需编译原生 C 代码。
  • 模块化集成: Starlark 脚本通过 JSON 清单(config.json)定义,便于 CLI 参数解析和分发。

为何重要: 传统 C2 脚本模块依赖主机解释器或进程派生,会留下大量磁盘或命令行执行痕迹。emp3r0r 的可脚本化代理完全在内存中执行复杂逻辑,并可与系统原生交互。


🔐 TOFU 加密身份绑定

emp3r0r 在代理注册时强制执行 信任首次使用(TOFU) ,并对 UUID 和公钥进行严格绑定。

  • 不可变绑定: 代理一旦注册,其 UUID 即与其加密公钥绑定。以更改后的凭据重新注册将被视为冒充尝试而拒绝。
  • 受控重置: 注销必须经操作员通过 forget_agent 明确授权。

为何重要: 防止会话劫持、代理克隆以及跨操作环境的静默身份漂移。


🔒 完美前向保密(PFS)

所有 C2 和对等通信均强制执行 ECDH 密钥交换,并使用 HKDF 派生的会话密钥

  • 临时密钥: 每个会话都会生成独立的加密密钥。
  • 解耦安全性: 即使长期密钥或单个代理被攻破,也无法解密过往或并行的通信。

为何重要: 防止对截获的网络流量进行事后解密。


🕸️ 自主 P2P Gossip 网格网络

处于出口受限或隔离网段中的代理可自主发现对等节点,并通过基于 gossip(Memberlist)的网格网络隧道传输流量。

  • 可插拔对等传输: 支持伪装 mTLS 1.3(使用临时证书)和 KCP(可靠 UDP)。
  • 端到端加密: 所有代理间的网格跳数均以 AES-GCM 加密封装。
  • 低网络足迹: 代理间直接中继,消除不必要的广播噪声和集中式 C2 连接瓶颈。

为何重要: 跨网段横向移动可自主进行,无需操作员持续干预或部署静态代理。


📂 P2P 文件系统

通过 P2P 中继传输(mTLS/KCP)实现代理间直接文件共享,加速内网文件分发。

  • 加密 P2P 隧道: 使用 mTLS/KCP 在对等节点间隧道传输文件,绕过出口限制并减少中央 C2 带宽瓶颈。
  • 智能内存文件缓存: 文件以加密 blob 形式缓存在代理内存中;可无缝提供给其他代理按需下载。请求文件时,代理先查询本地 memfs,再查询其他对等节点,最后才回源 C2。
  • 自动 C2 中继回退: 如果目标对等节点没有所请求的文件,它会按需动态从 C2 服务器获取并流式传输。

为何重要: 代理间直接文件共享可最大化传输速度、绕过网络瓶颈,并降低直接 C2 流量的可见性。


📡 多协议监听器与 Stager

提供灵活的 Stage 0 下载器 stager 和协议监听器,用于初始访问和载荷投递。

  • 多协议监听器: 内嵌及独立的 HTTP、TCP 和 UDP 监听器,具备可靠的序列确认帧和自定义 HTTP 配置文件。
  • 独立 C 语言下载器 Stager: 使用不依赖 libc 的 Linux 系统调用直接构建,避免各发行版出现符号错误。
  • 极小载荷体积: emp3r0r 代理二进制在未压缩时约 20MB,而该 stager 小于 1.5KB;它从 emp3r0r 监听器获取的类 sRDI 载荷约 8MB(由代理二进制以 ELF 共享对象格式压缩而来)。
  • 灵活格式: 可编译为原始位置无关 shellcode(.bin)、独立 ELF 可执行文件或共享对象(.so)。
  • 内存加固: 以读写权限分配 stage 内存,去混淆载荷,并在反射执行 Stage 1 前强制切换为读执行权限。

🧩 原生跨平台 BOF 支持(COFF 与 ELF)

在 Windows 和 Linux 目标上均可执行内存中的二进制模块:

  • Windows COFF 加载器: 以无文件方式运行 Windows BOF 二进制,支持类型化参数打包(intshortcstrwstrbinary)。
  • Linux ELF 对象加载器: 在 Linux 上直接将 ELF 可重定位目标文件(.o)加载到代理内存中。
  • 内置 BOF 套件: 原生支持 Kerbeus-BOF、Remote-OPs 和 Situational Awareness(SA)模块集。

为何重要: 无需创建进程,也无需通过在内进程中运行已编译 C 模块来规避命令行监控。


🔑 按需 Windows Token 操作

Windows 上的代理可以窃取、缓存并模拟运行中进程的访问令牌——完全通过间接 NT 系统调用在进程内完成。

  • 窃取与缓存: steal_token --pid <PID> 通过 NtOpenProcess + NtDuplicateToken 复制进程令牌,并以 SID 形式存储在内存中。可选择通过 --token <sid> 串联模拟,从一个被窃取身份升级到另一个。
  • 枚举: list_tokensDOMAIN\User (SID) 名称显示所有已缓存令牌。
  • 通用模拟: 可在任何模块(Go、Starlark、COFF/BOF)中通过 SID 引用缓存令牌(--token <sid>)。敏感操作会在线程级别应用模拟(NtSetInformationThread)。
  • Token 感知的 Starlark: 内置函数(read_filewrite_fileexec_cmd、Win32 API 代理等)在设置令牌后会自动按系统调用级别模拟身份,exec_cmd 可通过 CreateProcessWithTokenW 在被盗身份下派生子进程。

为何重要: 无需外部工具、无磁盘痕迹、无进程创建噪音。令牌窃取和重用完全通过间接系统调用在进程内完成,且被盗令牌可立即被所有内置模块使用。


🎭 可插拔 C2 传输、uTLS JA3 规避与 CBOR 协议

  • 可插拔 C2 模式: 灵活的信标轮询(http_poll),支持可变形 HTTP 配置文件,以及基于 HTTP/2 的流式传输(h2conn)。
  • JA3 签名随机化: 利用 uTLS 随机化 TLS Client Hello 指纹,突破静态网络签名检测。
  • 二进制线协议: 所有控制数据和线序列化均使用 CBOR(简洁二进制对象表示),相比 JSON 可减少 30-40% 的网络载荷体积。

💾 加密内存优先存储

  • 内存加密虚拟文件系统: 所有代理文件操作均使用内存 AES-GCM 虚拟文件系统。大数据会自动溢出到加密磁盘存储,且没有可识别的文件头或扩展名。
  • P2P 驱动的智能缓存: 每个启用 P2P 的代理都会将从 C2 获取的文件缓存在 memfs 中,并供其他对等节点使用,从而在利用快速代理间连接的同时最小化 C2 流量足迹。

快速开始

1. C2 服务器安装

构建 emp3r0r 需要在主机上安装 Docker 或 Podman。无需本地 Go 工具链。

# 克隆仓库
git clone --depth=1 https://github.com/jm33-m0/emp3r0r.git && cd emp3r0r

# 在容器内构建并安装到本地
./install.sh

安装程序会在一次性容器中编译核心二进制,生成预编译的 emp3r0r-operator-kit.tar.zst,配置所需的 Linux 能力(setcap),并设置系统运行时目录。

选项:

./install.sh [--debug] [--disable-garble] [--prefix /usr/local] [--skip-build]

启动 C2 服务器:

emp3r0r server --c2-hosts 1.2.3.4 --http-port 12345 --operator-port 13377

注意:如果使用 root 用户而不是标准 sudo 安装,你的当前用户可能无法启动 emp3r0r,因为安装程序无法正确设置权限。操作员机器同样如此。


2. 操作员机器设置

将生成的 emp3r0r-operator-kit.tar.zst 传输到操作员机器并运行安装程序:

tar --zstd -xpf emp3r0r-operator-kit.tar.zst
cd ./emp3r0r-operator-kit && ./install.sh

使用服务器打印的 WireGuard 隧道凭据将操作员客户端连接到 C2 服务器:

emp3r0r client --c2-port 13377 \
  --server-wg-key '<SERVER_WG_KEY>' \
  --server-wg-ip '<SERVER_WG_IP>' \
  --operator-wg-ip '<OPERATOR_WG_IP>' \
  --operator-wg-key '<OPERATOR_WG_KEY>' \
  --c2-host 1.2.3.4

3. 生成代理载荷

在 emp3r0r 操作员界面中使用 generate 命令创建载荷。

直连 C2 代理:

generate --type linux_executable --arch amd64 --cc your.domain.com

Mesh 网关代理:

generate --type linux_executable --arch amd64 --cc your.domain.com \
  --p2p --direct-c2 --p2p-transport mtls

Mesh 中间对等节点:

generate --type linux_executable --arch amd64 --cc your.domain.com \
  --p2p --p2p-transport mtls --peers 1.2.3.4

文档与资源


支持开发

如果 emp3r0r 对你的安全研究和测试确有价值,请考虑通过 GitHub Sponsors 支持其持续开发。

分类