Spacebar Campaigns

FL-002 Falco RBAC Check Log

Log ID:
FL-002
Source:
SB-04 K8s Node
Representative Path:
journalctl -u falco-modern-bpf.service
Collection:
Wazuh agent journald input (/var/ossec/etc/ossec.conf)
Primary Use:
Kubernetes RBAC 권한 확인용 매니페스트 생성 및 SelfSubjectAccessReview 요청 확인

공격 행위 요약

FL-002는 NodeFall 캠페인에서 공격자가 장악한 Pod 내부에서 Kubernetes 권한을 확인하는 행위를 설명하는 로그이다. 공격자는 ServiceAccount 토큰을 확보한 뒤, 자신이 kube-system 네임스페이스에 Pod를 생성할 수 있는지 확인하기 위해 SelfSubjectAccessReview 요청을 준비하고 API 서버로 전송했다.

이 로그는 단순한 파일 접근이나 토큰 경로 탐색이 아니라, 공격자가 현재 권한으로 다음 단계 행위가 가능한지 검증하는 지점을 확인하는 데 사용한다. 특히 check-create.json 생성과 selfsubjectaccessreviews API 요청이 이어지면, 이후 특권 Pod 생성이나 컨테이너 탈출 시도로 연결될 가능성이 높다.

로그 발생 위치

구분위치설명
K8s NodeLinux Kernel syscall컨테이너 내부에서 cat, curl 등의 프로세스 실행과 파일 생성 행위가 syscall로 발생
K8s Nodefalco-modern-bpf.serviceFalco가 syscall을 관찰하고 RBAC 확인 행위와 매칭되면 탐지 이벤트 생성
K8s Nodejournalctl -u falco-modern-bpf.serviceFalco 탐지 이벤트가 systemd journal에 기록되는 대표 확인 위치

수집 방식

구분방식
FalcoeBPF/driver를 통해 Linux Kernel syscall을 관찰하고, Falco rule의 condition과 매칭되면 output 형식의 탐지 이벤트를 생성
journaldFalco가 생성한 탐지 이벤트를 falco-modern-bpf.service의 systemd journal 로그로 기록
Wazuh agent/var/ossec/etc/ossec.conf의 journald 수집 설정을 통해 Falco 서비스 로그를 수집
Wazuh manager수집된 Falco 로그를 /var/ossec/etc/rules/local_rules.xml의 룰과 매칭하여 Wazuh alert로 변환
Wazuh Dashboard생성된 Wazuh alert를 분석자가 확인할 수 있는 대시보드 이벤트로 표시

실제 관측 로그 예시

