[BPF도어①] ‘매직 패킷’으로 보안 솔루션 탐지 무력화
시스템 장악 후 OS 중심부 침투…방화벽·IPS로 감지 불가
[아이티데일리] SK텔레콤(SKT) 해킹 사건을 조사하는 과정에 발견된 ‘BPF도어(BPFDoor)’는 세간의 화제를 모았다. 리눅스(Linux) 운영체제(OS)의 커널(Kernel)에 탑재된 버클리 패킷 필터(Berkeley Packet Filter; BPF)를 악용, 기존 보안 솔루션을 무력화하고 시스템을 은밀히 장악하는 지능적 수법이 적용됐기 때문이다. 기업들은 혹시나 BPF도어에 감염됐을까 우려하고 있다.
BPF도어 공격을 두고 국내 기업의 서버 보안 실태를 꼬집는 목소리도 나왔다. 서비스 안정성에 민감한 나머지 안티바이러스를 비롯한 솔루션 마련에 미진했다는 지적이다. 이러한 우려 속에서 국내외 보안업체들은 BPF도어를 위시한 지능적 위협에 대응하는 방안을 제시하고 나섰다. BPF도어가 만들어진 기술적 원리와 함께, 이처럼 고도화된 사이버공격을 막기 위한 해결책은 무엇인지 살펴봤다.
[BPF도어①] ‘매직 패킷’으로 보안 솔루션 탐지 무력화
[BPF도어②] 리눅스 서버 노린 공격, 대응책 마련 나선 업체들
네트워크 문제 해결에 혁신 가져온 ‘BPF’
BPF는 네트워크 패킷을 효과적으로 필터링하기 위해 고안된 기술이다. 이를 통해 개발자들은 OS의 심장부인 커널에서 패킷을 확인함으로써 네트워크 문제 원인을 빠르게 찾아낼 수 있었다.
1992년경 미국 로렌스 버클리 국립연구소 소속 연구원인 스티븐 맥캔(Steven McCanne)과 밴 제이콥슨(Van Jacobson)이 BPF를 개발했다. 당시 유닉스(Unix) 계열 OS에서도 패킷 필터링 기술을 제공했으나 대부분 성능에 결함이 있었다. 가령 썬OS(SunOS)에서 지원하는 NIT는 필터링 전에 패킷을 일일이 복사해야만 했다. BPF는 패킷이 네트워크에 들어오자마자 필터링하는 등 구조를 변경해 효율성을 높였다.
BPF는 이후 리눅스 OS 커널에 탑재됐다. 개발자들은 이를 네트워크 분석 및 진단 도구의 성능을 높이는 데 활용했다. 특히 BPF는 OSI 7계층 가운데 2계층(데이터 링크)에서 로 소켓(Raw Socket)을 통해 데이터에 접근함으로써 불필요한 작업을 줄여 보다 정교한 모니터링을 가능케 했다. OSI 7계층은 네트워크에서 통신이 일어나는 과정을 일곱 단계로 나눈 개념적 프레임워크다.
리눅스 생태계에서 중요한 위치를 차지하던 BPF는 2014년 커널 내 다른 기능과도 연결되도록 업데이트된 ‘eBPF(extended BPF)’로 발전했다. eBPF는 갈수록 복잡해지는 컴퓨팅 환경에서 네트워크, 보안, 성능 분석 등 폭넓은 역할을 맡는 기능으로 자리했다. 기존에는 네트워크라는 특정 영역만 확인했다면, eBPF는 컴퓨터의 여러 영역을 살펴볼 수 있게 된 것이다. 이때부터 패킷 필터링에 중점을 맞춘 초기 기술은 eBPF와 구분하기 위해 ‘cBPF(classic BPF)’라고 일컬었다.
BPF도어, 지능적 수법으로 솔루션 탐지 회피
BPF도어는 BPF, 그중 초기 버전인 cBPF를 악용한 백도어(Backdoor) 악성코드다. 공격자는 BPF도어로 ‘매직 패킷(Magic Packet)’이라 불리는 조작된 패킷을 수신할 수 있도록 필터링 규칙을 조작한다. 악성코드는 BPF에 은닉하다가 공격자가 보내는 매직 패킷에 담긴 명령을 받은 뒤, 서버를 원격으로 제어할 수 있는 리버스 셸(Reverse Shell)을 열어둔다. 공격자는 이를 통해 본격적으로 악성 활동을 벌일 수 있다.
BPF도어는 은닉성이 높아 탐지가 어렵다. 보통 백도어는 공격자로부터 후속 명령을 전달받기 위해 명령제어(C&C) 서버에 접속하거나 리스닝 포트(Listening Port)를 열어둔 채 대기한다. 이를 역이용해 네트워크 연결 상태 등을 보여주는 [netstat] 명령어로 수상한 포트를 찾고 백도어를 잡는 일이 가능하다. 반면, BPF도어는 정상 프로세스로 위장하는 데다 매직 패킷이 떨어지기 전까지는 움직이지 않기에 감지하기 힘들다.
특히 방화벽, 침입 방지 시스템(IPS) 같은 보안 솔루션마저도 회피한다. 방화벽, IPS 등은 주로 IP 주소(네트워크 계층, Layer 3)와 포트 번호(전송 계층, Layer 4) 기반으로 트래픽을 검사한다. 하지만 BPF는 커널에서 RAW 소켓을 통해 전달되는 패킷을 네트워크·전송 계층보다 앞단인 데이터 링크 계층(Layer 2)에서 필터링한다.
BPF도어는 이를 악용해 매직 패킷을 수신 대기 중인 악성코드로 전달해 탐지를 우회한다. 따라서 방화벽이 이상 트래픽을 먼저 차단한다 해도 백도어를 작동시키는 매직 패킷은 내부로 흘러 들어가 버리는 셈이다.
정교한 공격 위해 시스템 장악 선행 필요
민관합동조사단 1차 조사 결과 발표 후 BPF도어는 화제를 모았다. 국내 이동통신 업계 1위인 SKT를 상대로 일어난 해킹 사건에서 그 원인으로 일찍이 주목받았기 때문이다. KISA에서는 사건 후 며칠 지나지 않아 피해 확산을 막고자 BPF도어 관련 침해 지표(IoC)를 공유했다. 이후 1차 조사 결과에서 가장 먼저 확인된 악성코드 4종도 BPF도어 계열이었다.
전문가들은 BPF도어가 이번 사건을 일으킨 근본 원인은 아닐 것으로 추정했다. BPF도어를 설치하기 위해선 먼저 시스템에 침투해 완전히 장악하는 과정이 필요하다. 해당 악성코드가 설치된 BPF는 OS의 핵심 영역인 커널에서 작동한다. 커널은 시스템 자원을 관리하고 모든 하드웨어 및 소프트웨어와 상호작용하는 만큼, 이에 접근하려면 관리자(root) 권한이 요구된다.
공격자는 BPF도어를 설치하기 위해서 시스템에 들어가 내부를 장악해야 한다. 실제로 민관합동조사단은 2차 조사를 통해 웹셸(Web Shell) 1종을 추가 발견했고, 2022년 6월 15일 악성코드가 설치된 사실도 확인했다. 웹셸은 원격으로 서버를 조작하는 프로그램으로, 주로 웹 서버의 보안 취약점 등을 노려 설치된다. 여러 정황을 고려할 때 공격자는 시간을 두고 SKT 서버를 천천히 공략해 나갔을 가능성이 높다. 다만 정확히 어떤 경로로 일차적인 공격이 이뤄졌는지는 아직 알려진 바가 없다.
SKT 이전부터 잇따른 전 세계 피해 보고
BPF도어는 SKT 해킹 사건 이전부터 아시아, 중동 지역을 대상으로 한 공격에서 몇 차례 발견됐다. 트렌드마이크로는 지난 4월 발간한 보고서를 통해 지난해 7월과 12월 국내 통신사에 BPF도어 공격이 있었다고 공개했다. 이 밖에 홍콩, 말레이시아, 미얀마, 이집트도 통신, 금융, 소매 분야에서 BPF도어로 인한 피해가 일어났다. 트렌드마이크로는 2023년에도 BPF도어의 작동 방식과 위험성을 알리는 보고서를 발표했다.
PwC에서도 지난 2021년 연간 보고서를 통해 중국 기반 지능형 지속 위협(APT) 그룹 ‘레드 멘션(Red Menshen)’이 아시아, 중동 지역을 대상으로 BPF도어 공격을 시도한 사실을 알렸다. 특히 레드 멘션은 통신 서비스 제공업체들 표적으로 삼고 BPF도어를 배포했다.
안랩에서는 2024년 10월 자사 위협 인텔리전스 전문 조직인 ASEC(AhnLab SEcurity intelligene Center)가 운영하는 블로그를 통해 안랩 EDR를 이용한 BPF도어 탐지 방법을 공유했다. 또한 탐지 정보를 바탕으로 대응 시나리오를 정립하고, 시그니처와 위협 인텔리전스를 자사 솔루션에 반영해 대응 체계를 준비했다.
카스퍼스키 측은 2020년경부터 ‘NIDUPICK’이라는 내부 코드명으로 BPF도어를 탐지, 분석 및 추적했다. 지난 5월에는 SSL 암호화 채널을 통한 명령어 통신, 신규 매직 패킷 포맷 등 기능이 고도화된 새로운 변종을 포착했다. 이 같은 변화로 해당 변종을 기존 탐지 시스템으로는 식별할 수 없다고 카스퍼스키 측은 설명했다.