io_uring·eBPF 기반 리눅스 포스트 익스플oit 툴셋
io_uring과 eBPF를 활용해 리눅스 환경에서 포스트-익스플로잇과 EDR 회피 기법을 연구하기 위한 도구 모음이다.
TL;DR
Furtex는 io_uring과 eBPF를 축으로 삼아 리눅스 환경에서 포스트-익스플로잇과 EDR 회피 기법을 재현하는 도구 모음이다. 프로젝트는 liburing을 쓰지 않고 raw syscall과 SQE/CQE 조작으로 파일·네트워크 작업을 커널 작업큐로 직접 제출하며 BPF 맵·링크 조작, memfd 기반 실행, pidfd를 통한 fd 탈취 등 저수준 기법을 결합해 탐지 표면을 최소화한다. 수십에서 백여 개에 이르는 바이너리가 권한별로 정리되어 Falco 규칙 우회 등 구체적 방어체계 검증을 가능하게 하며 이로 인해 실무적 재현성과 연구 편의성을 제공하는 대신 높은 권한 요구와 법적·윤리적 제약을 동반한다.
주요 기능
- io_uring 기반의 원시 I/O 체인을 통해 OPENAT, READ, WRITE, SOCKET, CONNECT 같은 파일·네트워크 작업을 커널 작업큐로 일괄 제출하고 완료 큐로 결과를 수신함으로써 전통적 sys_enter_* tracepoint와 syscall 훅을 우회한다. 이 방식은 liburing을 사용하지 않고 raw syscall을 직접 호출하는 구현을 채택하며 파일 읽기·쓰기·memfd exec·dns exfil 등의 작업을 하나의 SQE로 묶어 처리한다. 결과적으로 많은 EDR 훅 포인트가 무력화되는 실행 흐름을 제공한다.
- BPF 관련 툴 세트는 로드된 BPF 맵과 프로그램을 열람하고 덤프·수정·핀(pin)·분리(detach)하며 특정 맵을 이용해 Falco 규칙과 같은 EDR 논리를 교란한다. bpf_link_detach, map_poison, map_freeze 같은 유틸리티는 맵 상태를 조작하거나 링크를 다른 noop 프로그램으로 갱신해 후킹 효과를 제거하거나 무력화한다. 이러한 조작은 CAP_BPF 또는 커널 권한을 필요로 하며 libbpf와 clang이 요구된다.
- EDR 전용 도구군은 kprobe/ftrace 정리, auditd 무력화, 로그·dmesg 삭제, 커널 모듈 언로드, PID·포트 은닉 등 탐지·증거 제거와 지속성 획득에 해당하는 작업을 포함한다. 다양한 권한 구분(priv/unpriv)으로 구성되어 있으며 root 권한이 필요한 도구와 비권한 실행 가능한 유틸리티가 분리되어 있다. 도구들은 단일 명령으로 탐지 구성 요소를 스캔하고 특정 방어체계를 중립화하거나 회피하는 실행 흐름을 제공한다.
어떻게 동작하는가
Furtex는 사용자공간 바이너리에서 raw syscall과 io_uring SQE/CQE 조작을 통해 파일·네트워크 작업을 커널 작업큐로 직접 제출하고 결과만 수집하는 흐름을 기본으로 삼는다. 그 위에 BPF 맵 및 BPF-side 프로그램을 열람·수정하거나 링크를 분리(detach)하는 유틸리티를 배치해 EDR의 검사 경로를 차단하거나 규칙 조건을 우회한다. 추가로 memfd 기반 실행, pidfd_getfd로 fd 탈취, AF_PACKET·XDP를 이용한 레이어2 전송 등 다양한 로우레벨 기법을 결합해 탐지 표면을 최소화하는 실행 기법을 구현한다.
해결 문제
이 레포지토리는 리눅스 환경에서 EDR·감사·라이브패치·kprobe 계열 후킹을 연구하고 회피 기법을 재현하는 데 필요한 도구 모음을 제공한다. 다양한 커널 기능(io_uring, eBPF, pidfd, memfd 등)을 이용해 탐지 포인트를 우회하거나 무력화하는 실제적 방법을 재연하며 단일 프로젝트로 수십에서 백여 개의 유틸리티를 모아 실험 편의성을 높인다. 연구자와 레드팀이 권한과 커널 구성에 따른 탐지 한계와 우회 기법을 검증할 수 있도록 설계되어 있다.
지금 주목받는 이유
이 프로젝트는 io_uring과 eBPF라는 커널 레벨 기능을 결합해 탐지 표면을 직접 겨냥하는 도구들을 광범위하게 제공하므로 보안 연구자 사이에서 주목을 받는다. README가 명시한 것처럼 liburing 불사용, raw syscall과 BPF 맵 조작이라는 저수준 접근 방식이 도구의 차별점이며 도구군이 이미 상당한 수량(수십~백)에 달한다는 점이 눈에 띈다. 또한 Falco 규칙 우회처럼 구체적 방어 체계 대상의 실험적 재현을 포함해 실무적 재현성이 높다.
차별점
- liburing이나 고수준 프레임워크를 사용하지 않고 raw syscall 레벨에서 io_uring을 직접 구성하므로 의존성을 줄이고 커널 작업큐의 동작을 정확히 제어할 수 있다. 이 접근은 io_uring의 작업큐 경로가 syscall 테이블과 tracepoint를 우회하는 점을 그대로 활용하며 사용자공간 후킹 회피에 유리한 실행 흐름을 만든다. 결과적으로 기존 liburing 기반 도구가 제공하지 못하는 저수준 제어와 탐지 회피 시나리오를 실험할 수 있다.
- eBPF 맵·프로그램 조작, 링크 리다이렉션, 맵 페이로드 포이즈닝 등 BPF 내부 상태를 직접 건드리는 도구를 포함해 EDR 규칙 엔진(Falco 등)에 특화된 우회 기법까지 수록하였다. Falco 기본 규칙 25개를 대상으로 한 bypass 도구들이 정리되어 있어 보안 규칙의 취약점을 재현하고 방어 개선점을 파악할 수 있다. 이러한 구체적 규칙-대응 매핑은 단순 탐지 회피 예제보다 실무적 가치를 가진다.
- 포괄적 범위의 edrs/ 디렉토리는 권한별로 분리된 약 75개의 바이너리를 제공해 조사·우회·증거 제거·지속성 확보 등 포스트-익스플로잇 전체 워크플로를 단일 레포에서 실험할 수 있게 구성되어 있다. 각 도구는 특정 훅 포인트와 우회 기법을 겨냥하며 서로 연계해 복합적인 우회 시나리오를 구성할 수 있다. 대규모 도구 집합은 연구 반복성과 재현성을 높이는 한편 운영상 위험과 법적 책임을 수반한다.
사용 사례
- 권한이 명확히 허가된 보안 리서치 환경에서 EDR 탐지 경로와 커널후킹 포인트의 회피 가능성을 실험하는 데 활용된다. 도구들은 io_uring 기반 파일·네트워크 작업, BPF 링크 분리, 맵 포이즈닝 등 구체적 우회 흐름을 제공하므로 방어체계의 취약점을 재현하고 개선점을 찾는 데 적합하다. 실험 로그와 조작 사례를 통해 탐지 규칙의 보완 우선순위를 도출할 수 있다.
- 레드팀과 침투테스트에서는 제한된 권한과 커널 버전에 맞춰 특정 탐지 경로를 우회하거나 증거를 지우는 전술을 시험해 실전 공격-방어 시나리오를 구성할 수 있다. 예를 들어 memfd_exec나 proc_mem_inject, af_packet_send와 같은 도구로 파일리스 실행·fd 탈취·레이어2 전송을 재현해 방어 측 대응을 검증할 수 있다. 다만 모든 사용은 명시적 승인 하에서만 수행되어야 한다.
- 디펜스 엔지니어는 이 툴셋을 이용해 실제 탐지 회피 기법을 재현해 로그 수집·BPF 정책·Falco 규칙을 강화하는 테스팅 파이프라인에 통합할 수 있다. 맵 스냅샷·리스토어와 같은 기능을 통해 상태 기반 탐지의 회복력을 시험하고 포렌식 수집의 허점을 파악할 수 있다. 이 과정에서 커널 요구사항과 권한 조건을 함께 검증해야 실무적 의미가 있다.
시작하기
먼저 빌드 툴과 헤더, libbpf·bpftool 등 의존성을 설치한 뒤 소스 루트에서 make 명령으로 바이너리를 빌드해야 한다. Debian/Ubuntu 계열에서는 sudo apt install gcc clang make linux-headers-$(uname -r) libbpf-dev bpftool 명령으로 필요한 패키지를 설치하고, 전체 빌드는 make all로 수행하면 된다. ebpf/ 하위의 BPF-side 코드를 빌드하려면 clang과 libbpf가 필요하며 ebpf 디렉토리에서 make vmlinux로 BTF를 생성해야 한다.
요구사항
- gcc와 make는 모든 userspace 바이너리 빌드에 필요하며 clang과 libbpf-dev는 ebpf/ 하위 BPF 프로그램을 컴파일하고 로드하는 데 필수이다.
- bpftool과 linux-headers-$(uname -r)는 vmlinux.h 생성과 커널 헤더 의존성을 해결하기 위해 필요하며 BTF(CONFIG_DEBUG_INFO_BTF=y)가 활성화된 커널에서 make vmlinux가 작동한다.
- 특정 도구는 CAP_BPF, CAP_PERFMON, CAP_NET_RAW, CAP_NET_ADMIN, CAP_AUDIT_CONTROL 같은 권한을 요구하며 커널 최소 버전(예: 5.4, 5.6, 5.8, 5.9, 5.19)에 따라 기능이 달라진다.
102
Stars
13
Forks
+208
Trending
1
조회수
관련 토론
아직 관련 토론이 없습니다.
댓글
댓글을 작성하려면 로그인이 필요합니다.