취약점분석 (Blue Team)/Cloud

[Cloud] Falco (Runtime Security Tool)

poiri3r 2026. 3. 26. 11:30

저번 포스팅에서 클라우드 환경에서 경계가 사라졌고, Host 기반 탐지가 중요해졌지만, 로그기반 도구들의 한계도 확인했었습니다.

따라서 런타임 보안 툴인 Falco에 대해 알아보겠습니다.

 

Falco는 오픈소스 툴로

https://github.com/falcosecurity

 

Falco

Falco is Container Native Runtime Security. Falco has 51 repositories available. Follow their code on GitHub.

github.com

에서 확인할 수 있습니다.

Go와 C++  C언어 다 섞여서  구조가 되어 있습니다.

Falco는 호스트 기반으로 동작을 합니다. 

CLOUD 환경에 맞춰서 설계가 되었지만, Linux.가 있는곳이면 어디든 사용이 가능합니다.

그림이 좀 저퀄리티긴 하지만 .. 전체적인 흐름을 보면 커널공간에서 syscall이 발생하면, 저번 포스팅에서 봤던 eBPF probe가 발생하여 syscall을 후킹하여, 이벤트를 탐지합니다.

그 결과는 BPFMap의 Ring buffer에 저장이 됩니다 (BPF Map이 ring buffer의 상위 개념입니다) 그 뒤 결과가 userspace 공간으로 돌아와 rule과 매칭하고, 알림을 보내서 로그로 보내거나, Falco Sidekick이라는 siem 시스템으로 전송이 됩니다.

내용 자체가 크게 어려운것 없으니 Falco 소스코드를 봐보겠습니다.

 

먼저 eBPF에 대한 코드입니다.

libs/driver/modern_bpf에 있습니다.

 

programs/attached에 들어가면

이렇게 종류에 따른 디스패치가 있습니다.

events/toctou_mitigation/sys_enter_open.bpf.c를  봐보겠습니다.

open() syscall 진입 시점을 후킹해서 파일 접근을 감시하는 코드입니다.

open 실행 시 어떤 파일을 열려고 했는지, 읽기/쓰기/생성 등 어떤 모드로 열었는지 / 파일권한 이 3가지 정보를 후킹해서 가져옵니다

이런 코드들을 통해 커널에 tracepoint에 컨텍스트를 넘겨줍니다.

한번 설치해보도록 하겠습니다.

실습

curl -fsSL https://falco.org/repo/falcosecurity-packages.asc | \
  sudo gpg --dearmor -o /usr/share/keyrings/falco-archive-keyring.gpg

먼저 이 두 명령어를 통해 키링파일을 다운로드 받아야합니다.

echo "deb [signed-by=/usr/share/keyrings/falco-archive-keyring.gpg] \
  https://download.falco.org/packages/deb stable main" | \
  sudo tee /etc/apt/sources.list.d/falcosecurity.list

sudo apt update
sudo apt install -y falco

그 후 이 키링 파일과 다운로드 주소를 apt안에 넣어서 apt가 falco를 알 수 있게 해준 뒤 apt install falco를 해줍니다

드라이버를 설정하고 실행해줍니다.

 

sudo falco를 하면 실행됩니다.

이제 창을 두개를 켜보겠습니다

하나는 ssh로 키와 함께 aws에 접속하고 하나는 sudo falco로 모니터링을 하겠습니다.

바로 동시에 falco에서 로그가 뜹니다.

 

sudo falco &로 뒤에 &를 붙이면 백그라운드에서도 실행 가능합니다.

혹은

sudo systemctl enable falco-modern-bpf
sudo systemctl start falco-modern-bpf

 

로 자동 실행 가능합니다.

이렇게 자동 실행하면 컴퓨터가 켜질 때 자동으로 Falco를 실행하고 끌 수 있습니다.

일단 이번 포스팅은 여기서 마치겠습니다.

다음 포스팅에서는 Falco와 Wazuh manager를 연동하여 테스트해보고, 또 Kubernetes에 대해서도 살펴보겠습니다

 

읽어주셔서 감사합니다