返回更新列表
新发布Sep 5, 2026

emp3r0r v4.15.0

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

分享
emp3r0r

emp3r0r

一个面向 Linux 和 Windows 的自愈、纯内存 C2 —— 代理能够挺过断链、从不落盘,并通过脚本调用 Win32 API。


Discord GitHub Sponsors

GitHub go.mod Go version Tests GitHub License GitHub release


emp3r0r-readme

什么是 emp3r0r?

emp3r0r 是一个为 Linux 和 Windows 环境打造的后渗透框架与 C2,在这些环境中,隐蔽性和韧性并非可选项。代理不会假设与单一服务器之间始终存在可靠连接,而是组成一个自愈网状网络,在链路中断时仍能继续工作。代理不会向目标索取 Python 或 PowerShell,而是一切都在内存中执行。并且,emp3r0r 不会把你限制在单一平台的技巧上,而是同时运行 Windows BOF、Linux 对象和 Starlark 脚本 —— 全部无文件、全部进程内。


核心亮点与独特功能

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

每个代理都自带脚本引擎,因此你可以直接放入新的后渗透逻辑,而无需编译或投递二进制文件。

  • 脚本完全在内存中运行 —— 目标上无需 Python、Bash 或 PowerShell,也不会生成命令解释器。
  • 一整套内置 API 覆盖文件 I/O、HTTP、命令执行等,可直接从脚本代码中调用。
  • 在 Windows 上,脚本可以直接调用原生 Win32 函数 —— 代理会直接代理到系统 DLL。
  • 模块就是普通的 Starlark 文件加上一个小型 JSON 清单,因此添加自己的模块既简单又无文件。

为什么重要: 编写和扩展代理功能变得像编辑脚本一样简单,同时完全没有在目标上投放解释器或新二进制文件所带来的痕迹。


🔐 TOFU 加密身份绑定

代理在第一次与你通信时,会将自己的身份绑定到一个加密密钥上 —— 而且这种绑定永不改变。

  • 使用不同凭据重新注册会被视为冒充者并遭到拒绝。
  • 移除代理是操作员的明确决定,而不是被盗密钥能够悄悄完成的事情。

为什么重要: 会话劫持和代理克隆根本不会发生;你与之通信的每个代理,都是你当初注册的那一个。


🔒 完美前向保密(PFS)

每条 C2 链路和点对点链路都使用临时 ECDH 密钥,并采用会话派生加密密钥。

为什么重要: 即使长期密钥日后被泄露,也无法用来解密已经传输过的流量。


🕸️ 自主 P2P Gossip 网状网络

代理之间会相互发现,并通过 gossip 网状网络中继流量,因此当某条链路或某台服务器消失时,行动不会崩溃。

  • 对等节点通过伪装 mTLS 1.3 或可靠 UDP(KCP)连接,每一跳都经过加密。
  • 流量会自动绕过失效的中继 —— 行动中途无需手动调整代理。
  • 即使某些网段无法直接访问 C2,也仍可通过其邻居保持可达。

为什么重要: 网络会替你完成跳板。切断一条链路、丢失一台机器或封锁 C2 —— 代理会自行重新路由。


📂 P2P 文件系统

文件在代理之间直接传输,而不仅仅是通过 C2。

  • 传输走加密的点对点隧道,因此内部网络不会在你的服务器上形成瓶颈。
  • 文件以加密 blob 的形式缓存在代理内存中,并按需提供给对等节点。
  • 如果没有任何对等节点拥有该文件,代理会自动从 C2 获取。

为什么重要: 投递速度快,而且对 C2 通道几乎不可见 —— 非常适合出站受限的环境。


📡 多协议监听器与可插拔 Stager

让代理进入目标,与让它保持存活同样被认真对待。

  • 支持 HTTP、TCP 和 UDP 监听器,具备可靠分帧和可定制的 HTTP 配置文件。
  • 一个约 2KB 的 stager,基于直接 Linux 系统调用构建 —— 目标上无需 libc,也无需工具链。
  • 可插拔的 stager 传输和自解包打包器,让你能够将初始访问融入目标允许的任何通道,同时击败静态特征匹配。
  • Stage 和代理代码遵循读/写/执行纪律 —— 绝不使用 RWX。

为什么重要: 小巧、可适应且内存卫生的初始访问,意味着你可以落脚在原本无法触及的主机上。


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

在任一平台上以进程内方式运行编译好的 C 模块:

  • Windows COFF/BOF 二进制文件,支持类型化参数打包。
  • Linux ELF 可重定位对象,直接加载到代理内存中。
  • Crystal-Kit PICO 模块,支持 SilentMoonwalk 调用栈伪造。
  • Kerbeus-BOF、Remote-OPs 以及一套态势感知套件开箱即用。

