업데이트로 돌아가기
New releaseJul 24, 2026

emp3r0r v4.7.0

자가 치유 Gossip Mesh C2: 지원 피어 발견, 크로스 플랫폼 BOF 실행, 스크립트 가능 에이전트.

공유
emp3r0r

emp3r0r

자기 복구(self-healing) 가십 메시 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은 Linux 및 Windows 대상 환경을 위해 설계된 고급 제로 트러스트 침투 후(post-exploitation) 프레임워크이자 명령 및 제어(C2) 시스템입니다. 높은 보안 환경에서 운영되도록 처음부터 구축된 emp3r0r은 자율 가십 메시 네트워킹, 파일리스 메모리 전용 실행, 크로스플랫폼 BOF 로딩, 에이전트 간 파일 전송, 메모리 내 스크립팅 가능한 에이전트를 결합하여 뛰어난 은닉성, 운영 통제력, 작전 보안(OPSEC)을 제공합니다.


주요 특징 및 고유 기능

🐍 스크립팅 가능한 에이전트 (내장 Starlark 엔진 및 Win32 API 프록시)

emp3r0r 에이전트에는 내장된 Starlark 스크립팅 엔진(순수 Go로 구현된 Python 방언)이 포함되어 있습니다. 스크립트는 대상에 Python, Bash 또는 PowerShell이 설치되어 있지 않아도 메모리에서 파일리스로 실행됩니다.

  • 호스트 의존성 제로: 명령 해석기(/bin/sh, powershell.exe)를 생성하거나 설치된 런타임에 의존하지 않고 독립형 스크립트를 실행합니다.
  • 내장 에이전트 Go API: 파일 시스템 작업(read_file, write_file, list_dir, mkdir, remove, exists), HTTP 네트워킹(http_get, http_post), 명령 실행(exec_cmd), 해싱(crypto_hash)을 위한 함수가 노출되어 있습니다.
  • 동적 Win32 API 프록시: Windows 대상에서는 Starlark 스크립트가 시스템 DLL을 동적으로 로드하고 네이티브 Win32 API(win_call, win_alloc, win_free, win_read_mem)를 네이티브 C 코드를 컴파일하지 않고 스크립트 코드에서 직접 실행할 수 있습니다.
  • 모듈식 통합: Starlark 스크립트는 JSON 매니페스트(config.json)로 정의되어 CLI 매개변수 파싱과 배포가 원활하게 이루어집니다.

중요한 이유: 기존 C2 스크립트 모듈은 호스트 인터프리터나 프로세스 생성을 필요로 하여 디스크나 명령줄 실행 흔적을 많이 남깁니다. emp3r0r의 스크립팅 가능한 에이전트는 네이티브 시스템 상호작용을 통해 복잡한 로직을 전적으로 메모리에서 실행합니다.


🔐 TOFU 암호화 ID 고정

emp3r0r은 에이전트 등록 시 엄격한 UUID 및 공개 키 고정을 통해 **최초 사용 시 신뢰(TOFU)**를 적용합니다.

  • 불변 바인딩: 등록되면 에이전트의 UUID는 해당 암호화 공개 키에 고정됩니다. 변경된 자격 증명으로 재등록하면 가장(impersonation) 시도로 거부됩니다.
  • 통제된 재설정: 등록 해제에는 forget_agent를 통한 명시적 운영자 승인이 필요합니다.

중요한 이유: 세션 하이재킹, 에이전트 복제, 운영 환경 전반에 걸친 조용한 ID 변질을 방지합니다.


🔒 완전 순방향 비밀성(PFS)

모든 C2 및 피어 통신은 HKDF 파생 세션 키를 사용하는 ECDH 키 교환을 강제합니다.

  • 임시 키: 각 세션은 고유한 암호화 키를 생성합니다.
  • 분리된 보안: 장기 키 또는 개별 에이전트가 손상되어도 과거 및 병렬 통신이 손상되지 않습니다.

중요한 이유: 가로챈 네트워크 캡처의 사후 복호화를 방지합니다.


🕸️ 자율 P2P 가십 메시 네트워크

