Tracee - eBPF 런타임 보안 & 포렌식 치트시트
Tracee는 Aqua Security의 오픈소스 eBPF 기반 런타임 보안 및 포렌식 도구입니다. eBPF를 사용하여 운영체제 이벤트(시스템콜, 프로세스 및 네트워크 활동, 파일 작업)를 커널 수준에서 추적하며, 행동 서명 라이브러리를 적용하여 런타임에 의심스럽거나 악의적인 활동을 탐지합니다. Linux 호스트, 컨테이너, Kubernetes용으로 구축되었으며, eBPF 런타임 보안 분야에서 Falco 및 Tetragon의 좋은 보완 도구입니다.
요구 사항
- Linux 커널 ≥ 5.4 (BTF / CO-RE 지원 권장; 대부분의 최신 배포판)
- Root / 특권 컨테이너 (eBPF에는 높은 권한 필요)
설치
| 방법 | 명령어 |
|---|
| Docker (가장 빠름) | docker run --name tracee -it --rm --pid=host --cgroupns=host --privileged -v /etc/os-release:/etc/os-release-host:ro aquasec/tracee:latest |
| Kubernetes (Helm) | helm repo add aqua https://aquasecurity.github.io/helm-charts/ && helm install tracee aqua/tracee -n tracee --create-namespace |
| Binary | GitHub Releases에서 다운로드하고 sudo ./tracee 실행 |
| 확인 | tracee version |
기본 사용법
| 명령어 | 설명 |
|---|
sudo tracee | 기본 탐지 서명으로 추적 시작 |
sudo tracee --output json | 이벤트를 JSON으로 내보내기 |
sudo tracee --scope comm=nginx | 특정 프로세스만 추적 |
sudo tracee --events execve,open | 특정 이벤트만 추적 |
tracee --help | 전체 옵션 목록 |
이벤트 선택 (--events)
| 선택자 | 일치 대상 |
|---|
--events execve | 프로세스 실행 |
--events open,openat | 파일 열기 |
--events net_packet_dns | DNS 트래픽 |
--events security_file_open | LSM 파일 열기 후크 |
--events 'fs' | 전체 이벤트 세트 (파일시스템) |
--events 'signatures' | 서명 탐지만 |
--events execve.args.pathname=/usr/bin/* | 인수 값으로 필터링 |
범위 필터링 (--scope)
| 선택자 | 일치 대상 |
|---|
--scope comm=bash | 명령 이름으로 |
--scope pid=1234 | PID로 |
--scope container | 컨테이너 이벤트만 |
--scope container=new | 새로 시작된 컨테이너만 |
--scope uid=0 | Root 활동 |
--scope pid=new | 새로 생성된 프로세스 |
--scope not-container | 호스트 전용 이벤트 |
탐지 서명
Tracee는 알려진 공격 기법을 감지하는 행동 서명(Go 및 Rego)을 포함합니다.
| 탐지 예 | 기법 |
|---|
| 안티 디버깅 | ptrace를 통한 회피 |
| 동적 코드 로딩 | 메모리 기반 페이로드 |
| LD_PRELOAD | 라이브러리 주입 |
| 권한 상승 | setuid/권한 악용 |
| 컨테이너 탈출 | 네임스페이스/호스트 접근 |
| 커널 모듈 로딩 | rootkit 설치 |
| 명령어 | 설명 |
|---|
sudo tracee --events signatures | 탐지 서명만 실행 |
--rego- 플래그 | 사용자 정의 Rego 서명 로드 |
--signatures-dir DIR | 디렉터리에서 서명 로드 |
출력 & 캡처
| 옵션 | 설명 |
|---|
--output json | JSON 이벤트 (SIEM으로 파이프) |
--output table | 인간이 읽을 수 있는 표 |
--output gotemplate=FILE.tmpl | 사용자 정의 템플릿 출력 |
--capture exec | 실행된 바이너리를 디스크에 캡처 |
--capture mem | 메모리 영역 캡처 (포렌식) |
--capture net | 이벤트별 네트워크 트래픽 캡처 |
--output forward:tcp://host:port | 이벤트를 수집기로 전달 |
일반적인 워크플로우
# 컨테이너 활동만 감시, SIEM용 JSON
sudo tracee --scope container --output json | tee tracee-events.json
# 위협 탐지만 (서명), 표 출력
sudo tracee --events signatures --output table
# 특정 프로세스 조사 및 실행된 바이너리 캡처
sudo tracee --scope comm=suspicious --capture exec
# 새 컨테이너가 만든 DNS 발굴 (유출 사냥)
sudo tracee --scope container=new --events net_packet_dns
Tracee vs Falco vs Tetragon
| 측면 | Tracee | Falco | Tetragon |
|---|
| 엔진 | eBPF (Aqua) | eBPF (CNCF) | eBPF (Cilium) |
| 초점 | 포렌식 + 탐지 + 캡처 | 알림/탐지 | 관찰 + 커널 내 강제 |
| 강제 | 탐지 중심 | 탐지 | 예 (kill/override) |
| 포렌식 캡처 | 강함 (exec/mem/net) | 제한적 | 이벤트 중심 |
| 최적 사용 | 위협 포렌식 & 캡처 | 성숙한 규칙 라이브러리 | 방지 + 깊은 가시성 |
리소스