
자가 치유 Gossip Mesh C2: 지원 피어 발견, 크로스 플랫폼 BOF 실행, 스크립트 가능 에이전트.
자기 복구(self-healing) 가십 메시 C2, 피어 탐색 지원, 크로스플랫폼 BOF 실행 및 스크립팅 가능한 에이전트.
emp3r0r은 Linux 및 Windows 대상 환경을 위해 설계된 고급 제로 트러스트 침투 후(post-exploitation) 프레임워크이자 명령 및 제어(C2) 시스템입니다. 높은 보안 환경에서 운영되도록 처음부터 구축된 emp3r0r은 자율 가십 메시 네트워킹, 파일리스 메모리 전용 실행, 크로스플랫폼 BOF 로딩, 에이전트 간 파일 전송, 메모리 내 스크립팅 가능한 에이전트를 결합하여 뛰어난 은닉성, 운영 통제력, 작전 보안(OPSEC)을 제공합니다.
emp3r0r 에이전트에는 내장된 Starlark 스크립팅 엔진(순수 Go로 구현된 Python 방언)이 포함되어 있습니다. 스크립트는 대상에 Python, Bash 또는 PowerShell이 설치되어 있지 않아도 메모리에서 파일리스로 실행됩니다.
/bin/sh, powershell.exe)를 생성하거나 설치된 런타임에 의존하지 않고 독립형 스크립트를 실행합니다.read_file, write_file, list_dir, mkdir, remove, exists), HTTP 네트워킹(http_get, http_post), 명령 실행(exec_cmd), 해싱(crypto_hash)을 위한 함수가 노출되어 있습니다.win_call, win_alloc, , )를 네이티브 C 코드를 컴파일하지 않고 스크립트 코드에서 직접 실행할 수 있습니다.중요한 이유: 기존 C2 스크립트 모듈은 호스트 인터프리터나 프로세스 생성을 필요로 하여 디스크나 명령줄 실행 흔적을 많이 남깁니다. emp3r0r의 스크립팅 가능한 에이전트는 네이티브 시스템 상호작용을 통해 복잡한 로직을 전적으로 메모리에서 실행합니다.
emp3r0r은 에이전트 등록 시 엄격한 UUID 및 공개 키 고정을 통해 **최초 사용 시 신뢰(TOFU)**를 적용합니다.
forget_agent를 통한 명시적 운영자 승인이 필요합니다.중요한 이유: 세션 하이재킹, 에이전트 복제, 운영 환경 전반에 걸친 조용한 ID 변질을 방지합니다.
모든 C2 및 피어 통신은 HKDF 파생 세션 키를 사용하는 ECDH 키 교환을 강제합니다.
중요한 이유: 가로챈 네트워크 캡처의 사후 복호화를 방지합니다.
이그레스 제한 또는 분리된 네트워크 세그먼트에 있는 에이전트는 가십 기반(Memberlist) 메시 네트워크를 통해 자율적으로 피어를 발견하고 트래픽을 터널링합니다.
중요한 이유: 운영자가 지속적으로 개입하거나 정적 프록시를 설정하지 않아도 분할된 네트워크 간 피벗이 자율적으로 이루어집니다.
P2P 릴레이 전송(mTLS/KCP)을 통한 에이전트 간 직접 파일 공유로 내부 네트워크 전체의 파일 전달 속도를 높입니다.
중요한 이유: 에이전트 간 직접 파일 공유는 전송 속도를 극대화하고 네트워크 병목 지점을 우회하며 직접적인 C2 트래픽 노출을 줄입니다.
초기 접근 및 페이로드 전달을 위한 유연한 Stage 0 다운로더 스테이저와 프로토콜 리스너.
.bin), 독립형 ELF 실행 파일 또는 공유 객체(.so)로 컴파일됩니다.Windows 및 Linux 대상 모두에서 인메모리 바이너리 모듈을 실행합니다:
int, short, cstr, wstr, binary)으로 Windows BOF 바이너리를 파일리스로 실행합니다..o)을 에이전트 메모리에 직접 로드합니다.중요한 이유: 컴파일된 C 모듈을 프로세스 내에서 실행하여 프로세스 생성 오버헤드를 제거하고 명령줄 모니터링을 우회합니다.
Windows의 에이전트는 간접 NT 시스템 콜을 사용해 전적으로 프로세스 내에서 실행 중인 프로세스의 액세스 토큰을 탈취, 캐시, 가장할 수 있습니다.
steal_token --pid <PID>는 NtOpenProcess + NtDuplicateToken을 통해 프로세스 토큰을 복제하고 SID별로 메모리에 저장합니다. 선택적으로 --token <sid>로 가장을 연결하여 탈취한 다른 ID로 권한을 승격할 수 있습니다.list_tokens는 DOMAIN\User (SID) 이름과 함께 캐시된 모든 토큰을 표시합니다.--token <sid>). 민감한 작업 주변에는 스레드 수준 가장(NtSetInformationThread)이 적용됩니다.read_file, write_file, exec_cmd, Win32 API 프록시 등)는 토큰이 설정되면 시스템 콜마다 자동으로 가장하며, exec_cmd는 CreateProcessWithTokenW를 통해 탈취한 ID로 자식 프로세스를 생성할 수 있습니다.중요한 이유: 외부 도구, 디스크 아티팩트, 프로세스 생성 노이즈가 없습니다. 토큰 탈취와 재사용은 간접 시스템 콜을 사용해 전적으로 프로세스 내에서 이루어지며, 탈취된 토큰은 모든 내장 모듈에서 즉시 사용할 수 있습니다.
http_poll)과 HTTP/2를 통한 스트리밍(h2conn).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을 실행하지 못할 수 있습니다. 운영자 머신도 마찬가지입니다.
생성된 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
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를 통해 지속적인 개발을 지원하는 것을 고려해 주세요.
win_freewin_read_memconfig.json)로 정의되어 CLI 매개변수 파싱과 배포가 원활하게 이루어집니다.