为什么重要: BOF 的好坏取决于其加载器 —— emp3r0r 在 Linux 和 Windows 上都能以进程内方式运行它们,不产生新进程,也不留下痕迹。


🔑 Windows 令牌、Netonly 会话与 Kerberos 票据(PTT)

一旦你进入 Windows 主机,emp3r0r 让你能够成为主机上的用户 —— 而无需投放任何工具。

  • 从任意运行中的进程窃取访问令牌,并在各处使用它:Go 模块、Starlark、BOF。
  • 使用模块的 --user 标志创建一次性 netonly 会话:它们保留你代理自身的身份,仅在出站访问时借用目标用户的身份 —— 任何密码都可以,永远不会被验证。
  • 使用 --ticket 标志导入 Kerberos 票据,实现完整的票据传递:你的网络身份变为票据的身份(例如域管理员),而你的本地身份始终不变。
  • 每个支持令牌的模块都接受 --token--user--ticket,因此切换身份只需一个标志 —— 包括在单条命令中创建会话并加载票据。
  • 票据按登录会话存在,因此 DA 材料会被隔离在一个可清除的一次性会话中,代理进程本身保持干净。

为什么重要: 向完全没有代理运行的机器进行横向移动 —— SMB 共享、服务控制、CIFS —— 成为你工作流中的常规操作,以你借用的用户身份进行认证,而不是以磁盘上的工具身份。


🧦 SOCKS5 跳板与操作员侧 tun2socks

无需再消耗一个植入体即可跳板:C2 运行一个 SOCKS5 代理,通过你选择的代理进行中继,而操作员侧还可以更进一步,使用透明 TUN 设备。

  • socks_start 1080 在 C2 上提供一个 SOCKS5 端点,通过所选代理进行隧道传输 —— 将 proxychains 或任何工具指向它,你就进入了目标网络。
  • tun2socks start --route 10.10.0.0/24 创建一个 TUN 设备,仅将你指定的子网通过该代理路由 —— 其他所有流量继续使用你的正常连接。
  • 结果看起来像是源自该代理,且无需为每个工具配置代理。

为什么重要: 透明地触及整个代理侧网络 —— curl 一台 DC、使用任何工具 —— 出站流量看起来来自目标网络,而不是你的操作员机器。


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

  • 可选择 beacon 式 HTTP 轮询或流式 HTTP/2 —— 两者都支持可塑配置文件。
  • TLS 指纹通过 uTLS 随机化,因此该通道不会在网络遥测中显得突出。
  • 控制流量采用紧凑的 CBOR 协议 —— 比 JSON 更小、更快,也更难解析。

为什么重要: C2 通道被设计得看起来像普通流量,并在网络上保持精简。


💾 加密的内存优先存储

  • 代理文件操作针对一个内存中的、AES-GCM 加密的虚拟文件系统运行;大数据仅以加密 blob 形式溢出到磁盘,且没有可识别的文件头。
  • 支持 P2P 的代理会缓存其获取的内容并与对等节点共享,进一步减少 C2 流量。

为什么重要: 即使磁盘也被视为敌对环境 —— 代理不会留下任何明文制品供人发现。


快速开始

1. C2 服务器安装

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

git clone --depth=1 https://github.com/jm33-m0/emp3r0r.git && cd emp3r0r
./install.py

安装程序会在一个一次性容器中构建所有内容,并准备好操作员套件。有用的标志:--lightweight(仅 Linux/Windows amd64,最快)、--targets OS/ARCH,...--debug--skip-build

启动服务器:

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

2. 操作员机器设置

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

使用服务器打印的 WireGuard 凭据进行连接:

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. 生成代理载荷

在操作员控制台内:

# Direct C2 agent
generate --type linux_executable --arch amd64 --cc your.domain.com

# Mesh gateway agent (also reachable from the C2 directly)
generate --type linux_executable --arch amd64 --cc your.domain.com \
  --p2p --direct-c2 --p2p-transport mtls

# Mesh intermediate peer (relays for other agents)
generate --type linux_executable --arch amd64 --cc your.domain.com \
  --p2p --p2p-transport mtls --peers 1.2.3.4

# Windows mesh peer over SMB named pipes (local \\.\pipe, cross-host \\host\pipe),
# AES-GCM framed like the other transports
# (requires the Windows SMB stack / logon session to reach the peer)
generate --type windows_executable --arch amd64 --cc your.domain.com \
  --p2p --p2p-transport smb

网状节点可以运行不同的传输方式。每个代理都会通告其中继所监听的传输方式和端口,而拨号方始终使用对等节点所通告的传输方式,因此混合网状网络(例如 Windows SMB 节点与 Linux mTLS 节点并存)会通过共享可用传输方式的对等节点进行路由,而不是假设所有人都运行本地默认值。smb 仅对 Windows 载荷接受;kcp/mtls 在所有平台上都可用。


文档与资源


支持开发

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

分类