Spacebar Campaigns

WF-K8S-001 Kubernetes API 정찰 및 권한 오용

Kubernetes API에서 namespace, pod, service, ingress, secret, RBAC, exec, pod 생성 행위가 관측됐을 때 사용하는 행위 기반 IR Workflow다. ServiceAccount 토큰 악용, 과도한 RBAC 권한, privileged pod 생성, 컨테이너 경계 탈출 가능성을 함께 확인한다.

분석 대상 행위:
K8s 리소스 조회, Secret 조회, exec, Pod 생성, RBAC 추가, privileged Pod
관련 캠페인:
SB-04, SB-05
분석 결과물:
API 호출 주체, 권한 범위, 조회/변경 리소스, 경계 탈출 가능성

1. 행위 정의

공격자가 탈취한 ServiceAccount 토큰 또는 관리자 kubeconfig를 이용해 Kubernetes API와 통신하며 클러스터 구조를 파악하고, Secret 조회, exec, Pod 배포, RBAC 변경을 수행하는 행위다. get/list 조회와 create/patch/delete 변경 행위를 구분하고, 동일 주체의 권한 상승 흐름을 시간순으로 연결해야 한다.

2. 관련 Technique

TechniqueName확인 관점
T1613Container and Resource Discoverynamespace, pod, service, ingress, deployment 조회 확인
T1552.007Container and Cloud CredentialsServiceAccount token, kubeconfig, Secret 접근 확인
T1609Container and Resource Discoveryexec를 통한 컨테이너 내부 명령 확인
T1611Escape to Hostprivileged pod, hostPath, node 접근 여부 확인
T1610Deploy Container수집/악성 목적 Pod 생성 여부 확인
T1098Account ManipulationRole/RoleBinding/ServiceAccount 생성 또는 변경 확인

3. 먼저 확인할 로그

환경대표 로그핵심 필드
KubernetesAPI server audit logverb, user, groups, sourceIPs, namespace, resource, subresource
Container Runtimecontainer logs, runtime eventscontainer id, image, command, mount, privileged
Cloud / NodeCloudTrail, instance log, IMDS access 후보role, source, eventName, metadata access
NetworkCNI, firewall, VPC Flow Logspod IP, node IP, destination, port
EDRnode process/network telemetryprocess, command, file path, network destination

4. 빠른 KQL

Secret 조회

kubernetes.audit.verb: ("get" or "list") and kubernetes.audit.objectRef.resource: "secrets"

exec 사용

kubernetes.audit.verb: "create" and kubernetes.audit.objectRef.subresource: "exec"

RBAC 변경

kubernetes.audit.verb: ("create" or "patch" or "update") and kubernetes.audit.objectRef.resource: ("roles" or "rolebindings" or "clusterroles" or "clusterrolebindings" or "serviceaccounts")

privileged pod 후보

kubernetes.audit.verb: "create" and kubernetes.audit.objectRef.resource: "pods" and requestObject.spec.containers.securityContext.privileged: true

5. 분석자가 할 일

  1. API 호출 주체, ServiceAccount, source IP, namespace를 고정한다.
  2. 조회와 변경 행위를 구분해 타임라인을 만든다.
  3. Secret, exec, RBAC, Pod 생성이 같은 주체로 이어졌는지 확인한다.
  4. privileged, hostPath, hostNetwork, node credential 접근 여부를 확인한다.
  5. K8s 이후 CloudTrail, IMDS, Secrets Manager, S3 접근으로 Pivot한다.

6. 판단 기준

구분확인 기준
의심일반 앱 ServiceAccount가 Secret, RBAC, exec, Pod 생성 권한 사용
의심kube-system 또는 운영 namespace에 예외적 Pod 생성
의심privileged pod, hostPath mount, node credential 접근
정상 가능성승인된 배포, 운영 자동화, GitOps/CI/CD 서비스 계정과 일치

7. LLM Prompt Template

너는 SIEM에 연결된 침해사고 분석 보조자다.
다음 조건으로 "Kubernetes API 정찰 및 권한 오용" 정황을 조사하라.

입력:
- 시간 범위:
- 의심 namespace:
- 의심 ServiceAccount 또는 user:
- 의심 Pod/Node:
- 관측된 단서:

요청:
1. Kubernetes API audit, container runtime, node, cloud 로그를 조회하라.
2. API 호출 주체와 리소스 조회/변경 타임라인을 작성하라.
3. Secret 조회, exec, RBAC 변경, privileged pod 생성 여부를 확인하라.
4. 정상 배포 가능성과 권한 오용 가능성을 구분하라.
5. Cloud/Node/Secret 접근 Pivot과 대응 조치를 작성하라.

출력 형식:
- 관측된 사실
- API 호출 타임라인
- 권한 오용 근거
- 영향 namespace/리소스
- 추가 Pivot
- 대응 조치

8. 대응 요약