Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Thunderstorm — 환경을 매핑하고, 실효 권한과 신뢰를 평가하며, 완전한 공격 그래프를 단일 .rage.ndjson 파일로 작성하는 수집 및 도출 엔진. 다른 모든 것의 입력. | Kitploit
도구/GitHubGitHub/ustayready/thunderstorm
Cloud Infrastructure SecurityPrivilege EscalationVulnerability AnalysisLateral MovementConfiguration AuditingInformation GatheringPenetration TestingCloud SecurityIdentity & Access Management (IAM)Red Teaming
GitHub
24271일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
ustayready/thunderstorm

Thunderstorm

환경을 매핑하고, 실효 권한과 신뢰를 평가하며, 완전한 공격 그래프를 단일 .rage.ndjson 파일로 작성하는 수집 및 도출 엔진. 다른 모든 것의 입력.

저장소 보기

Thunderstorm

당신에게 4,000개의 취약점이 있는 게 아니다. 왕관의 보석으로 가는 여섯 개의 경로가 있을 뿐이다.

Blaze Lite의 AWS 공격 경로: 익명 인터넷에서 프로덕션 데이터베이스까지 여섯 홉

CSPM은 중복 제거되고 심각도순으로 정렬된 평면적인 오구성 목록을 던져주고, 그중 무엇이 중요한지 추측하라고 내버려둔다. Thunderstorm은 **도달 가능성(reachability)**을 추론한다. 클라우드를 읽기 전용으로 수집하고, 이를 보안 역량의 그래프로 모델링한 뒤, GitHub Actions OIDC 신뢰가 네 홉 만에 프로덕션 데이터 레이크로 이어진다고 알려준다.

위의 홉 중 어느 것도 그 자체로는 취약점이 아니다. 공개 버킷, state 파일에 들어 있는 키, 수임 가능한 역할, 지나치게 광범위한 IAM 액션 하나. 경로가 곧 취약점이며, 경로는 다른 거의 어떤 도구도 계산하지 않는 것이다.

지목한 플랫폼에 깊이 들어간다. AWS 계정, Azure 구독, 또는 GCP 프로젝트를 대상으로 실행하면, 해당 환경 하나를 그 공급자의 고유 용어로 매핑한다. AWS의 STS assume-role과 IAM 권한 상승, Azure의 RBAC와 관리 ID 체인, GCP의 서비스 계정 임퍼소네이션. 하나의 환경, 하나의 그래프, 그 클라우드가 실제로 작동하는 방식 그대로 모델링된다.

더 많이 열거하는 도구는 많다. 여기서의 주장은 Thunderstorm이 열거한 것을 실제 깊이로 추론한다는 것이다. 219개 리소스 유형, 80개 엣지 유형, 2,400개 이상의 도출 규칙, 1,049개의 매핑된 자격 증명 유출 지점, 모두 RAGE에서 가져온 것이다.

RAGE는 형식이고, Thunderstorm은 그것을 생성하며, Blaze는 그것을 탐색한다.


실제 공격 체인을 걸어가는 모습 보기

이것들은 Thunderstorm이 단일 scan으로 생성하는 결과물이다.

AWS: 공개 Terraform state 파일에서 계정 전체 탈취까지

오구성된 S3 버킷 하나. Thunderstorm은 이를 여섯 홉 거슬러 프로덕션 고객 데이터베이스까지 추적하고, 데이터베이스 마스터 시크릿으로 곧장 이어지는 두 번째 경로도 찾아낸다.

root@kitploit:~
Internet ──public s3:GetObject──▶ acme-terraform-state (public bucket)
         ──ExposesCredential────▶ AKIA…            (access key leaked in tfstate)
         ──CredentialsFor───────▶ ec2-app-role
         ──CanAssume────────────▶ terraform-exec    (sts:AssumeRole)
         ──CanEscalateTo────────▶ OrganizationAdmin (iam:AttachRolePolicy)
         ──CanReadData──────────▶ acme-prod-customers (PII)

모든 홉은 그것을 부여하는 권한, 그것을 증명하는 증거, 그리고 평이한 영어 서술을 함께 지닌다. 유출된 값들도 함께 나온다:

유출된 자격 증명 값이 드러난 AWS 민감 정보 노출

