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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
KubiScan — Kubernetes 클러스터에서 위험한 권한을 스캔하는 도구 | Kitploit
도구/GitHubGitHub/cyberark/kubiscan
Authentication & AuthorizationPrivilege EscalationVulnerability ScannersContainer SecurityConfiguration AuditingInformation GatheringPenetration TestingCloud SecuritySecret DetectionMisconfigurationRed Teaming
1.4k14161년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHub
cyberark/kubiscan

KubiScan

Kubernetes 클러스터에서 위험한 권한을 스캔하는 도구

저장소 보기

GitHub release License Stars

KubiScan 로고 Kubernetes 클러스터에서 RBAC(Role-based access control) 권한 부여 모델의 위험한 권한을 스캔하는 도구입니다. 이 도구는 "위험한 권한 제거로 Kubernetes 클러스터 보호" 연구의 일환으로 발표되었습니다. https://www.cyberark.com/threat-research-blog/securing-kubernetes-clusters-by-eliminating-risky-permissions/

목차

  • 개요
  • 무엇을 할 수 있나요?
  • 사용법
    • 컨테이너
    • Python3로 직접 사용
      • 전제 조건
      • Ubuntu 설치 예시
      • KubeConfig 파일 사용
      • ServiceAccount 토큰으로 원격 접속
  • 예제
  • 데모
  • 위험한 Roles YAML
  • ❤️ 쇼케이스
  • 라이선스
  • 참고 자료

개요

KubiScan은 클러스터 관리자가 공격자가 잠재적으로 활용하여 클러스터를 손상시킬 수 있는 권한을 식별할 수 있도록 도와줍니다.
이는 추적하기 어려운 많은 권한이 있는 대규모 환경에서 특히 유용합니다.
KubiScan은 위험한 Roles\ClusterRoles, RoleBindings\ClusterRoleBindings, 사용자 및 Pod에 대한 정보를 수집하여 기존의 수동 프로세스를 자동화하고 관리자에게 위험을 줄이는 데 필요한 가시성을 제공합니다.

무엇을 할 수 있나요?

  • 위험한 Roles\ClusterRoles 식별
  • 위험한 RoleBindings\ClusterRoleBindings 식별
  • 위험한 Subjects (사용자, 그룹 및 ServiceAccounts) 식별
  • 위험한 Pods\Containers 식별
  • Pod에서 토큰 덤프 (전체 또는 네임스페이스별)
  • Role, ClusterRole 또는 Subject(사용자, 그룹, 서비스 계정)에 연결된 RoleBindings\ClusterRoleBindings 가져오기
  • 특정 종류('User', 'Group', 'ServiceAccount')의 Subjects 나열
  • RoleBinding 또는 ClusterRoleBinding의 규칙 나열
  • 볼륨 또는 환경 변수를 통해 비밀 데이터에 접근할 수 있는 Pod 표시
  • 클러스터의 부트스트랩 토큰 가져오기
  • CVE 스캔
  • EKS\AKS\GKE 지원

사용법

컨테이너

다음과 같이 실행할 수 있습니다:

root@kitploit:~
./docker_run.sh <kube_config_file>
# 예: ./docker_run.sh ~/.kube/config

이렇게 하면 설정 파일 내의 모든 파일이 컨테이너에 복사되고 컨테이너 내에서 셸이 열립니다.

Docker 이미지를 빌드하려면 다음을 실행하세요:

root@kitploit:~
docker build -t kubiscan .

Python3로 직접 사용

전제 조건:

  • Python 3.6+
  • Pip3
  • Kubernetes Python Client
  • Prettytable
  • openssl (Ubuntu에 내장) - 조인 토큰에만 사용됨

Ubuntu 설치 예시:

root@kitploit:~
apt-get update  
apt-get install -y python3 python3-pip 
pip3 install -r requirements.txt  

kubiscan을 사용하려면 alias kubiscan='python3 /<KubiScan_folder>/KubiScan.py'를 실행하세요.

위의 모든 요구 사항을 설치한 후 다음 두 가지 방법으로 실행할 수 있습니다:

KubeConfig 파일 사용:

~/.kube/config 파일과 관련 인증서에 접근할 수 있는지 확인한 후, 다음을 실행하세요: kubiscan <command> 예: kubiscan -rs는 모든 위험한 subjects (사용자, 서비스 계정, 그룹)를 표시합니다.

ServiceAccount 토큰으로 원격 접속

일부 기능에는 다음 권한이 있는 권한 있는 서비스 계정이 필요합니다:

  • resources: ["roles", "clusterroles", "rolebindings", "clusterrolebindings", "pods", "secrets"] verbs: ["get", "list"]
  • resources: ["pods/exec"] verbs: ["create", "get"]