May 22 01:59:51 ip-10-0-133-48 falco[530]: 01:59:51.523409266: Notice nodefall_rbac_manifest_staged [NF2] RBAC Manifest (user=nextjs proc=bash cmd=bash cwd=/tmp/ file=/tmp/check-create.json container=react-app pod=react-app-685875587f-hv72r ns=default) container_id=283cb33c1045 container_name=react-app container_image_repository=docker.io/library/react2shell-vulnlab-hi-react2shell-tribune container_image_tag=latest k8s_pod_name=react-app-685875587f-hv72r k8s_ns_name=default
May 22 02:00:05 ip-10-0-133-48 falco[530]: 02:00:05.238379653: Error nodefall_rbac_ssar_submitted [NF2] RBAC Check (user=nextjs proc=curl cmd=curl -k -H Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6ImdvZlBXTC1kUlpjUHdocmJZZnNmaHNxaUFtTFJuS3JSM1FtQWxfek5BOTgifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxODEwOTQ3OTE0LCJpYXQiOjE3Nzk0MTE5MTQsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwianRpIjoiNjMyOTFlNGQtMzllMi00ZjAzLWFiOTYtZGJkMTJlYWFlMWVhIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJkZWZhdWx0Iiwibm9kZSI6eyJuYW1lIjoiaXAtMTAtMC0xMzMtNDgiLCJ1aWQiOiIwNGZjMDU0Ny1mYTNkLTRlZGYtOGYxMi04NDU1YWE1MTgzZjkifSwicG9kIjp7Im5hbWUiOiJyZWFjdC1hcHAtNjg1ODc1NTg3Zi1odjcyciIsInVpZCI6IjUyZjMyODI5LWU2YzAtNGJiNS1hNjY0LTM2OTE0MmNlNzdjYSJ9LCJzZXJ2aWNlYWNjb3VudCI6eyJuYW1lIjoiZGVmYXVsdCIsInVpZCI6IjIwNDI1Mjk5LTRjZTQtNGY3ZS05YzBmLTBiZTVhOGE0MDk5ZSJ9LCJ3YXJuYWZ0ZXIiOjE3Nzk0MTU1MjF9LCJuYmYiOjE3Nzk0MTE5MTQsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0OmRlZmF1bHQifQ.MKX4gpO4cG9NW4cey8rMj1QBv4ro4Smv5F6ZLf2E8XcvVhVQHFHdgArYwcv_szaMFM-kJtpDk4Vbzcb5SHR253MNUKY8NSjSYG6pv-dyaZXkw76q3OtolVVQucdnKGUkTNEkn4rbdSgpGnk7tkeseqJbJP5rvndmwpdJ9FPf6gPGTGznFC48LBAhPNStSdXXZG7F-HWx5lDrIEX--ptpnozUGKAsu6GBOki1tiA7yN_wV0TCmgzHD0dqBOx3x4D2JfpNgThqFb6E_BqRDNfy6N6qJL2M5v5RAHwtTZQ7-56UkJGpFydnTIEdfINlEb1x1Vxzd3MNZfQHqEOdWo-fww -H 
Content-Type: application/json -X POST https://kubernetes.default.svc/apis/authorization.k8s.io/v1/selfsubjectaccessreviews -d @check-create.json container=react-app pod=react-app-685875587f-hv72r ns=default) container_id=283cb33c1045 container_name=react-app container_image_repository=docker.io/library/react2shell-vulnlab-hi-react2shell-tribune container_image_tag=latest k8s_pod_name=react-app-685875587f-hv72r k8s_ns_name=default

주요 필드

필드의미예시
evt.timeFalco 탐지 이벤트 발생 시간01:59:51.523409266, 02:00:05.238379653
priorityFalco 탐지 심각도Notice, Error
rule/messageFalco가 탐지한 행위명nodefall_rbac_manifest_staged [NF2] RBAC Manifest, nodefall_rbac_ssar_submitted [NF2] RBAC Check
user행위를 수행한 컨테이너 내부 사용자nextjs
proc실행된 프로세스bash, curl
cmd실행된 명령어 또는 인자bash, curl -k -H Authorization: Bearer <REDACTED> ... selfsubjectaccessreviews -d @check-create.json
cwd명령 실행 위치/tmp/
file생성 또는 참조된 파일/tmp/check-create.json, check-create.json
api_pathKubernetes 권한 확인 요청 대상/apis/authorization.k8s.io/v1/selfsubjectaccessreviews
container_name행위가 발생한 컨테이너 이름react-app
container_id컨테이너 식별자283cb33c1045
container_image_repository컨테이너 이미지 저장소docker.io/library/react2shell-vulnlab-hi-react2shell-tribune
container_image_tag컨테이너 이미지 태그latest
k8s_pod_name행위가 발생한 Kubernetes Podreact-app-685875587f-hv72r
k8s_ns_namePod가 속한 namespacedefault
messagejournald에 기록된 Falco 원본 로그Notice nodefall_rbac_manifest_staged ..., Error nodefall_rbac_ssar_submitted ...

커버 대상 Techniques Used

TechniqueMapping Reason
T1613 Container and Resource Discovery장악한 Pod 내부에서 ServiceAccount 토큰을 이용해 Kubernetes API 서버에 접근하고, SelfSubjectAccessReview 요청을 통해 자신에게 부여된 RBAC 권한을 확인하는 행위를 탐지한다.

탐지 포인트

Technique관찰 행위주요 필드
T1613 Container and Resource Discovery장악한 컨테이너 내부에서 Kubernetes 권한 확인용 SelfSubjectAccessReview 매니페스트가 생성되는지 확인한다. 이후 API 서버 권한 질의로 이어질 수 있는 RBAC 정찰 준비 행위로 본다.rule/message, user, proc, cmd, cwd, file, container_name, k8s_pod_name, k8s_ns_name
T1613 Container and Resource Discoverycurl 또는 kubectl을 통해 Kubernetes API 서버의 selfsubjectaccessreviews 엔드포인트로 요청이 전송되는지 확인한다. 이는 공격자가 현재 토큰으로 어떤 리소스 권한을 가졌는지 검증하는 핵심 행위다.rule/message, proc, cmd, user, container_id, container_name, k8s_pod_name, k8s_ns_name
T1613 Container and Resource Discovery요청 대상이 /apis/authorization.k8s.io/v1/selfsubjectaccessreviews 인지 확인한다. 특히 kube-system 네임스페이스의 pods/create 권한 확인과 연결되면 이후 특권 Pod 생성 및 컨테이너 탈출 시도로 이어질 가능성이 높다.cmd, proc, user, container_name, k8s_pod_name, k8s_ns_name, message