
CNAPPgoat는 클라우드 환경에서 의도적으로 취약하게 설계된 구성 요소를 모듈식으로 프로비저닝하도록 설계된 오픈 소스 프로젝트입니다.
![made-with-Go][made-with-go-img] [![GitHub Release][release-img]][release] [![Go Report Card][go-report-img]][go-report] [![License: Apache-2.0][license-img]][license]
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 버전을 출력합니다
| 명령어 | 설명 | 사용법 |
|---|---|---|
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 |
공백으로 구분하여 여러 인수를 사용할 수 있습니다. 예:
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]으로 연락하세요.