그러나 대부분의 기능은 그렇지 않으므로 제한된 서비스 계정에 대해 다음 설정을 사용할 수 있습니다: 다음을 실행하여 생성할 수 있습니다:

root@kitploit:~
kubectl apply -f - << EOF
apiVersion: v1
kind: ServiceAccount
metadata:
  name: kubiscan-sa
  namespace: default
---
apiVersion: v1
kind: Secret
type: kubernetes.io/service-account-token
metadata:
  name: kubiscan-sa-secret
  annotations:
    kubernetes.io/service-account.name: kubiscan-sa
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata: 
  name: kubiscan-clusterrolebinding
subjects: 
- kind: ServiceAccount 
  name: kubiscan-sa
  namespace: default
  apiGroup: ""
roleRef: 
  kind: ClusterRole
  name: kubiscan-clusterrole
  apiGroup: ""
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata: 
  name: kubiscan-clusterrole
rules: 
- apiGroups: ["*"]
  resources: ["roles", "clusterroles", "rolebindings", "clusterrolebindings", "pods"]
  verbs: ["get", "list"]
EOF

Kubernetes 1.24부터 서비스 계정 생성 시 시크릿이 생성되지 않습니다. 즉, 시크릿을 직접 생성해야 합니다.
1.24 이전에는 위 명령에서 Secret 객체를 제거하고 서비스 계정의 토큰을 파일에 저장할 수 있습니다:
kubectl get secrets $(kubectl get sa kubiscan-sa -o=jsonpath='{.secrets[0].name}') -o=jsonpath='{.data.token}' | base64 -d > token

1.24부터는 아무것도 변경할 필요 없이 다음과 같이 토큰을 저장합니다:

root@kitploit:~
kubectl get secrets kubiscan-sa-secret -o=jsonpath='{.data.token}' | base64 -d > token  

토큰을 파일에 저장한 후 다음과 같이 사용할 수 있습니다:
python3 ./KubiScan.py -ho <master_ip:master_port> -t /token <command>

예:

root@kitploit:~
alias kubiscan='python3 /<KubiScan_folder>/KubiScan.py'
kubiscan -ho 192.168.21.129:8443 -t /token -rs

인증 기관(ca.crt)을 사용하여 SSL 연결을 확인할 수도 있습니다:

root@kitploit:~
kubiscan -ho <master_ip:master_port> -t /token -c /ca.crt <command>

권한 있는 서비스 계정을 제거하려면 다음 명령을 실행하세요:

root@kitploit:~
kubectl delete clusterroles kubiscan-clusterrole  
kubectl delete clusterrolebindings kubiscan-clusterrolebinding   
kubectl delete sa kubiscan-sa  
kubectl delete secrets kubiscan-sa-secret

예제

모든 예제를 보려면 python3 KubiScan.py -e 또는 컨테이너 내에서 kubiscan -e를 실행하세요.

데모

KubiScan 사용에 대한 간단한 예시:

KubiScan 사용 예시

위험한 Roles YAML

risky_roles.yaml이라는 파일이 있습니다. 이 파일에는 우선순위가 있는 위험한 역할 템플릿이 포함되어 있습니다.
각 역할의 종류가 Role이지만, 이 템플릿은 클러스터의 모든 Role\ClusterRole과 비교됩니다.
각 역할이 클러스터의 역할과 비교될 때, 클러스터의 역할이 위험한 역할의 규칙을 포함하는지 확인합니다. 포함한다면 위험한 것으로 표시됩니다.
우리가 위험하다고 판단한 모든 역할을 추가했지만, 각 사용자는 "위험"의 정의를 다르게 할 수 있으므로 파일을 수정하여 더 위험하다고 생각하는 역할을 추가하거나 제거할 수 있습니다.

❤️ 쇼케이스

  • RSA 2020 발표 "RBAC 권한 악용으로 Kubernetes 클러스터 손상시키기"
  • RSA 2022 발표 "Kubernetes 클러스터 공격 및 방어: Kubesploit vs KubiScan"
  • PortSwigger 기사 "KubiScan: Black Hat 2020에서 선보인 오픈소스 Kubernetes 보안 도구"

라이선스

Copyright (c) 2020 CyberArk Software Ltd. All rights reserved
이 저장소는 GPL-3.0 라이선스에 따라 사용이 허가되었습니다. 자세한 내용은 LICENSE를 참조하세요.

참고 자료:

더 많은 의견, 제안 또는 질문이 있으시면 Eviatar Gerzi (@g3rzi) 및 CyberArk Labs에 연락해 주세요.

도구 다운로드