Azure: 공개 스토리지 컨테이너에서 구독 Owner까지

공개적으로 읽을 수 있는 blob이 서비스 주체(service-principal) 시크릿을 유출한다. 권한 하나를 더 가진 Contributor가 스스로를 구독 Owner로 승격시킨다. 앱 익스플로잇은 없다. 그저 클라우드 오구성과 IAM일 뿐이다.

Azure 공격 그래프

root@kitploit:~
Internet ──anonymous blob read──▶ acmedeploy (public Storage account)
         ──ExposesCredential────▶ automation-sp secret (in a deploy config blob)
         ──CredentialsFor───────▶ automation-sp (Contributor)
         ──CanEscalateTo────────▶ Owner  (Microsoft.Authorization/roleAssignments/write)
         ──CanReadData──────────▶ acmedatalake

GCP: 커밋된 키에서 두 홉짜리 임퍼소네이션 체인까지

서비스 계정 임퍼소네이션은 대부분의 도구에게 보이지 않는다. Thunderstorm은 iam.serviceAccounts.getAccessToken을 그것이 실제로 그렇듯 측면 이동 엣지로 취급한다.

GCP 공격 그래프

root@kitploit:~
Internet ──public allUsers───▶ acme-public-exports (GCS)
         ──ExposesCredential─▶ sa-deploy-key
         ──CredentialsFor────▶ sa-deploy
         ──CanImpersonate────▶ sa-data-pipeline
         ──CanImpersonate────▶ sa-org-admin
         ──CanReadData───────▶ acme_customers_pii (BigQuery)

무엇을 얻는가

  • 공격 경로 그래프, 대화형이며 오프라인. 어떤 발판이든 골라서 도달 가능 / 왕관의 보석 / 전체로 필터링하고, 어떤 대상으로든 최단 경로를 찾아낸다.
  • 민감 정보 노출. 공개 리소스, 그리고 Thunderstorm이 실제로 유출된 위치에서 읽어낸 자격 증명과 시크릿, 캡처된 값과 그 정확한 위치까지 함께.
  • 권한 상승과 측면 이동. assume-role, 임퍼소네이션, 관리 ID, 자기 부여(self-grant), 교차 계정/테넌트 엣지, 각각을 가능하게 하는 권한에 묶어서.
  • 설계상 설명 가능. 모든 엣지는 증거, 권한, 조건, 신뢰도, 그리고 서술을 지닌다.
  • 인쇄 가능한 보고서. 관리 연속성(chain of custody), 영향 범위(blast radius), 주석이 달린 경로, 확인된 유출.
  • Blaze Lite. 바이너리에 내장된 단일 오프라인 HTML 뷰어. view가 브라우저에서 그것을 연다. 아무것도 업로드되지 않는다.

요구 사항

  • Go 1.26+ (두 개의 모듈: collectors/, engine/).
  • 스캔 대상에 대한 읽기 전용 자격 증명 (예: AWS 프로필, GCP ADC, 또는 Azure 로그인).
  • RAGE: Thunderstorm이 소비하는 카탈로그. 벤더링된 스냅샷이 바이너리에 내장되어 있으므로, 빌드나 실행에 별도 다운로드는 필요 없다 (아래 참조).

RAGE가 진실의 원천이다

Thunderstorm은 자체적인 분류 체계, 매핑, 규칙을 전혀 갖지 않는다. RAGE 표준을 엔드투엔드로 소비한다:

관심사RAGE에 위치
노드 / 엣지 분류 체계, 조건

버전 연결: RAGE의 spec_version은 Thunderstorm을 RAGE 릴리스에 고정하는 단일 숫자다. 수집기는 빌드 대상이 된 RAGE에서 이를 실시간으로 읽고(thunderstorm version이 RAGE <v>를 출력한다) 내보내는 모든 그래프에 이를 각인한다. Blaze Lite는 그 각인을 읽고, 그래프가 지원하지 않는 버전에 대해 빌드된 경우 경고한다.

RAGE 해석 방식 (먼저 일치하는 것이 이긴다):

  1. $RAGE_ROOT: 설정한 경우, 라이브 RAGE 체크아웃 (개발용 오버라이드; 재빌드 없이 편집 적용).
  2. 기본값: collectors/rage/에 있는 벤더링된 스냅샷, 바이너리에 내장됨.

