계약자를 통한 eBPF 루트킷: 리눅스에서 숨겨진 데이터베이스 유출 탐지하기
우분투를 실행하는 데이터베이스 서버가 한 달 동안 인바운드 트래픽보다 5~10% 더 많은 아웃바운드 트래픽을 생성하고 있었습니다. 로그와 프로세스는 깨끗해 보였고, 공급자는 정상적인 네트워크 운영을 확인했습니다. 감사 결과, DBA 계약자의 노트북이 해킹되어 eBPF 루트킷이 배포된 것으로 밝혀졌습니다. 공격자는 공급망을 통해 프로세스를 숨기고 PII 데이터를 C2 서버로 유출하는 프로그램을 설치했습니다.
첫 번째 단서: 의심스러운 iptables 규칙
/etc/iptables/rules.v4에서 계약자의 VPN 풀 IP로 아웃바운드 TCP 연결을 허용하는 규칙이 발견되었습니다:
-A OUTPUT -d xxx.xxx.xxx.xxx -p tcp --dport YYYY -j ACCEPT
이 규칙은 기본 구성에 포함되지 않았습니다. 이 규칙은 압축된 데이터베이스 테이블 덤프를 은밀하게 전송할 수 있도록 했습니다. /var/log/auth.log 분석 결과, 동일한 풀의 IP에서 계약자의 SSH 키 로그인이 확인되었습니다. 작업 후 서버 접근 권한은 취소되었지만 VPN은 계속 활성 상태였습니다.
/proc의 불일치가 루트킷을 지시
ps auxf 명령어는 표준 프로세스를 표시했지만, /proc의 디렉토리 수가 PID 수보다 하나 더 많았습니다. 이는 getdents 및 getdents64 시스템 호출이 가로채졌음을 나타냅니다. /proc/modules 확인 및 LiveCD를 사용한 커널 메모리 분석 결과 LKM 모듈은 발견되지 않았습니다—목록은 기준선과 일치했습니다.
eBPF를 기반으로 한 루트킷: 구현 세부사항
bpftool 유틸리티는 kprobe 지점 __x64_sys_getdents 및 __x64_sys_kill에 연결된 eBPF 프로그램을 발견했습니다. 추가 소켓 프로그램이 트래픽을 리디렉션했습니다. /usr/share/man/man3/에서 systemd-snoop라는 바이너리가 발견되었으며, libbpf를 통해 eBPF를 로드했습니다.
악성코드는 밤에 PII 테이블을 덤프하고 압축하여 C2 서버로 전송했습니다. eBPF는 bpf() 시스템 호출을 통해 로드되기 때문에 모듈 목록에 표시되지 않습니다. 탐지에는 bpftool에 대한 루트 권한 또는 커널 메모리 분석이 필요합니다. 이 경우 객체는 숨겨지지 않았습니다.
공격 시나리오
- 계약자의 노트북이 해킹됨.
- SSH 키를 통한 예정된 작업 중—서버에 로그인.
- iptables 규칙 추가 및
systemd-snoop설치. - eBPF 프록시를 통한 야간 데이터 유출.
eBPF 루트킷 탐지 방법
표준 AIDE는 효과적이지 않습니다—eBPF는 /lib/modules의 파일을 수정하지 않습니다. 권장 접근 방식:
- SIEM으로 전달되는
bpftool prog list및bpftool map list의 주기적 수집. auditd또는ebpf_exporter를 통한bpf()시스템 호출 감사.- Falco, Tracee 또는 Osquery를 사용한 비정상적인 eBPF 활동 모니터링.
- 트래픽 불일치에 대한 NetFlow 분석 및 GeoIP와의 상관관계.
계약자로부터 공급망 보호
인증 및 접근
- 키가 있어도 SSH에 필수 2FA.
- 최소 권한: 루트 접근 없음, 세션 로깅이 있는 베스천 호스트를 통해서만.
- 6개월마다 키 순환, 종료 시 24시간 내 취소.
- 자동 연결 해제가 있는 임시 VPN 세션.
인프라
- 방화벽을 위한 GitOps: Ansible과 Git 제어를 통한 iptables 변경만.
- 로그, NetFlow 및 GeoIP 상관관계를 위한 중앙 집중식 ELK/Graylog + SIEM.
핵심 요약
- eBPF 루트킷은 프로세스를 숨기고,
/proc/modules에 표시되지 않으며,bpftool을 통해 탐지됩니다. - 계약자를 통한 공격: 노트북 해킹 + 지속적인 VPN 접근.
- 증상: 트래픽 비대칭,
/proc의 PID 불일치. - 보호: 2FA, 베스천 호스트,
bpf()감사, NetFlow 모니터링. - 도구: 런타임 탐지를 위한 Falco, Tracee, ebpf_exporter.
이 사례는 사소한 트래픽 이상이 1년간의 데이터 유출을 발견하게 한 방법을 보여줍니다. 사전 예방적 eBPF 모니터링과 엄격한 접근 제어 구현으로 외부 팀의 위험을 최소화할 수 있습니다.
— Editorial Team
아직 댓글이 없습니다.