KB-001 Kubernetes API Audit Log
Kubernetes API Server audit log에서 리소스 조회, Secret 접근, Pod exec, Pod 생성, RBAC 변경 요청을 확인한다.
ClusterDrain은 침해된 내부 운영 지점에서 Kubernetes API 접근권을 확보한 뒤 ingress-nginx가 구성된 k3s 기반 Kubernetes 클러스터와 prod-platform namespace를 대상으로 전개된 침해 캠페인이다. 공격 그룹 YunTrace는 Kubernetes API를 이용해 namespace, pod, deployment, service, ingress 정보를 조회하여 클러스터 구조와 외부 진입점, 내부 서비스 구성을 파악하고 prod-platform namespace의 Secret 및 운영 리소스를 수집했다. 이후 orders-api Pod 내부 명령 실행, sb05-collector Pod 배포, sb05-reader ServiceAccount 및 RoleBinding 생성을 통해 컨테이너 실행과 namespace 단위 조회 권한 추가를 수행했다. 마지막으로 수집한 Kubernetes 리소스 정보와 실행 결과를 로컬 디렉터리에 스테이징하고 zip archive로 압축한 뒤, AWS CLI를 이용해 private AWS S3 bucket으로 유출했다.
| ID | Name | Description |
|---|---|---|
| G-SB-005 | YunTrace | Kubernetes 기반 클라우드 운영 환경을 대상으로 ClusterDrain 활동을 수행한 공격 그룹이다. |
| Domain | ID | Name | Use | Primary Logs |
|---|---|---|---|---|
| Enterprise | T1613 | Container and Resource Discovery | AWS EC2 기반 Kubernetes 클러스터에서 Kubernetes API를 통해 namespace, Pod, Deployment, Service, Ingress 정보를 조회하여 클러스터 구조, 외부 진입점, 내부 서비스 구성을 파악했다. | KB-001 |
| Enterprise | T1552.007 | Unsecured Credentials: Container API | 업무 서비스 namespace의 Kubernetes Secret 객체를 조회하고, base64로 저장된 data 값을 디코딩하여 DB 접속 정보, API token, registry token 성격의 정보를 확인했다. | KB-001 |
| Enterprise | T1609 | Container Administration Command | Kubernetes API의 exec 기능을 이용해 업무 서비스 Pod 내부에서 명령을 실행하고 컨테이너 내부 사용자, hostname, 환경변수, 파일 시스템 구조, 프로세스 정보를 확인했다. | KB-001 |
| Enterprise | T1610 | Deploy Container | 업무 서비스 namespace에 수집 목적의 Pod를 생성하여 클러스터 내부에서 추가 컨테이너를 실행했다. | KB-001 |
| Enterprise | T1098.006 | Additional Container Cluster Roles | ServiceAccount, Role, RoleBinding을 생성하여 업무 서비스 namespace 내 Secret, Pod, Deployment, ConfigMap, Ingress 조회 권한을 추가했다. | KB-001 |
| Enterprise | T1074.001 | Data Staged: Local Data Staging | Kubernetes API를 통해 수집한 리소스 정보, Secret 조회 결과, 컨테이너 명령 실행 결과, Pod 배포 및 RBAC 변경 결과를 공격자 EC2의 로컬 staging 디렉터리에 모았다. | LX-001 |
| Enterprise | T1560.001 | Archive Collected Data: Archive via Utility | 공격자 EC2의 로컬 staging 디렉터리에 저장된 수집 자료를 압축 유틸리티로 묶어 단일 archive 파일로 만들었다. | LX-001 |
| Enterprise | T1567.002 | Exfiltration Over Web Service: Exfiltration to Cloud Storage | 생성한 archive 파일을 공격자 EC2에서 AWS CLI를 이용해 private S3 bucket으로 업로드하여 클라우드 저장소 기반 유출 흐름을 구성했다. | LX-001, AWS-001 |
T1609 Container Administration Command업무 서비스 Pod 내부에서 exec 요청을 수행했다.T1610 Deploy Container업무 서비스 namespace에 수집 목적의 Pod를 생성했다.T1098.006 Additional Container Cluster RolesServiceAccount, Role, RoleBinding으로 namespace 조회 권한을 추가했다.T1552.007 Unsecured Credentials: Container APIKubernetes Secret 리소스 접근으로 인증 정보를 확인했다.T1613 Container and Resource DiscoveryKubernetes API로 namespace, Pod, Deployment, Service, Ingress를 조회했다.T1074.001 Data Staged: Local Data Staging수집 결과를 공격자 EC2의 staging 디렉터리에 모았다.T1560.001 Archive Collected Data: Archive via Utilitystaging 자료를 archive 파일로 압축했다.T1567.002 Exfiltration to Cloud StorageAWS CLI로 private S3 bucket에 archive를 업로드했다.ClusterDrain 수동 탐지를 위해 Kubernetes audit log, 공격자 EC2 auditd, AWS CloudTrail S3 Data Event를 기준으로 확인할 로그 소스를 정리한다.
Kubernetes API Server audit log에서 리소스 조회, Secret 접근, Pod exec, Pod 생성, RBAC 변경 요청을 확인한다.
침해된 배포/운영 지점의 auditd 로그에서 staging 디렉터리 접근, zip 실행, archive 생성을 확인한다.
CloudTrail S3 Data Event에서 private S3 bucket으로 수행된 PutObject 업로드를 확인한다.
| Log ID | Purpose |
|---|---|
| KB-001 | Kubernetes API Server audit log로 리소스 조회, Secret 접근, Pod exec, Pod 생성, RBAC 변경 요청을 확인한다. |
| LX-001 | 침해된 배포/운영 지점의 Linux auditd 로그로 staging 디렉터리 접근, zip 실행, archive 파일 생성을 확인한다. |
| AWS-001 | AWS CloudTrail S3 Data Event로 private S3 bucket에 대한 PutObject 업로드 이벤트를 확인한다. |
| ID | Name | Description |
|---|---|---|
| S-SB-05-001 | Kubernetes | 컨테이너화된 애플리케이션을 배포, 확장, 운영하기 위한 컨테이너 오케스트레이션 플랫폼이다. |
| S-SB-05-002 | k3s | 경량 Kubernetes 배포판으로, 본 캠페인에서 피해 Kubernetes 클러스터를 구성하는 데 사용되었다. |
| S-SB-05-003 | ingress-nginx | Kubernetes Ingress rule을 처리하는 nginx 기반 Ingress Controller이며, 외부 요청을 내부 Service로 라우팅하는 역할을 한다. |
| S-SB-05-004 | kubectl | Kubernetes API와 상호작용하기 위한 CLI 도구로, 리소스 탐색, Secret 조회, Pod exec, Pod 배포, RBAC 추가에 사용되었다. |
| S-SB-05-005 | AWS CLI | AWS 서비스와 상호작용하기 위한 CLI 도구로, 압축된 수집 자료를 S3 bucket으로 업로드하는 데 사용되었다. |
| S-SB-05-006 | AWS S3 | 객체 스토리지 서비스로, 본 캠페인에서 외부 클라우드 유출 저장소로 사용되었다. |