Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ebpf-container-escape-framework — Linux 5.15+ LTS용 eBPF EDR 전용 감사: 14개 커널 훅, 15개 액션(13개 MITRE 기법), 프로세스 계보, SIEM 내보내기, K8s/Docker 지원. | Kitploit
도구/GitHubGitHub/0xmfbk/ebpf-container-escape-framework
Defensive ToolsContainer SecurityIntrusion DetectionIncident ResponseLog Analysis
GitHub0xmfbk/ebpf-container-escape-framework

ebpf-container-escape-framework

Linux 5.15+ LTS용 eBPF EDR 전용 감사: 14개 커널 훅, 15개 액션(13개 MITRE 기법), 프로세스 계보, SIEM 내보내기, K8s/Docker 지원.

저장소 보기

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트
61141일 전아직 검토되지 않음

eBPF 컨테이너 탈출 탐지 및 런타임 감사 EDR

CI Go Version Kernel Support Memory Footprint License

탐지 및 감사 전용. 비차단 센서. 어떤 BPF 프로그램도 -EPERM을 반환하지 않으며, 어떤 시스템 콜도 차단되지 않습니다. 이 에이전트는 런타임 관측 계층이며, 차단 계층이 아닙니다. 자세한 내용은 docs/SECURITY.md 및 THREAT_MODEL.md를 참조하세요.

eBPF EDR Demo

eBPF(C)와 고효율 Go 데몬으로 구축된 초경량 감사 전용 Linux EDR 에이전트입니다. Linux 커널 5.15 LTS 이상을 대상으로 하며, 제로 할당 핫 패스, 30MB 미만의 메모리 사용량, 그리고 컨테이너/K8s 컨텍스트 심층 보강 기능을 갖추고 있습니다.

✨ 이 프레임워크를 선택하는 이유

  • 🎯 카나리 파일 (제로 오탐): 커널에 보이지 않는 경로를 심습니다. 공격자가 해당 경로(예: K8s 서비스 계정 토큰)에 접근하면 즉시 CRITICAL 경고가 발생합니다.
  • ☁️ K8s 컨텍스트 보강: Kubelet API를 비동기적으로 폴링하여 208바이트 커널 전송 형식을 부풀리지 않고 cgroup_id를 Pod 이름, 네임스페이스, ServiceAccount에 매핑합니다.
  • 🐧 5.15 LTS 호환: Ubuntu 22.04 및 Debian 12에 대한 구조적 지원을 제공하며, 커널 6.12에서 테스트 및 검증되었습니다.
  • ⚡ 고성능: 25,000회 fork 스트레스 테스트에서 유휴 CPU 0.40%, ringbuf 드롭 0을 기록했습니다.

상태: Phase 2.7 완료. 16개 액션에 걸쳐 13개의 MITRE ATT&CK 기법을 지원합니다. 커널 6.12.111에서 종단 간 검증 완료 (82 PASS / 0 FAIL).

커버리지

#액션심각도MITRE훅
1Container_Namespace_UnshareHIGHT1611kprobe/__x64_sys_unshare
2Container_Pivot_Root_EscapeCRITICALT1611kprobe/__x64_sys_pivot_root
3Sensitive_File_AccessHIGHT1003.008tracepoint/sys_enter_openat + open
4Process_ExecutionINFO/MEDIUMT1059.004tracepoint/sys_enter_execve
5Network_ConnectionINFO/HIGHT1071tracepoint/sys_enter_connect
6Process_InjectionHIGHT1055.008tracepoint/sys_enter_ptrace
7Log_TamperingHIGHT1562.001tracepoint/sys_enter_unlinkat
8Ebpf_TamperingHIGHT1562.001tracepoint/sys_enter_bpf
9Perf_Event_OpenMEDIUMT1562.001tracepoint/sys_enter_perf_event_open
10Suspicious_MountHIGHT1611tracepoint/sys_enter_mount
11Namespace_SwitchHIGHT1611tracepoint/sys_enter_setns
12Chroot_EscapeHIGHT1611tracepoint/sys_enter_chroot
13Executable_MemoryMEDIUMT1620tracepoint/sys_enter_mprotect
14Core_Pattern_ModificationCRITICALT1611tracepoint/sys_enter_openat + open
15Cgroup_Release_AgentCRITICALT1611tracepoint/sys_enter_openat + open
16Canary_TriggeredCRITICALT1552.001tracepoint/sys_enter_openat + open

액션 9와 13은 연결되어 있지만, config.toml의 disabled_actions를 통해 기본적으로 커널 측에서 억제됩니다.

아키텍처

커널 훅(14개)은 comm/cgroup 필터, canary_paths O(1) 해시 조회, 그다음 action_enabled 조회로 이어집니다. 이벤트는 208바이트 레코드를 담은 1 MiB ringbuf로 푸시됩니다. 사용자 공간은 고정 풀링 버퍼로 읽어 들여 액션별 토큰 버킷을 적용하고, 프로세스 계보와 cgroup 경로, 그리고 제한된 LRU 캐시의 K8s Pod 메타데이터로 보강한 뒤, Encoder + Sink를 통해 모든 목적지로 라우팅합니다.

전체 세부 사항: docs/ARCHITECTURE.md.

SIEM 통합

ebpf edr은 포맷 + 전송 계층을 통해 모든 SIEM으로 경고를 내보냅니다.

[output]
format = "ecs"        # json | ecs | ocsf | cef | leef
target = "webhook"    # file | stdout | syslog | webhook

