<aside> <img src="/icons/reorder_green.svg" alt="/icons/reorder_green.svg" width="40px" /> **HomePostsAbout MePagesContact Me**

</aside>

bpf2.jpg

1. 개요


최근 보안 커뮤니티에서 주목 받는 있는 BPFDoor 악성코드는 매우 은밀하고 탐지하기 어려운 백도어로, 리눅스 시스템을 타깃으로 정교하게 설계되었습니다.

이 악성코드의 핵심적인 특징 중 하나는 바로 BPF(Berkeley Packet Filter) 기술을 악용한다는 점인데요.

BPFdoor가 어떻게 동작하는지를 이해하기 위해선, 먼저 ‘BPF’라는 기술이 무엇인지 알아볼 필요가 있습니다.

BPF는 원래 합법적인 네트워크 필터링 기술로, 리눅스 시스템에서 트래픽을 모니터링하고 분석하는 데 널리 사용됩니다. 하지만, 공격자들은 이 기능을 역으로 이용해 백도어 트리거 신호를 감지하고 보안 솔루션을 우회하는 데 활용하고 있는 것이죠.

이번 글에서는 본격적으로 BPFDoor 악성코드의 분석에 들어가기 전에, 우선 BPF와 iptables의 개념과 원리, 그리고 왜 이 기술이 보안 위협의 도구가 될 수 있는지 살펴보겠습니다.

1.1. BPF(Berkely Packet Filter) 란?

  1. 프로그램 작성: 사용자는 C 언어로 BPF 프로그램을 작성합니다.
  2. 컴파일: LLVM/Clang을 사용하여 C 코드를 BPF 바이트코드로 컴파일합니다.
  3. 커널 로딩: bpf() 시스템 콜을 통해 BPF 바이트코드를 커널에 로딩합니다.
  4. 검증 과정: 커널의 BPF Verifier가 프로그램의 안전성을 검증합니다. 무한 루프나 시스템 안정성을 해칠 수 있는 코드는 거부됩니다.
  5. JIT 컴파일: 검증이 완료된 BPF 코드는 JIT(Just-In-Time) 컴파일러를 통해 실제 머신 코드로 변환되어 성능을 최적화합니다.
  6. 실행: 특정 이벤트(네트워크 패킷, 시스템 콜, 함수 호출 등)가 발생하면 BPF 프로그램이 실행됩니다.
  7. 데이터 공유: BPF 맵을 통해 사용자 공간과 커널 공간 간에 데이터를 공유할 수 있습니다.

1.2. iptables 란?