
Docker를 사용한 자동화된 Red Team 인프라 배포
초기 릴리스. Redcloud의 개발 업데이트를 받으려면 Twitter에서 저를 팔로우하세요.
💁☁️🐚🌱
Redcloud는 Docker를 사용하여 완전한 기능을 갖춘 Red Team Infrastructure를 배포하기 위한 강력하고 사용자 친화적인 도구 상자입니다. 클라우드의 속도를 도구에 활용하세요. 몇 분 안에 배포됩니다. 세련된 웹 인터페이스로 사용하고 관리하세요.
침투 테스트, 사격장, 레드팀 및 버그 바운티에 이상적입니다!
공격 인프라를 고통 없이 자체 호스팅하고, 몇 분 안에 자신만의 실시간 확장 가능하고 탄력적인 공격 인프라를 배포하세요.
다음 데모는 SSH를 통한 Redcloud 배포와 이어지는 Metasploit을 보여줍니다. 그런 다음 Traefik과 Metasploit에 연결된 라이브 볼륨을 살펴봅니다. 마지막으로 웹 터미널을 통해 Metasploit의 DB가 작동하는지 확인하고, 컨테이너를 삭제한 후 Redcloud를 종료합니다.
설정:```bash
cat ~/.ssh/id_rsa.pub | ssh root@your-deploy-target-ip 'cat >> .ssh/authorized_keys'
eval (docker-machine env default)
python --version
배포:```bash
> git clone https://github.com/khast3x/redcloud.git
> cd redcloud
> python redcloud.py
Redcloud는 사용 가능한 템플릿 목록을 출력하기 위해 PyYAML을 사용합니다. 대부분의 시스템에 기본적으로 설치되어 있습니다.
그렇지 않은 경우, 다음을 실행하세요:```bash
pip install -r requirements.txt
Redcloud에는 3가지 배포 방법이 있습니다:
1. **로컬**
2. **SSH를 통한 원격**. 대상 머신의 `authorized_keys` 파일에 공개 키가 있어야 합니다.
3. **docker-machine을 통한 원격**. `eval (docker-machine env deploy_target)` 명령어를 실행하여 docker-machine 환경을 미리 로드한 후 `redcloud.py`를 실행하세요. Redcloud가 docker-machine을 자동으로 감지하고, docker-machine 배포와 관련된 메뉴 항목을 강조 표시합니다.
___
<h4 align="center">
<b>템플릿</b>
<br>
<br>
</h4>
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/345/e38f19fa9cc10216030f7856b99170a4ac7c35399c2dd9daf19156a6e9b75e46.png" width="540" title="Redcloud 템플릿">
</p>
___
**간략히,**
`redcloud.py`는 Docker 기반으로 **공격 작업을 위한 많은 도구 템플릿이 미리 로드된** [Portainer](https://www.portainer.io/) 스택을 배포합니다. 배포 후에는 [웹 인터페이스](#screenshots)로 Redcloud를 제어할 수 있습니다. 리버스 프록시로 [Traefik](https://traefik.io/)을 사용합니다. `ssh` 또는 `docker-machine` 시스템을 사용하여 대상 서버에 쉽게 원격 배포할 수 있습니다.
* :rocket: 클라우드에서 Kali를 몇 번의 클릭만으로 실행해보고 싶었던 적이 있나요?
* :package: 도구, 기술, 단계 간에 깔끔한 격리를 원하나요?
* :ambulance: 스캔 및 C2의 상태를 모니터링하고 싶나요?
* :fire: 피싱 캠페인 설정을 위한 시스템 관리 작업을 건너뛰고 더 빨리 해킹하고 싶나요?
* :smiling_imp: 이상적인 공격 인프라를 어떻게 구축할지 궁금하신가요?
웹 UI를 사용하여 각 컨테이너를 모니터링, 관리 및 **상호 작용**하세요. 빠른 웹 터미널을 마치 자신의 것처럼 사용하세요. Portainer의 간단한 UI를 사용하여 볼륨, 네트워크 및 포트 전달을 생성하세요.
데이터센터급 인터넷의 힘으로 즐겨 사용하는 모든 도구와 기술을 배포하고 처리하세요 :rocket:
___
*다음 섹션에서는 Redcloud의 설계 개념에 대해 더 자세히 살펴보겠습니다. 하지만 자세히 알지 않아도 시작할 수 있습니다.*
___
* :book: **목차**
- [소개](#introduction)
- [기능](#features)
- [빠른 시작](#quick-start)
- [세부 사항](#details)
- [Redcloud 아키텍처](#redcloud-architecture)
- [배포 워크플로우](#deployment-workflow)
- [네트워크](#networks)
- [볼륨](#volumes)
- [터미널에서 컨테이너 접근](#accessing-containers-from-the-terminal)
- [파일 접근](#accessing-files)
- [SSL 인증서](#ssl-certificates)
- [Redcloud 중지](#stopping-redcloud)
- [Portainer 앱 템플릿](#portainer-app-templates)
- [Traefik 리버스 프록시](#traefik-reverse-proxy)
- [Redcloud 보안 고려 사항](#redcloud-security-considerations)
- [테스트된 배포 후보](#tested-deployment-candidates)
- [문제 해결](#troubleshooting)
- [사용 사례](#use-cases)
- [스크린샷](#screenshots)
- [기여 지침](#contribution-guideline)
- [Redcloud 호스팅](#hosting-redcloud)
- [영감 및 감사의 말](#inspirations--shout-outs)
___
## 세부 사항
### Redcloud 아키텍처
* `redcloud.py`: Docker 및 Portainer를 사용하여 웹 인터페이스와 앱 템플릿을 시작/중지합니다.
* `portainer`: Portainer 웹 인터페이스.
* `traefik`: 웹 인터페이스, API 및 파일 컨테이너로 가는 Traefik 리버스 프록시 컨테이너. 일부 템플릿에는 편의를 위해 미리 구성된 경로가 있습니다. `templates.yml`을 참조하세요.
* `templates`: 앱 템플릿을 제공하는 python3 `http.server` 컨테이너. "내부" 네트워크에 있습니다.
* `cert_gen`: 일반적인 모범 사례를 사용하여 SSL 인증서를 생성하는 [omgwtfssl](https://github.com/paulczar/omgwtfssl) 컨테이너.
* https://your-server-ip/portainer: 배포 후 Redcloud 웹 인터페이스.
* https://your-server-ip/files: Redcloud `redcloud_files` 볼륨. Traefik과 동일한 `.htpasswd`로 보호되는 `redcloud_log` 컨테이너 콘텐츠에도 접근할 수 있습니다. 기본 자격 증명: `admin:Redcloud`
* https://your-server-ip/api: Traefik 리버스 프록시 상태 모니터링 페이지. 경로, 백엔드, 반환 코드에 대한 실시간 통계를 보여줍니다. Traefik을 통해 구성된 경우 리버스 콜백 임플란트 데이터도 표시됩니다.
### 배포 워크플로우
**Redcloud 배포 워크플로우는 다음과 같습니다:**
1. Redcloud 저장소를 클론/다운로드합니다.
2. `redcloud.py`를 실행합니다.
3. 메뉴에서 배포 후보를 선택합니다 (로컬, ssh, docker-machine).
4. `redcloud.py`는 자동으로:
* 대상 머신에서 `docker` 및 `docker-compose`를 확인합니다.
* 없으면 `docker` 및 `docker-compose`를 설치합니다.
* `docker-compose`를 사용하여 대상에 웹 스택을 배포합니다.
5. 배포가 완료되면 `redcloud.py`가 URL을 출력합니다. https://your-deploy-machine-ip/portainer로 이동하세요.
6. 웹 인터페이스에서 사용자 이름/비밀번호를 설정합니다.
7. 엔드포인트(목록 중 유일한 항목)를 선택합니다.
8. 왼쪽의 "앱 템플릿" 메뉴 항목을 사용하여 템플릿에 액세스하세요 :rocket:
**앱 템플릿 배포는 다음과 같습니다:**
1. 템플릿을 선택합니다.
2. 추가 옵션을 추가하려면 "+ 고급 옵션 표시"를 선택합니다.
3. 원하는 대로 포트 매핑, 네트워킹 옵션, 볼륨 매핑을 추가합니다.
4. "컨테이너 배포"를 선택합니다.
5. Portainer가 컨테이너를 실행합니다. 이미지를 가져와야 하는 경우 몇 분이 걸릴 수 있습니다. 서버가 데이터 센터에 있으면 이 단계가 매우 빠릅니다.
6. 컨테이너가 실행 중이어야 합니다 :rocket:
7. Portainer가 "컨테이너" 페이지로 리디렉션합니다. 거기서 다음을 수행할 수 있습니다:
a. 라이브 컨테이너 로그 보기.
b. 컨테이너 세부 정보 검사 (`docker inspect`).
c. 라이브 컨테이너 통계 보기 (메모리/CPU/네트워크/프로세스).
d. 웹 셸을 사용하여 컨테이너와 상호 작용.
e. 앱 템플릿에 따라 `bash` 또는 `sh`를 사용합니다. 드롭다운 메뉴에서 적절히 선택하세요.
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/345/cf013b73e9bb7dc6f94dafbd31d9d158f7736fc676f94995c64de133ad9bebbe.png" width="540" title="Redcloud 메뉴">
</p>
### 네트워크
Redcloud를 사용하면 네트워크와 컨테이너를 쉽게 가지고 놀 수 있습니다.
다른 드라이버로 추가 네트워크를 생성하고 원하는 대로 컨테이너를 연결할 수 있습니다. Redcloud는 `redcloud_default`와 `redcloud_inside`의 2개 네트워크와 함께 제공됩니다.
### 볼륨
볼륨을 공유하여 컨테이너 간에 데이터를 공유할 수 있습니다. Redcloud는 3개의 볼륨과 함께 제공됩니다:
* `certs`: [omgwtfssl](https://github.com/paulczar/omgwtfssl)이 생성한 인증서가 있는 컨테이너.
* `files`: 표준 파일 공유 볼륨. 현재로서는 https://your-server-ip/files를 탐색할 때 파일을 사용할 수 있으며, Traefik 리버스 프록시 컨테이너가 `files` 볼륨에서 직접 제공합니다. 일반적인 사용 사례는 Metasploit 컨테이너에 볼륨을 연결하고 페이로드를 `files` 볼륨에 직접 생성하는 것입니다. 이제 Traefik을 통해 파일 서버 경로로 바로 신선한 페이로드를 제공할 수 있습니다.
* `logs`: 로그에 사용 가능하며, 파일 서버에서도 제공됩니다. 액세스하려면 기본 인증이 필요합니다. 기본값은 `admin:Redcloud`입니다.
### 터미널에서 컨테이너 접근
터미널에 머물면서 배포된 컨테이너로 작업하고 싶다면 Docker를 사용하면 매우 쉽습니다. 다음 사항을 명심하세요:
* 대부분의 컨테이너에는 `bash`가 있지만 일부는 대신 `sh`를 사용합니다.
* 모든 Redcloud 앱 템플릿 컨테이너 이름은 `red_`로 시작합니다 (예: `red_msf-postgresql`).
* Docker를 사용하면 `docker exec` 또는 `attach`를 사용하여 컨테이너와 상호 작용할 수 있습니다.
* `exec`는 새 프로세스를 생성하므로 선호됩니다.
* `attach`는 실행 중인 프로세스에 직접 연결되어 컨테이너를 종료시킬 수 있습니다.
* Redcloud를 실행하는 경우:
* 로컬 또는 `docker-machine`을 사용하는 경우, 로컬 셸에 다음 명령을 입력하면 됩니다.
* `ssh`를 사용하는 경우, 먼저 배포 대상에 ssh로 접속한 후 다음 명령을 실행하세요.