이그레스 제한 또는 분리된 네트워크 세그먼트에 있는 에이전트는 가십 기반(Memberlist) 메시 네트워크를 통해 자율적으로 피어를 발견하고 트래픽을 터널링합니다.

  • 플러그형 피어 전송: 위장 mTLS 1.3(임시 인증서 사용) 및 KCP(신뢰할 수 있는 UDP) 지원.
  • 종단 간 암호화: 모든 에이전트 간 메시 홉은 AES-GCM 암호화로 래핑됩니다.
  • 낮은 네트워크 풋프린트: 에이전트 간 직접 릴레이를 통해 불필요한 브로드캐스트 노이즈와 중앙 집중식 C2 연결 병목 지점을 제거합니다.

중요한 이유: 운영자가 지속적으로 개입하거나 정적 프록시를 설정하지 않아도 분할된 네트워크 간 피벗이 자율적으로 이루어집니다.


📂 P2P 파일 시스템

P2P 릴레이 전송(mTLS/KCP)을 통한 에이전트 간 직접 파일 공유로 내부 네트워크 전체의 파일 전달 속도를 높입니다.

  • 암호화된 P2P 터널: mTLS/KCP를 사용해 피어 간 전송을 터널링하여 이그레스 제한을 우회하고 중앙 C2 대역폭 병목을 줄입니다.
  • 스마트 인메모리 파일 캐싱: 파일은 암호화된 블롭(blob)으로 에이전트 메모리에 캐시되며, 다른 에이전트가 필요할 때 즉시 다운로드할 수 있도록 원활하게 제공될 수 있습니다. 파일을 요청할 때 에이전트는 로컬 memfs를 먼저 확인한 다음 다른 피어, 마지막으로 C2를 확인합니다.
  • 자동 C2 릴레이 폴백: 대상 피어에 요청된 파일이 없으면 필요 시 C2 서버에서 동적으로 가져와 스트리밍합니다.

중요한 이유: 에이전트 간 직접 파일 공유는 전송 속도를 극대화하고 네트워크 병목 지점을 우회하며 직접적인 C2 트래픽 노출을 줄입니다.


📡 멀티프로토콜 리스너 및 스테이저

초기 접근 및 페이로드 전달을 위한 유연한 Stage 0 다운로더 스테이저와 프로토콜 리스너.

  • 멀티프로토콜 리스너: 신뢰할 수 있는 시퀀스-확인 프레이밍과 사용자 지정 HTTP 프로파일을 갖춘 내장형 및 독립형 HTTP, TCP, UDP 리스너.
  • 독립형 C 다운로더 스테이저: 기호 오류 없이 모든 배포판에서 호환되도록 libc에 의존하지 않는 직접 Linux 시스템 콜로 제작되었습니다.
  • 초소형 페이로드 크기: emp3r0r 에이전트 바이너리는 압축 없이 약 20MB이지만 이 스테이저는 1.5KB 미만입니다. emp3r0r 리스너에서 가져오는 sRDI 유사 페이로드는 약 8MB입니다(에이전트 바이너리를 ELF 공유 객체 형식으로 압축한 것).
  • 유연한 형식: 원시 위치 독립(position-independent) 셸코드(.bin), 독립형 ELF 실행 파일 또는 공유 객체(.so)로 컴파일됩니다.
  • 인메모리 하드닝: 읽기-쓰기 권한으로 스테이지 메모리를 할당하고, 페이로드 난독화를 해제한 뒤 Stage 1을 반사적으로 실행하기 전에 읽기-실행을 강제합니다.

🧩 네이티브 크로스플랫폼 BOF 지원 (COFF 및 ELF)

Windows 및 Linux 대상 모두에서 인메모리 바이너리 모듈을 실행합니다:

  • Windows COFF 로더: 형식화된 매개변수 패킹(int, short, cstr, wstr, binary)으로 Windows BOF 바이너리를 파일리스로 실행합니다.
  • Linux ELF 객체 로더: Linux에서 ELF 재배치 가능 객체 파일(.o)을 에이전트 메모리에 직접 로드합니다.
  • 번들 BOF 모음: Kerbeus-BOF, Remote-OPs, Situational Awareness(SA) 모듈 모음에 대한 기본 제공 지원.

