
레드팀 인프라와 사이버 레인지를 위한 캔버스. 토폴로지를 구성하고 실행 가능한 Terraform과 Ansible을 내보낸 뒤 직접 배포하세요. 클라우드 자격 증명은 절대 여러분의 머신을 떠나지 않습니다.

토폴로지로 인프라를 구성한 뒤, 완전히 실행 가능한 Terraform과 Ansible 작업 디렉터리를 내보내는 웹 캔버스입니다. 실행은 여러분의 머신에서 직접 합니다. redStackPRO는 절대 여러분의 클라우드 자격 증명을 보관하지 않습니다.
[!IMPORTANT] redStackPRO는 프리릴리스(베타) 단계입니다. 스키마와 기능이 아직 변경되고 있습니다. GCP와 AWS는 엔드 투 엔드로 테스트되었으며, Azure, Proxmox, ESXi는 로드맵에 있습니다. 거친 부분이 있을 수 있으니, 안정성이 필요하다면 릴리스된 버전을 고정해서 사용하세요.
거친 부분을 만났거나 피드백이 있으신가요? Issues에 이슈를 열어주세요. 배포 관련이라면, 실행 중 작성된 정제된
logs/deploy-*.log를 첨부해 주세요 (버전, 프로바이더, 중단 지점을 기록하며 시크릿은 제거됩니다). 그러면 빠르게 분석할 수 있습니다. 여러분의 제보가 릴리스를 만들어 갑니다.
redStackPRO는 공격 인프라와 타깃 레인지를 같은 캔버스에 올립니다. 두 가지 캔버스 모드는
Offense(공격 인프라)와 Defense(방어 AD 레인지)이며, 내보내기 시 핸드오프 문서 이름이
각각 OFFENSE-BRIEFING.md 또는 DEFENSE-BRIEFING.md로 지정됩니다.
Split horizon C2, 공격 인프라: 운명을 공유하지 않는 두 개의 정문, Apache가 앞단에 있는 Sliver와 Nginx가 앞단에 있는 Mythic, 각 리다이렉터는 자체 피어링된 네트워크에 위치하며, 팀서버, 컬렉터, 운영자는 점프박스 뒤에 있습니다.

여러 운영자, 하나의 스택. 공격 인프라 점프박스는 operators 목록(핸들 및 역할)을
지정할 수 있으며, 각 운영자는 공유 랩 비밀번호로 Guacamole 포털 로그인을 받습니다.
점프박스의 access_mode를 wireguard 또는 openvpn으로 설정하면(기본값은 공개 포털),
모든 운영자가 apply 시 점프박스에서 생성된 개인 VPN 자격 증명도 받습니다. 키는 박스를
떠나거나 내보내기에 포함되지 않으며, 클라이언트 설정 파일만 포함됩니다. 현재 포털 로그인은
하나의 랩 비밀번호를 공유하므로, 운영자별 격리는 포털 로그인이 아닌 각 운영자의 VPN 자격
증명에서 비롯됩니다. 개별 포털 비밀번호는 로드맵에 있습니다. VPN 접근 모드에서는 포털이
인터넷에서 닫히고 터널 뒤로 이동하며, SSH는 열린 상태로 유지되어 관리자가 계속 배포하고
박스를 관리할 수 있습니다. 실행 중인 점프박스에서 팀원을 추가하거나 제거하려면
sudo rsp-operator add <handle>을 사용하세요. 위키
Deploying a Range를
참고하세요.
Harbor, 타깃 레인지: 부모-자식 트러스트로 연결된 루트 도메인과 자식 도메인으로 이루어진 작은 기업 포레스트로, 피싱된 워크스테이션에서 포레스트로 이어지는 일반적인 경로를 갖습니다.

GOAD, 전체 랩: 두 개의 포레스트에 걸친 세 개의 도메인, 다섯 대의 머신과 그 트러스트, 작성된 솔루션이 따르는 참조 레인지입니다.

