오늘은 Falco에 대해 알아보기 전에 BPF와 eBPF에 대해서 짧게 알아보도록 하겠습니다.
BPF는 1992년에 만들어진 기술로, 커널 안에서 패킷을 필터링 하기 위해 설계되었습니다.
개념이 조금 많이 복잡해서 최대한 간단하게만 설명을 해보자면, 쉽게 커널 안에서 내 코드를 실행할 수 있게 해주는 방법이라고 생각을 하면 됩니다.

일단 간단하게 user space먼저 살펴보겠습니다.
맨처음에 C언어로 BPF 코드를 작성한 뒤, 컴파일 하면 BPF 바이트 코드가 나오게 됩니다.
이건 저희가 작성을 할 수 있는 부분이고 userspace에서 동작합니다.

바이트코드가 나온 이후 kernal space에서의 동작을 확인해보겠습니다
아까의 바이트 코드를 커널에서 먼저 검사합니다.
이때의 Verifer는 명령어 수와 루프만 검사합니다
그 후는 JIT라는 컴파일러로 2차적으로 컴파일을 해, 내부 CPU에 맞는 native machincode로 변환합니다.
그리고나서, 훅 포인트에 attach를 해주는데, 기존 bpf의 경우에는 네트워크 훅에만 attach가 가능해서, 패킷 필터링 역할만 수행 가능했습니다.
이때 Classic BPF의 반환값은 정수 하나 (0 or 1)입니다. 0또는 1을 반환하면 그 값을 보고 커널에서 패킷을 userspace의 TCPdump와 같은 툴에 복사를 할지 안할지 결정합니다.
다음은 eBPF입니다

아까와 비슷해보이지만 조금 많은 발전이 있었습니다.
먼저 바이트 코드 검사도 아까는 명령어 수와 루프만 검사했던 것에 비교해서, 모든 실행 경로를 정적 분석하여 크래시를 막습니다.
다음으로 후킹 attach도 네트워크 뿐만 아니라 syscall, 커널 함수, 네트워크, 유저스페이스 함수(uprobe) 등 어디에나 붙일 수 있습니다.
또한 기존엔 BPF Map이 없어서, event에 대한 기록을 남길 수 없었는데, 현대의 eBPF는 커널로부터 r/w권한을 받은 BPF Map이 존재하여, userspace에서 접근이 가능하고, key-value의 형태로 로그들을 기록하고 저장할 수 있습니다.
일단 이번 포스팅은 Falco에 대해 알아보기 전 eBPF에 대해 간단하게 알아보는 것이 었기에, 따로 예제 코드나 실습을 진행하진 않고 여기서 포스팅을 마치겠습니다.
읽어주셔서 감사합니다
'취약점분석 (Blue Team) > Network' 카테고리의 다른 글
| [Network] ELK Stack (Elastic Stack) (0) | 2026.04.30 |
|---|---|
| [Network] Wazuh Manager 로그 분석 (3월 ~ 4월) (0) | 2026.04.29 |
| [Network] Wazuh 룰 설정 및 모니터링 (0) | 2026.03.23 |
| [Network] SIEM & Wazuh 설치 실습 (0) | 2026.03.22 |
| [Network] 방화벽 & WAF 및 ufw 실습 ( Firewall ) (0) | 2026.03.17 |