SmokedMeat
License: AGPL v3
CI/CD 레드팀 프레임워크 (Red Team Framework)
메타스플로잇(Metasploit)과 유사하지만, CI/CD 파이프라인을 위한 도구입니다.
BoostSecurity Labs의 poutine 빌드 파이프라인 SAST 스캐너 제작사가 개발했습니다.
SmokedMeat quickstart demo
경고: 이 도구는 승인된 보안 테스트 목적으로만 사용해야 합니다.
SmokedMeat은 CI/CD 파이프라인 위협이 깊이 과소평가되기 때문에 존재합니다. 기존의 보안 교육에서는 공급망 공격(supply chain attacks)을 거의 다루지 않아, 방어자들이 적대자가 야생에서 적극적으로 악용하는 기술에 대비하지 못하게 만듭니다.
저희는 보안 팀이 현실적인 레드팀 훈련을 통해 고급 CI/CD 공격 기법에 대한 학습, 연습 및 방어 검증 능력을 갖출 수 있도록 이 도구를 제작했습니다.
반드시 본인이 소유했거나 테스트할 명시적 서면 허가를 받은 시스템에 대해서만 사용하십시오.
SmokedMeat이란 무엇인가?
SmokedMeat은 CI/CD 파이프라인을 위한 포스트 익스플로잇(post-exploitation) 프레임워크입니다. 이 도구를 GitHub 조직에 겨냥하여 취약한 워크플로우를 찾게 하고, 손상된 러너(runner)에 임플란트(implant)를 배포하며, 클라우드 제공업체를 통해 피벗(pivot)하고, 비밀 정보를 추출하며, 피해 범위를 매핑할 수 있습니다. 이 모든 과정이 터미널 UI에서 이루어집니다.
작동 방식:
- 분석 (Analyze) - 조직의 GitHub Actions 워크플로우를 주입 취약점(injection vulnerabilities), 위험한 트리거, 안전하지 않은 체크아웃 패턴에 대해 스캔합니다 (poutine 기반).
- 익스플로잇 (Exploit) - PR, 이슈, 댓글 또는 워크플로우 디스패치(workflow dispatch)를 통해 스테이저(stager)를 배포합니다. 취약한 워크플로우가 실행되면, CI 러너에서 임플란트를 다운로드하고 실행합니다.
- 포스트 익스플로잇 (Post-exploit) - 러너 메모리에서 비밀 정보를 추출하고, GitHub 토큰 권한을 열거하며, 개인 키를 스캔하고, 데이터를 수집합니다.
- 피벗 (Pivot) - 획득한 자격 증명을 사용하여 측면 이동(move laterally)합니다: 비공개 리포지토리를 발견하고, GitHub App 토큰을 발행하며, OIDC 토큰을 AWS/GCP/Azure 접근 권한으로 교환하고, SSH 배포 키를 탐색합니다.
철학(Philosophy): 대담하고 노이즈가 많습니다. 이것은 EDR 회피 도구가 아닙니다. 이는 어떤 경고도 발생하기 전에 CI/CD 침해가 얼마나 깊어질 수 있는지를 보여주는 시연 프레임워크입니다.
누가 사용해야 하는가(Who is it for):
- 엔터프라이즈 환경에서 CI/CD 보안 태세를 검증하는 레드팀
- 이해관계자에게 공급망 공격 경로를 입증하려는 펜테스터
- 파이프라인 공격에 대한 탐지 및 대응을 테스트하는 보안 엔지니어
- 새로운 CI/CD 익스플로잇 기법을 개발하는 연구원
- 공급망 공격 표면을 탐색하는 버그 바운티 헌터
빠른 시작(Quick Start)
SmokedMeat를 처음 사용하려면 Docker와 make를 설치하세요. Go는 필요하지 않습니다.
git clone https://github.com/boostsecurityio/smokedmeat.git
cd smokedmeat
make quickstart
make quickstart가 권장되는 첫 실행 방법입니다. 로컬에서 안정화된 릴리스의 빠른 시작 스택을 시작하고, 오퍼레이터 TUI(Counter)를 로컬 C2 팀서버(Kitchen)에 대해 실행합니다.
권장되는 첫 실행:
- 대상(Target):
whooli
- 토큰:
public_repo가 포함된 클래식 PAT (Personal Access Token)
⚠️ 클래식 PAT를 사용하는 것이 좋습니다. 세밀한 PAT는 너무 제한적일 수 있으며, whooli를 포함하여 다른 조직의 공개 대상을 테스트하는 것을 차단할 수 있습니다.
whooli는 SmokedMeat가 의도적으로 취약하게 만든 CI/CD 공격 놀이터입니다. 이는 공개 경로에 대한 권장 첫 번째 대상입니다.
설정 마법사는 다음 과정을 안내합니다:
- GitHub PAT - 토큰을 입력하세요. 비공개 저장소의 경우, 클래식 PAT는 일반적으로
repo 권한이 필요합니다.
- 대상(Target) -
whooli 또는 사용자의 조직/저장소를 입력하세요.
- 분석(Analysis) - 워크플로우를 스캔하여 취약점을 찾고 익스플로잇 가능한 발견 사항을 제시합니다.
전체 챌린지 흐름은 whooli 가이드 또는 whooli GitHub org로 바로 이동하여 확인할 수 있습니다.
작업을 완료했을 때:
make quickstart-down
make quickstart-purge
만약 소스 코드에서 작업하고 싶다면, 개발(Development) 섹션을 참조하세요.
개발(Development)
로컬에서 소스 트리에 기여하거나 반복 작업을 수행하는 경우, Go 1.26 이상을 설치하고 dev quickstart를 사용하십시오:
make dev-quickstart는 로컬 smokedmeat-cloud-shell 이미지를 빌드하고, cloudflared, nats, 그리고 C2 팀 서버 (Kitchen)를 시작한 다음, 소스에서 오퍼레이터 TUI(operator TUI)를 실행합니다.
인프라를 먼저 구성하고 오퍼레이터 TUI는 나중에 사용하려는 경우:
make dev-quickstart-up
make dev-quickstart-counter
작업을 완료했을 때:
make dev-quickstart-down
make dev-quickstart-purge
더 많은 배포 모드와 로컬 개발 세부 정보는 docs/deployment.md에 있습니다.
버전 확인 (Version Check)
Counter는 시작 시 더 새로운 SmokedMeat 릴리스를 확인합니다. 이 기능은 SMOKEDMEAT_DISABLE_VERSION_CHECK 환경 변수를 설정하여 비활성화할 수 있습니다.
핵심 구성 요소 (Core Components)
| 표준 용어 | SmokedMeat 이름 | 설명 |
|---|
| 오퍼레이터 TUI (Operator TUI) | Counter | 분석, 페이로드 전달 및 포스트 익스플로잇 워크플로우를 위한 터미널 인터페이스. |
| ... | | |
배포 모드 (Deployment Modes)
| 모드 | 사용 시점 | 진입점 |
|---|
| Quickstart | 고정된 릴리스의 가장 빠른 첫 실행 | make quickstart |
호스팅된 팀 서버(Hosted Teamserver)는 전용 호스트에서 C2 팀 서버를 실행하고, 오퍼레이터 TUI는 각 오퍼레이터 워크스테이션에 네이티브로 실행됩니다.
아키텍처 (Architecture)
높은 수준에서 볼 때, 오퍼레이터 TUI (Counter)는 C2 팀 서버 (Kitchen)와 통신하며, 이 팀 서버는 손상된 CI 러너에서 실행되는 임플란트 (Brisket)를 관리하고 실시간 공격 그래프를 제공합니다.
┌──────────────┐
│ SSH AGENT │
│ (Auth) │
...
기능 (Features)
자세한 내용은 docs/FEATURES.md을 참조하십시오.
Capabilities
| 카테고리 | 기능 |
|---|
| 정찰 (Reconnaissance) | 6개의 CI 플랫폼 자동 감지 (GitHub Actions, GitLab CI, Azure DevOps, CircleCI, Jenkins, Bitbucket). 시크릿 분류(Classify secrets), OIDC 가용성 탐색(probe OIDC availability), 러너 메타데이터 수집(gather runner metadata). |
...
기술 스택 (Technology Stack)
...
테스트 (Testing)
make test
make lint
make e2e-smoke
...
이전 연구 (Prior Art)
SmokedMeat는 다음 연구를 기반으로 구축되었습니다:
- poutine - 빌드 파이프라인 정적 분석 보안 테스트(SAST) 스캐너
- LOTP - 파이프라인을 통한 생존 기술 (Living Off The Pipeline techniques)
- Gato-X - GitHub Actions 열거(enumeration)
- Nord-Stream - CI/CD 시크릿 추출
- Sliver - Go C2 아키텍처 패턴
- Mythic - 협업 워크플로우 설계
라이선스 (License)
GNU Affero General Public License v3.0 - 자세한 내용은 LICENSE를 참조하십시오.
공격자 기술을 이해하려는 방어자를 위해 제작되었습니다.