[output.webhook]
url         = "https://splunk.internal:8088/services/collector/event"
auth_header = "Splunk ${SPLUNK_HEC_TOKEN}"
splunk_hec  = true

지원되는 전송 방식: file, stdout, syslog (UDP/TCP/TLS), HTTPS webhook. 지원되는 형식: native JSON, ECS 8.11, OCSF 1.3.0, CEF, LEEF 2.0.

Splunk, Elastic, Sentinel, QRadar 및 일반 syslog용 레시피: docs/SIEM_INTEGRATION.md.

[output]이 없으면 동작은 v1.x와 바이트 단위로 동일합니다.

요구 사항

  • Linux Kernel >= 5.15 LTS, CONFIG_DEBUG_INFO_BTF=y (/sys/kernel/btf/vmlinux) 필요
  • Debian 13 (Kernel 6.12)에서 테스트됨. 전체 매트릭스는 docs/KERNEL_COMPATIBILITY.md 참조.
  • clang, gcc, Go >= 1.21, bpftool, libbpf headers
  • CAP_BPF CAP_PERFMON CAP_SYS_ADMIN 권한의 root

빌드

make kernel        # kernel/bpf_program.o
make userspace     # userspace/ebpf_controller
make emulation     # emulation/adversary

검증 (15개 핵심 단계 + 2개 SIEM 단계)

sudo -E make verify

환경 프로브, 빌드, C/Go 구조체 레이아웃 검증, BPF verifier 드라이런, 런타임 스모크, 적대자 에뮬레이션, 성능, 구성 매트릭스, SIGHUP 리로드, 유휴 CPU, 계보 강화, 캐시 경계, 신규 훅, 형식 매트릭스, webhook 전달을 실행합니다.

설치 (systemd)

sudo ./install.sh --dry-run
sudo ./install.sh
sudo ./install.sh --uninstall

/usr/local/sbin/ebpf-edr, /usr/local/lib/ebpf-edr/bpf_program.o, /etc/ebpf-edr/config.toml (기존 파일 보존; 새 기본값은 .new에 위치), /etc/systemd/system/ebpf-edr.service, /etc/logrotate.d/ebpf-edr를 설치합니다.

구성

/etc/ebpf-edr/config.toml의 TOML. 우선순위: CLI > env (EDR_*) > 파일 > 기본값.

mode = "audit"

disabled_actions = [
    "Perf_Event_Open",
    "Executable_Memory",
]

[log]
path        = "/var/log/ebpf_edr.json"
max_bytes   = 52428800
max_backups = 5
level       = "info"

[filter]
comm_allowlist   = []
cgroup_allowlist = []
canary_paths     = ["/var/run/secrets/kubernetes.io/serviceaccount/token"]

[k8s]
enrichment = true

[rates]
events_per_sec = 200
burst          = 400

[container]
cache_max_entries = 5000

[context]
lineage_max_depth  = 16
lineage_cache_size = 20000
cgroup_cache_size  = 5000

리로드: sudo systemctl reload ebpf-edr. mode = "enforce"는 거부됩니다; 이 빌드는 audit 전용입니다.

이벤트 스키마 (v3, 전송 시 208 바이트)

{
  "timestamp": "2026-10-15T23:52:41Z",
  "pid": 1370, "ppid": 1369, "uid": 0,
  "start_time_ns": 180763002635,
  "command": "unix_chkpwd",
  "action": "Sensitive_File_Access",
  "target": "/etc/shadow",
  "severity": "HIGH",
  "mitre_id": "T1003.008",
  "mitre_technique": "OS Credential Dumping: /etc/shadow",
  "cgroup_id": 3874,
  "cgroup_path": "/user.slice/user-0.slice/session-3.scope",
  "runtime": "host",
  "lineage_summary": "systemd > sshd > bash > sudo > unix_chkpwd",
  "lineage": [
    {"pid": 1370, "ppid": 1369, "comm": "unix_chkpwd",
     "exe": "/usr/sbin/unix_chkpwd", "start_time_ns": 180763002635},
    {"pid": 1369, "ppid": 1368, "comm": "sudo",
     "exe": "/usr/bin/sudo", "start_time_ns": 180762998100}
  ]
}

aux_u16, aux_u32, aux_u64 필드는 액션별 컨텍스트를 담습니다.

운영

60초마다 출력되는 헬스 라인:

[health] recv=N written=N dropped=N rate_limited=N parse_err=N
         ver_mismatch=N ringbuf_err=N reloads=N reload_fail=N
         chan=N/4096 lineage_cache=N/20000 lineage_hits=N
         lineage_misses=N cgroup_cache=N/5000
         sink_sent=N sink_failed=N sink_dropped=N sink_retries=N
         sink_queue=N sink_circuit=bool

목표: dropped = 0, ver_mismatch = 0, lineage_cache는 용량 미만.

개발

타깃용도
make kernelBPF 오브젝트 빌드
make userspace데몬 빌드
make emulation공격자 하네스 빌드
make testGo 단위 테스트
make test-race레이스 디텍터를 사용한 Go 테스트
make fuzz타깃별 60초 퍼징
make verify15단계 코어 + 2단계 SIEM 검증
make verify-siem2단계 SIEM 검증만 수행
make ci로컬 CI: gofmt, vet, race, fuzz, verify
make install / uninstall시스템 설치 / 제거
make test-attacks에뮬레이션 커버리지 검증
make clean빌드 산출물 제거

문서

도구 다운로드