[!IMPORTANT] 내보내기가 경계입니다. 캔버스는 파일을 생성하고, 여러분은 자신의 자격 증명으로 실행합니다. redStackPRO는 아무것도 배포하지 않으며 시크릿을 보관하지 않습니다.
[!CAUTION] 승인된 사용만 허용됩니다. redStackPRO는 공격 인프라와 의도적으로 취약한 레인지를 구축합니다. 소유하고 있거나 명시적으로 테스트 권한을 받은 랩 환경에서만 사용하고, 서면 허가가 없는 시스템에는 절대 사용하지 마세요.
프리릴리스이며, 토폴로지 스키마는 아직 변경되고 있습니다. 파이프라인 자체는 엔드 투 엔드로 작동합니다: 토폴로지가 Terraform과 Ansible로 컴파일되고, 내보내기가 배포됩니다.
| 프로바이더 | 상태 |
|---|---|
| GCP, AWS | 타깃 레인지와 공격 인프라 모두 엔드 투 엔드로 지원 및 테스트됨. |
| Azure, Proxmox, ESXi | 로드맵에 있으며, 아직 지원되지 않음. |
캔버스 전체를 하나의 컨테이너로, API와 웹 앱이 하나의 포트에서 실행됩니다:
docker compose up # 이 저장소에서 빌드, http://127.0.0.1:8000
또는 빌드 대신 게시된 이미지를 풀할 수 있습니다:
docker run -p 8000:8000 -v redstackpro-data:/data \
ghcr.io/devzero-security/redstackpro:0.9.0
캔버스는 컨테이너 내부의 8000 포트에서 수신합니다. 다른 호스트 포트로 서비스하려면
매핑의 왼쪽 절반을 변경하거나(-p 8787:8000), compose용으로 REDSTACKPRO_PORT를
설정하세요(REDSTACKPRO_PORT=8787 docker compose up).
Compose는 공유 배포를 위한 선택적 Postgres 백엔드도 제공합니다:
REDSTACKPRO_DATABASE_URL=postgresql+psycopg://redstackpro:redstackpro@db:5432/redstackpro \
docker compose --profile postgres up
이미지는 컴포지션 계층만 포함합니다. Terraform이나 Ansible을 포함하지 않으며 클라우드 자격 증명을 절대 보관하지 않습니다. 아래의 소스에서 실행하는 흐름과 마찬가지로, 생성된 내보내기를 여러분의 머신에서 직접 실행합니다.
Python 3.11 이상, 캔버스용 Node 24가 필요합니다.
git clone <this repo> && cd redStackPRO
python -m venv .venv && . .venv/bin/activate
pip install -e ".[dev]"
캔버스는 API와 웹 앱, 두 개의 프로세스로 구성됩니다:
redstackpro serve # http://127.0.0.1:8000
cd frontend && npm install && npm run dev
redstackpro serve --port 8787은 API를 다른 포트로 이동시킵니다. 캔버스 개발 서버를
REDSTACKPRO_API=http://127.0.0.1:8787로 지정하세요.
열고, Load blueprint(버튼 또는 모드 팔레트)를 사용해 제공된 시작점을 열고, 툴바의 프로바이더 선택기에서 클라우드(GCP 또는 AWS)를 선택하고, Export 탭을 열면(진행하면서 컴파일됩니다) Download를 누르세요. 아래에 설명된 작업 디렉터리의 zip을 받게 됩니다.
또는 캔버스를 완전히 건너뛰고 명령줄에서 제공된 블루프린트를 컴파일할 수 있습니다. 동일한 컴파일러, 동일한 출력입니다:
redstackpro compile frontend/public/goad/goad-light.json -o export
명령줄은 기본적으로 GCP를 사용합니다. AWS의 경우 --provider aws를 전달하세요.
그러면 약 200개의 파일이 작성됩니다: 클라우드용 Terraform, 박스에서 일어나는 모든
작업을 위한 Ansible, deploy.sh, 그리고 자격 증명과 어디에 무엇이 심어져 있는지 알려주는
DEFENSE-BRIEFING.md입니다. goad-light는 두 도메인 Active Directory 레인지입니다:
sevenkingdoms와 그 자식 north, 하나의 포레스트 내 부모-자식 트러스트, 두 개의 도메인
컨트롤러와 멤버 서버, 그리고 점프박스입니다.
[!IMPORTANT] 배포 전 두 가지. 클라우드 아이덴티티에 내보내기가 생성하는 리소스(VPC 또는 네트워크, 서브넷, 보안 그룹 또는 방화벽 규칙, 인스턴스, 탄력적 또는 고정 IP)를 생성할 권한이 필요하며, 머신에
terraform,ssh,tar, Python 3.8 이상이 필요합니다. redStackPRO는 코드를 생성할 뿐 그중 아무것도 대신 설치하지 않습니다. Ansible은 점프박스에 스스로 설치됩니다.AWS CLI나 gcloud가 처음이신가요? 대상에 따른 빠른 설정:
AWS
aws configure aws sts get-caller-identity구성하는 IAM 사용자 또는 역할에
AmazonEC2FullAccess관리형 정책을 연결하세요.GCP
gcloud auth login gcloud auth application-default login gcloud config set project <project-id> gcloud services enable compute.googleapis.com --project <project-id>프로젝트에 계정의
roles/compute.admin을 부여하세요.전체 권한 표, 설치 링크, GCP vCPU 할당량 관련 사항(
CPUS_ALL_REGIONS, 프로젝트당 기본 32)은 위키 Cloud Prerequisites에 있습니다. 전체 체크리스트는 Getting Started를 참고하세요.
배포하려면 export/deploy.tfvars(내보내기 루트)를 채우고 실행하세요:
cd export && bash deploy.sh
deploy.sh는 apply 시점에 deploy.tfvars를 terraform/terraform.tfvars로 복사하며,
deploy.tfvars가 없으면 중단합니다. 따라서 terraform/ 아래의 파일이 아니라 루트 파일을
편집하세요.
Windows에서는 대신 .\deploy.ps1을 실행하세요. PowerShell 프롬프트에서 bash deploy.sh는
WSL을 실행하는데, 이는 다른 파일 시스템과 다른 자격 증명을 사용합니다. 자세한 내용은 위키
Deploying a Range를
참고하세요.
deploy.sh는 Terraform을 apply한 다음 레인지 자체의 점프박스에서 프로비저닝합니다.
관리 대상 호스트가 다른 무엇도 도달할 수 없는 프라이빗 서브넷에 있기 때문입니다. 클라우드
자격 증명은 전 과정 동안 여러분의 머신에 남아 있습니다.
모든 실행은 내보내기의 logs/deploy-<timestamp>.log에 타임스탬프가 찍히고 시크릿이
정제된 로그를 작성합니다. 배포가 실패하거나 레인지가 잘못 뜨면, 가장 최신 로그를 GitHub
이슈에 첨부하세요. 문제가 발생하면 deploy.sh가 경로와 링크를 출력합니다.
관리 및 철거. 내보내기에는 실행 중인 레인지용 라이프사이클 스크립트 manage.sh
(Windows에서는 manage.ps1)도 포함됩니다. status, start, stop, teardown을
지원합니다: stop은 레인지를 파괴하지 않고 과금을 일시 중지하고, teardown은 레인지를
파괴합니다.
./manage.sh status
./manage.sh start
./manage.sh stop
./manage.sh teardown