返回更新列表
新发布Jul 26, 2026

emp3r0r v4.7.1

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

分享
emp3r0r

emp3r0r

具有辅助对等发现、跨平台 BOF 执行和可脚本化代理的自愈 Gossip 网状 C2。


Discord GitHub Sponsors

GitHub go.mod Go version Tests GitHub License GitHub release


Screenshot From 2026-08-26 14-20-24

什么是 emp3r0r?

emp3r0r 是一个面向 Linux 和 Windows 目标环境的高级零信任后渗透框架和命令与控制(C2)系统。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 配置文件。独立监听器支持可选 TLS(-tls),在未提供证书/密钥对时自动生成自签名证书。
  • 独立 C 下载器 Stager: 使用直接、不依赖 libc 的 Linux 系统调用构建,兼容各种发行版,无符号错误。
  • 加密 Stage 投递: 监听器使用从操作员提供的密钥派生的 RC4 密钥加密暂存载荷;stager 在反射加载前于内存中解密。
  • 可插拔 Stager 传输: 模块化传输系统允许操作员放入自定义 C 传输模块(transport_<name>.c)。内置独立选项包括通过原始系统调用实现的 HTTP、TCP 和 UDP,以及动态库传输(例如通过运行时符号解析的 libcurl)。
    • 优势: 通过将流量无缝混入合法系统通道(如原生 libcurl 或自定义协议实现)来绕过出口过滤和网络检测,而无需修改核心 stager 逻辑。
  • 可插拔自解包加壳器: 可扩展的 stub 和加壳器模块接口(pack_<name>.py + unpack_stub_<name>.c)。操作员可以编写自定义加壳/混淆算法(内置选项包括 RC4 流加密和贪婪 LZSS 压缩),并自动进行运行时头部修补。
    • 优势: 通过使用唯一密钥或算法加密/压缩 Stage 0 载荷,打破静态 AV/EDR YARA 规则和签名匹配,自解包到读写内存中,然后在执行前翻转为读执行。
  • 极小载荷体积: 虽然 emp3r0r 代理二进制文件未压缩时约为 20MB,但此 stager 仅为 2KB;它从 emp3r0r 监听器获取的类 sRDI 载荷约为 8MB(从 ELF 共享对象格式的代理二进制文件压缩而来)。
  • 灵活格式: 可编译为原始位置无关 shellcode(.bin)、自解包加壳 shellcode(packed)、独立 ELF 可执行文件或共享对象(.so)。
  • 内存加固: 以读写方式分配阶段内存,去混淆载荷,然后在反射加载前强制读执行。自解包器从不映射 RWX(读写 → 解包 → 读执行),可变 stager 状态位于专用的读写页面中,而非可写代码中。

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

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

  • Windows COFF 加载器: 以类型化参数打包(intshortcstrwstrbinary)无文件运行 Windows BOF 二进制文件。
  • Linux ELF 对象加载器: 在 Linux 上将 ELF 可重定位目标文件(.o)直接加载到代理内存中。
  • Crystal-Kit PICO 模块与栈欺骗: 集成 PICO(位置无关代码对象)加载器和加壳器,配备 SilentMoonwalk 调用栈失同步欺骗器,实现高级规避。
  • 捆绑 BOF 套件: 内置支持 Kerbeus-BOF、Remote-OPs 和态势感知(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 模式: 灵活的 beaconing(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.py

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

选项:

./install.py [--debug] [--disable-garble] [--prefix /usr/local] [--skip-build] \
  [--lightweight] [--targets linux/amd64,windows/amd64]

使用 --lightweight 仅构建 linux/amd64windows/amd64 exe/dll 目标(最快,适用于仅 x86-64 部署),或使用 --targets OS/ARCH,... 编译特定类型的载荷。

启动 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.py

使用服务器打印的 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

网状网关代理:

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

网状中间对等节点:

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

文档与资源


支持开发

如果 emp3r0r 在您的安全研究和测试中证明了其价值,请考虑通过 GitHub Sponsors 支持其持续开发。

分类