중요한 이유: 컴파일된 C 모듈을 프로세스 내에서 실행하여 프로세스 생성 오버헤드를 제거하고 명령줄 모니터링을 우회합니다.


🔑 주문형 Windows 토큰 조작

Windows의 에이전트는 간접 NT 시스템 콜을 사용해 전적으로 프로세스 내에서 실행 중인 프로세스의 액세스 토큰을 탈취, 캐시, 가장할 수 있습니다.

  • 탈취 및 캐시: steal_token --pid <PID>NtOpenProcess + NtDuplicateToken을 통해 프로세스 토큰을 복제하고 SID별로 메모리에 저장합니다. 선택적으로 --token <sid>로 가장을 연결하여 탈취한 다른 ID로 권한을 승격할 수 있습니다.
  • 열거: list_tokensDOMAIN\User (SID) 이름과 함께 캐시된 모든 토큰을 표시합니다.
  • 범용 가장: 모든 모듈(Go, Starlark, COFF/BOF)에서 SID로 캐시된 토큰을 참조할 수 있습니다(--token <sid>). 민감한 작업 주변에는 스레드 수준 가장(NtSetInformationThread)이 적용됩니다.
  • 토큰 인식 Starlark: 내장 함수(read_file, write_file, exec_cmd, Win32 API 프록시 등)는 토큰이 설정되면 시스템 콜마다 자동으로 가장하며, exec_cmdCreateProcessWithTokenW를 통해 탈취한 ID로 자식 프로세스를 생성할 수 있습니다.

중요한 이유: 외부 도구, 디스크 아티팩트, 프로세스 생성 노이즈가 없습니다. 토큰 탈취와 재사용은 간접 시스템 콜을 사용해 전적으로 프로세스 내에서 이루어지며, 탈취된 토큰은 모든 내장 모듈에서 즉시 사용할 수 있습니다.


🎭 플러그형 C2 전송, uTLS JA3 우회 및 CBOR 프로토콜

  • 플러그형 C2 모드: 가변적인 HTTP 프로파일을 갖춘 유연한 비콘닝(http_poll)과 HTTP/2를 통한 스트리밍(h2conn).
  • JA3 서명 무작위화: uTLS를 사용하여 TLS Client Hello 지문을 무작위화하여 정적 네트워크 서명을 무력화합니다.
  • 바이너리 와이어 프로토콜: 모든 제어 데이터 및 와이어 직렬화에 CBOR(Concise Binary Object Representation)을 사용하여 JSON 대비 네트워크 페이로드 크기를 30~40% 줄입니다.

💾 암호화된 메모리 우선 저장소

  • 인메모리 암호화 가상 파일 시스템: 모든 에이전트 파일 작업은 인메모리 AES-GCM 가상 파일 시스템을 사용합니다. 대용량 데이터는 식별 가능한 헤더나 확장자 없이 자동으로 암호화된 디스크 저장소로 넘어갑니다.
  • P2P 기반 스마트 캐싱: P2P가 활성화된 각 에이전트는 C2에서 가져온 파일을 memfs에 캐시한 후 다른 피어에서 사용할 수 있도록 제공하여 빠른 에이전트 간 연결을 활용하면서 C2 트래픽 풋프린트를 최소화합니다.

빠른 시작

1. C2 서버 설치

emp3r0r을 빌드하려면 호스트에 Docker 또는 Podman이 필요합니다. 로컬 Go 툴체인은 필요하지 않습니다.

# Clone repository
git clone --depth=1 https://github.com/jm33-m0/emp3r0r.git && cd emp3r0r

# Build inside a container and install locally
./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

참고: 표준 sudo 대신 root 사용자로 설치한 경우, 설치 프로그램이 권한을 제대로 설정할 수 없어 현재 사용자가 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

메시 게이트웨이 에이전트:

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를 통해 지속적인 개발을 지원하는 것을 고려해 주세요.

카테고리