□ BPF Door 백도어란?
1. 개요
BPF Door는 eBPF (Extended Berkeley Packet Filter)를 악용해 리눅스 커널 공간에 상주하며 동작하는 고도화된 백도어입니다. 사용자 공간 유틸리티나 네트워크 포트 기반 C2를 사용하지 않기 때문에 대부분의 전통적 보안 솔루션으로는 탐지가 어렵습니다.
2. 특징
- 메모리 상주(Memory-resident) 및 파일리스(Fileless) 백도어
- 커널 내 BPF 프로그램 삽입 후, 사용자-커널 간 BPF map을 통해 명령 전송
- eBPF를 통해 리눅스 네트워크 스택 하단에서 직접 패킷을 필터링 및 명령 수신
잉카인터넷은 BPFDoor 악성코드 전용 백신을 04월 30일부터 무료로 배포한다고 밝혔다.
잉카인터넷 시큐리티센터 - BPFDoor 대응백신 무료제공
□ BPF는 무엇이고 왜 악용되나?
1. 기능
eBPF는 커널 공간에서 네트워크, 보안, 추적 기능을 수행할 수 있도록 설계된 안전한 가상머신입니다. 커널에 직접 코드를 로드하고 실행할 수 있다는 점에서 성능과 유연성 면에서 매우 뛰어남.
2. 보안 위험성
- 관리자(root) 권한이 있다면, 악의적 eBPF 프로그램을 커널에 주입 가능
- 백도어/루트킷 개발에 유리: 은닉성, 지속성(Persistence), 통신 비노출성
- eBPF Map을 통한 사용자-커널 간 양방향 통신 가능 → 명령 수신기 역할 가능
□ BPF Door 감염 및 설치 과정
1. 감염 단계
1) 초기 침투 (RCE 취약점, Credential Dumping, SSH Brute Force 등)
2) 권한 상승 후, bpf() 또는 ioctl()시스템 콜을 통해 커널에 eBPF 프로그램 로드
3) BPF map 생성 및 사용자 공간 프로그램에서 map을 통해 제어 흐름 제어
2. 감염 시도 은닉 기법
- 파일 시스템 접근 없이 메모리 기반으로만 로딩
- BPF verifier의 통과를 위한 무해한 코드 삽입 후 런타임 변조
- BPF map이 추적되지 않도록 이름 및 키 구조를 난독화
□ 해커가 사용하는 동작 방식 분석
1. 명령 수신 구조
- 일반적인 리버스 쉘/바인드쉘 미사용
- 특정 조건(패킷 내용, Magic Byte 등)에 반응하는 형태의 트리거형 BPF 프로그램
- 수신된 패킷은 커널 내에서 해석되어 map을 통해 사용자 영역으로 전달됨
2. C2 구조
- 포트리스 통신: 무포트(No open port), 무세션 상태
- 암호화된 UDP 패킷 또는 비표준 TCP 헤더를 이용해 명령 수신
※ C2 구조(Command and Control structure)는?
악성코드나 백도어가 감염된 시스템을 원격에서 조종하기 위해 사용하는 통신 체계 입니다. 해커가 좀비 PC 또는 감염된 서버를 실시간으로 명령하고 제어하는데 쓰입니다.
구분 | 설명 |
C2 서버 | 공격자가 운영하는 명령 서버로, 감염된 시스템과 통신 |
봇/에이전트 | 감염된 시스템 내부의 악성코드. 명령을 받아 실행 |
통신 채널 | HTTP, HTTPS, DNS, TCP, eBPF, Telegram API 등 다양한 방식 사용 |
기능 | 명령 전송, 데이터 탈취, 파일 업로드/다운로드, 추가 악성코드 설치, 지속성 유지 등 |
3. 기능
- 명령 실행 ( /bin/sh 직접 호출)
- 시스템 정보 수집 (uname, /proc 등)
- 파일 입출력 (특정 디렉터리 접근)
- 커널 모듈 로드 or 바이패스 수행
□ BPF Door 실행 흐름 및 분석 코드 예시
1. 실행 흐름 구조
1) 사용자 공간에서 map 객체 생성
2) BPF 프로그램을 bpf() syscall로 커널에 로드
3) BPF map을 통해 명령 전달 및 결과 수신
4) 사용자 공간 daemon이 수신 결과 처리
2. 예시 코드 (발췌 형식)
struct bpf_insn prog[] = {
BPF_MOV64_IMM(BPF_REG_0, 0),
BPF_EXIT_INSN()
};
int fd = bpf_prog_load(BPF_PROG_TYPE_SOCKET_FILTER, prog, sizeof(prog));
- 분석 시 핵심은 BPF_PROG_TYPE_SOCKET_FILTER, MAP_TYPE_ARRAY 등 사용 여부
- 최근 발견된 BPF Door 샘플은 map key/value를 XOR 난독화하여 숨김
□ 보안 분석가들은 어떻게 추적했나?
IOC 기반 탐지가 불가능한 환경이므로 행위 기반 분석 필수
1. 분석전략
- 커널 내 map 객체 수 조회 (bpftool map)
- map이 지속적으로 업데이트되거나, 사용자 영역에서 접근되는 패턴 확인
- 비정상적인 bpf() 호출 로그, auditd 또는 eBPF LSM 후킹 로그 분석
2. 사용 도구
- bpftool, bcc, eBPF Tracer, strace, sysdig, Falco, Volatility
- kernel.lockdep, auditctl, kprobes 등을 통한 실시간 감시
□ 모의 분석 환경에서의 실행 구조 재현
1. 환경 구축
- QEMU 기반 리눅스 가상머신 (커널 5.4+ 필수)
- root 권한 보장 및 BPF 기능 활성화
- CONFIG_BPF_SYSCALL=y, CONFIG_BPF_JIT=y 설정 필요
2. 실습 예제
- 단순한 map read/write → 패킷 필터링 → 명령 트리거 → 리버스 분석
- BPF verifier 통과 후 악성 행위가 런타임에 수행되는 구조 검증
□ BPF Door 탐지 방법
1. 탐지 전략
- ps, netstat, lsof 등에 나타나지 않는 이상행위 선별
- BPF map이 비정상적으로 생성되고, 사용자 공간과 주기적 통신 수행하는 패턴
- C2 통신은 L7 탐지가 아닌 L2/L3 패킷 이상 탐지 필요
2. 탐지 툴 및 기법
- bpftool prog show / map show → 비인가 BPF 프로그램 확인
- auditctl -l + syscall=bpf 로그 수집
- eBPF 기반 룰탐지 도구 Falco + Seccomp 설정 권고
□ BPF Door 대응 및 차단 전략
1. 커널 차원 보안 설정
- /proc/sys/kernel/unprivileged_bpf_disabled = 1 설정
- LSM(eBPF LSM) 또는 AppArmor, SELinux 정책 강화
2. 운영 정책
- eBPF 사용 권한을 최소화하거나, 업무 시스템에서는 원천 차단
- 커널 업데이트 및 백도어 내재 가능성 모니터링 지속
3. 침해사고 대응 체계
- 메모리 포렌식, Volatility 사용 후 프로세스 추출
- 사용된 map 키 구조 파악 → 행위 패턴화 → EDR/IDS 연동
□ SKT 해킹사건과 BPF Door 연관성
1. 실제 정황 분석
- SKT 해킹에서 사용된 백도어는 포트가 열려있지 않고, 흔적이 없음
- 방화벽 우회 + 포트리스 명령 실행 → eBPF 기반 가능성 제기됨
2. 분석 포인트
- 리눅스 장비에 BPF map 상주 여부, 비정상 syscall 호출 여부 확인
- 통신 흐름 재조립을 통해 암호화된 트래픽 내 Command 패턴 식별 필요
3. 시사점
- eBPF는 합법 기능이기 때문에, 악용된 경우 탐지/대응이 매우 어려움
- 고급 지속 위협(APT)의 핵심 툴로 활용될 가능성 매우 높음
감사합니다.
[마스턴투자운용] 해킹 사고로 인한 개인정보 유출_2025년 05월 (0) | 2025.05.10 |
---|---|
[CJ올리브네트웍스] 코드사이닝 인증서 탈취 사고_2025년 5월 (1) | 2025.05.07 |
[인투씨엔에스] 동물병원 SMS 발송 시스템 해킹에 의한 고객 휴대폰 번호 유출_2025년 05월 (2) | 2025.05.03 |
[알바몬] 이력서 미리보기 기능 해킹으로 2만건 개인정보 유출_2025년 05월 (1) | 2025.05.02 |
[현대자동차그룹] 해외법인 서버 해킹으로 일부 임직원 개인정보 유출_2025년 04월 (1) | 2025.04.30 |