스냅샷은 make RAGE_ROOT=/path/to/rage (또는 collectors/에서 go generate ./...)로 갱신한다. RAGE는 github.com/trustedsec/rage에 있다.

인증

Thunderstorm은 기존 클라우드 자격 증명을 사용해 읽기 전용으로 스캔한다. 시크릿을 관리하지 않고 대상에 쓰지도 않는다. 공급자의 일반적인 도구로 로그인한 뒤, scan을 계정 / 프로젝트 / 구독으로 향하게 하라.

AWS는 표준 AWS SDK 자격 증명 체인(명명된 프로필, 환경 변수, SSO, 또는 인스턴스 역할)을 사용한다:

root@kitploit:~
aws configure --profile myprofile        # or: aws sso login --profile myprofile
./bin/thunderstorm scan --profile myprofile [--region us-east-1]

GCP는 Application Default Credentials (ADC)를 사용한다. 로그인한 뒤 프로젝트를 전달하라:

root@kitploit:~
gcloud auth application-default login
./bin/thunderstorm scan --provider gcp --project my-project-id

서비스 계정 키도 GOOGLE_APPLICATION_CREDENTIALS=/path/key.json을 통해 작동한다.

Azure는 Azure CLI / DefaultAzureCredential 체인을 사용한다. 로그인한 뒤 선택적으로 하나의 구독으로 범위를 지정하라:

root@kitploit:~
az login
./bin/thunderstorm scan --provider azure [--subscription <sub-id>]

서비스 주체도 AZURE_CLIENT_ID / AZURE_CLIENT_SECRET / AZURE_TENANT_ID를 통해 작동한다.

여러 계정을 한 번에 스캔하려면 --aws-profiles, --gcp-projects, --azure-subscriptions, 또는 --scopes 파일(줄마다 provider:scope)을 사용한다.

사용법

빌드 (./bin/thunderstorm 생성):

root@kitploit:~
make                              # build with the embedded RAGE snapshot
make RAGE_ROOT=/path/to/RAGE      # re-vendor from a live RAGE checkout, then build

스캔한 뒤 탐색:

root@kitploit:~
./bin/thunderstorm scan --profile <aws-profile>   # → a single .rage.ndjson attack graph
./bin/thunderstorm view --in engagement.zip       # open it offline in Blaze Lite
./bin/thunderstorm redact --in engagement.zip --out redacted.zip   # de-identify for sharing

--out이 없으면, 결과물은 ./output/에 저장된다 (git-ignored). 이것이 도구의 전부다: scan, redact, view, version.

설계 불변 조건

  • 온톨로지는 RAGE가 소유한다. 공급자/서비스를 추가한다는 것은 RAGE를 편집하는 것이지, Thunderstorm 로컬 스키마를 편집하는 것이 결코 아니다.
  • 인벤토리가 아니라 역량. 걸어갈 수 있는 모든 엣지는 보안 역량이다. 인벤토리는 STRUCTURAL이며 경로에서 제외된다.
  • 설명 가능. 모든 엣지는 증거, 권한, 조건, 신뢰도, 그리고 사람이 읽는 서술을 지닌다.
  • 조건은 일급 시민. 엣지 상태 = ACTIVE / CONDITIONAL / POTENTIAL / BLOCKED / UNKNOWN; BLOCKED 엣지는 경로가 왜 실패하는지 설명하기 위해 유지된다.

라이선스

Thunderstorm은 GNU General Public License v3에 따라 라이선스된다 (LICENSE 참조). 이것은 승인된 보안 테스트, 교육, 연구 전용으로 제공되는 공격적 보안 도구다. 소유하지 않은 어떤 환경에 대해서든 실행하기 전에 명시적 승인을 받아라. LICENSE 상단의 Authorized-Use 고지를 참조하라.

도구 다운로드
vocab/{node-types,edge-types,conditions}.json
네이티브→일반 매핑 + 수집 레시피providers/{aws,gcp,azure}.json
도출 규칙 코퍼스rules/
자격 증명 노출 카탈로그exposure-db/{aws,gcp,azure}.json + vocabulary.json