
CNAPPgoat는 클라우드 환경에서 의도적으로 취약하게 설계된 구성 요소를 모듈식으로 프로비저닝하도록 설계된 오픈 소스 프로젝트입니다.
CNAPPgoat는 다중 클라우드 환경에서 의도적으로 취약하게 설계된 인프라를 배포하는 도구입니다. 방어자와 침투 테스터를 위한 실습 환경을 제공하는 데 특화되어 있으며, 주요 기능은 여러 클라우드 서비스 제공업체에 걸쳐 의도적으로 취약한 환경을 배포하여 취약점을 악용, 탐지, 예방하는 능력을 향상시키는 데 도움을 주는 것입니다.

경고: CNAPPgoat는 취약한 환경을 배포합니다. 안전하고 통제된 샌드박스 내에서만 사용하세요.
CNAPPgoat는 CLI(Command Line Interface) 도구로 작동하며, 다양한 클라우드 서비스 제공업체에 취약한 환경을 배포할 수 있습니다. Go로 빌드되었으며 Pulumi 및 Pulumi 자동화 API를 활용하여 원활한 환경 배포를 보장합니다. 주요 특징 중 하나는 모듈식 설계로, 다양한 클라우드 서비스 제공업체와 새로운 취약 환경을 쉽게 확장할 수 있다는 점입니다. 현재 CNAPPgoat는 AWS, Azure, GCP를 지원합니다.
Pulumi 종속성 및 플러그인은 첫 번째 환경을 프로비저닝할 때 각 시나리오의 요구 사항에 따라 필요 시 설치됩니다. 따라서 첫 번째 프로비저닝은 이후보다 시간이 조금 더 걸릴 수 있습니다.
CNAPPgoat는 macOS 사용자의 경우 Homebrew 패키지 관리자를 사용하여 쉽게 설치할 수 있습니다.
brew tap ermetic-research/cnappgoat
brew install cnappgoat
최신 릴리스를 여기에서 다운로드하세요.
tar -xvf cnappgoat-<version>.tar.gz
cd cnappgoat-<version>
(선택 사항) 추출된 바이너리를 시스템 PATH에 추가하려면(꼭 필요한 것은 아니며, 로컬 디렉토리에서 ./cnappgoat로 실행할 수도 있습니다):
옵션 A: PATH가 포함된 디렉토리로 이동 (예: macOS 및 Linux의 경우 /usr/local/bin)
mv cnappgoat /usr/local/bin/
옵션 B: 바이너리가 포함된 디렉토리를 PATH에 추가
bash의 경우:
echo 'export PATH=$PATH:<path_to_directory_containing_cnappgoat>' >> ~/.bashrc
source ~/.bashrc
zsh의 경우:
echo 'export PATH=$PATH:<path_to_directory_containing_cnappgoat>' >> ~/.zshrc
source ~/.zshrc
<path_to_directory_containing_cnappgoat>를 cnappgoat 바이너리가 있는 디렉토리의 절대 경로로 바꾸세요.
NAME:
cnappgoat - 취약하게 설계된 클라우드 리소스를 배포하기 위한 다중 클라우드 오픈소스 도구
USAGE:
cnappgoat [global options] command [command options] [arguments...]
VERSION:
0.1.0-beta, date: 2023-08-02T13:02:46Z, commit: 6bef61857d9f3cf88215269df8976f96317711dc
COMMANDS:
clean 모든 생성된 리소스를 정리 및 제거하고 모든 시나리오와 관련 파일을 삭제합니다
describe 시나리오를 설명합니다
destroy CNAPPgoat 모듈 시나리오를 파괴합니다
list CNAPPgoat 모듈 시나리오를 나열합니다
provision CNAPPgoat 모듈 시나리오를 프로비저닝합니다
help, h 명령어 목록 또는 특정 명령어에 대한 도움말을 표시합니다
GLOBAL OPTIONS:
--debug 디버그 모드를 활성화합니다 (기본값: false)
--help, -h 도움말을 표시합니다
--version, -v 버전을 출력합니다
공백으로 구분하여 여러 인수를 사용할 수 있습니다. 예:
cnappgoat provision <시나리오-1> <시나리오-2> <시나리오-N>
--module - 모듈별로 시나리오를 필터링합니다 (예: CSPM, CIEM, CWPP, DSPM, KSPM 등)--platform - 플랫폼별로 시나리오를 필터링합니다 (예: AWS, Azure, GCP)--force - 강제 모드를 활성화합니다 (pulumi cancel로 잠긴 스택 해제)--debug - 디버그 로깅을 활성화합니다.이 플래그들은 명령어 플래그이며 명령어 뒤에 위치해야 합니다. 예:
cnappgoat provision --module CSPM --platform AWS
이 명령어는 모든 AWS CSPM 시나리오를 프로비저닝합니다.
CNAPPgoat는 매일 첫 실행 시 cnappgoat-scenarios 저장소에서 시나리오를 다운로드합니다. 이러한 시나리오는 CNAPPgoat를 실행할 때 자동으로 다운로드되며 ~/.cnappgoat/scenarios 디렉토리에 저장됩니다.
CNAPPgoat를 사용하기 전에 AWS, Azure, GCP에 대한 클라우드 자격 증명을 설정해야 합니다. CNAPPgoat는 각 제공업체의 기본 자격 증명을 사용합니다. 아래 단계에 따라 자격 증명을 설정하세요:
AWS CLI를 설치합니다. 설치 방법은 여기를 참조하세요.
다음 명령어를 실행하여 AWS 자격 증명을 구성합니다:
aws configure
액세스 키 ID, 비밀 액세스 키, 기본 리전 이름을 입력하라는 메시지가 표시됩니다.
Azure CLI를 설치합니다. 설치 방법은 여기를 참조하세요.
다음 명령어를 실행하여 Azure 계정에 로그인합니다:
az login
새 브라우저 창이 열리며 로그인할 수 있습니다. 로그인 후 자격 증명이 저장되어 이후 사용이 가능합니다.
Google Cloud SDK를 설치합니다. 설치 방법은 여기를 참조하세요.
다음 명령어를 실행하여 Google Cloud에 인증합니다:
gcloud auth login
새 브라우저 창이 열리며 로그인할 수 있습니다. 로그인 후 자격 증명이 저장되어 이후 사용이 가능합니다.
이러한 자격 증명을 설정하면 CNAPPgoat를 사용하여 AWS, Azure, GCP에 시나리오를 배포할 수 있습니다. 다른 제공업체와 함께 CNAPPgoat를 사용할 계획이라면 그에 맞게 자격 증명을 구성하세요.
CNAPPgoat에 대한 자세한 내용은 Ermetic 블로그 게시물을 확인하세요: https://ermetic.com/blog/cloud/cnappgoat-multicloud-open-source-tool-for-deploying-vulnerable-by-design-cloud-resources/
CNAPPgoat는 탐지 및 예방 기능을 테스트하기 위해 여러 클라우드에 다양한 취약 시나리오를 제공합니다. 악용, 탐지, CTF(캡처 더 플래그) 시나리오 등 다양한 영역에 초점을 맞춘 훌륭한 다른 프로젝트들도 있습니다. 이러한 도구와 프로젝트에서 영감을 받았으며, 확인해 보시기를 권장합니다:
더 많은 챌린지와 도구는 Mike Privitte의 Awesome Cloud Security Challenges 저장소에서 찾을 수 있습니다. 우리의 목록은 사용자가 자신의 샌드박스에 배포하는 취약하게 설계된 클라우드 환경에 특히 초점을 맞추고 있습니다.
프로젝트 팀에 이메일을 보내려면 [email protected]으로 연락하세요.
| 명령어 | 설명 | 사용법 |
|---|
list | 프로비저닝 가능한 모든 시나리오를 나열합니다. | cnappgoat list |
describe | 지정된 시나리오에 대한 자세한 정보를 제공합니다. | cnappgoat describe <시나리오 이름> |
provision | 시나리오 이름으로 지정된 시나리오를 프로비저닝합니다. 모든 시나리오를 프로비저닝하려면 cnappgoat provision을 사용합니다. | cnappgoat provision <시나리오 이름> |
destroy | 시나리오 이름으로 지정된 시나리오를 파괴합니다. 모든 시나리오를 파괴하려면 cnappgoat destroy를 사용합니다. | cnappgoat destroy <시나리오 이름> |
clean | 모든 시나리오를 정리하고 .cnappgoat 로컬 디렉토리를 삭제합니다. | cnappgoat clean |
--version, -v | CNAPPgoat의 현재 버전을 표시합니다. | cnappgoat --version |
--help, -h | 도움말 메뉴를 표시합니다. | cnappgoat --help |