요약
-
BPFDoor는 유닉스·리눅스 기반의 백도어 악성코드로, 강력한 은닉 기능이 특징이며 APT 공격에 주로 사용됨.
-
해당 악성코드는 중국 해킹그룹인 레드멘션(Red Menshen)에서 활용하고 있으며,
미국 통신·IT기업, 아시아 통신기업·정부기관을 공격한 악성코드로 알려짐. -
일반적인 서버 안티바이러스 및 EDR 솔루션으로 검출 및 격리할 수 있음.
-
그러나 운영 서버는 안정성 문제로 인해 안티바이러스 솔루션 설치율이 낮은 편임.
────────────────────────────────────────────────────────────
1. 개요
중국과 연관된 것으로 추정되는 공격자 ‘Red Menshen’은
BPFDoor라는 맞춤형 백도어를 활용하여
중동 및 아시아 지역의 통신, 정부, 교육, 물류 분야를 표적으로 삼은 공격 활동을 전개하고 있다.
버클리 패킷 필터(BPF)는 운영체제 커널 수준에서
네트워크 패킷을 필터링하고 캡처할 수 있도록 지원하는 메커니즘이다.
사용자 공간 프로그램은 필터 조건을 정의해 원하는 패킷만 수신할 수 있으며,
이를 통해 시스템 성능과 분석 효율성을 높일 수 있다.
리눅스를 포함한 대부분의 유닉스 계열 시스템에서 사용되며,
이를 확장한 eBPF는 보안 정책 적용, 커널 트레이싱 등 다양한 용도로 활용된다.
BPFDoor는 BPF를 악용해 특정한 매직 패킷을 감지하고 외부로부터 은밀하게 명령을 수신한다.
별도의 리슨 포트를 열지 않기 때문에 일반적인 보안 모니터링 도구로는 탐지하기 어려우며,
장기간 시스템 내에 숨어 활동할 수 있다.
실행 시 프로세스 이름을 정상적인 시스템 데몬처럼 위장해 사용자 눈에 잘 띄지 않으며,
전반적으로 은폐와 지속성을 극대화하는 방식으로 설계되어 있다.
────────────────────────────────────────────────────────────
2. 정보
2.1 침해지표
2.2 MITRE ATT&CK
────────────────────────────────────────────────────────────
3. 분석
BPFDoor는 리눅스 환경에서 BPF 필터링 메커니즘을 활용해
리슨 포트 없이 특정 매직 패킷을 감지하고 명령을 실행하는 백도어이다.
프로세스 이름 위장, 메모리 기반 실행, 실행 후 자가 삭제 기법을 함께 사용하여
탐지 및 분석을 극도로 어렵게 만든다.
3.1 실행 은폐 메커니즘
3.1.1 디스크 흔적 최소화 / 자가 삭제
BPFDoor는 /dev/shm/kdmtmpflush
경로에 자신을 복사하여 메모리 기반 파일 시스템에서 실행된다.
이는 디스크 흔적을 최소화하며, ‘kdmtmpflush’라는 이름은 실제 커널 유틸리티와 유사하여
정상 캐시 관리 작업처럼 위장한다.
[그림 1] 파일 복사 & 실행 & 자가 삭제
[표 1] 명령어 표
────────────────────────────────────────────────────────────
3.1.2 정상적인 시스템 데몬 프로세스로 위장
또 다른 은폐 기능으로 실행 시 프로세스 이름을 랜덤하게 변경한다.
/sbin/udevd, dbus-daemon –system 등
일반적인 리눅스 시스템 데몬 이름을 무작위로 선택하여 프로세스 명으로 사용한다.
[그림 2] 프로세스 명 은폐 코드
────────────────────────────────────────────────────────────
3.1.3 RC4 기반 통신 암호화
BPFDoor는 외부 명령 수신 및 통신 시,
RC4 스트림 암호화 알고리즘을 이용해 패킷 내용을 암호화 및 복호화한다.
RC4는 키 스트림을 기반으로 데이터를 바이트 단위로 XOR 처리하는 방식으로,
구현이 단순하고 빠르다는 장점이 있어 오래전부터 많이 사용되어 왔다.
명령 전송을 네트워크 보안 장비 로그 상에서 쉽게 식별하지 못하게 하며,
네트워크 기반 탐지 우회를 위한 은폐 수단으로 작동한다.
[그림 3] RC4 전송 처리
────────────────────────────────────────────────────────────
3.1.4 세션 분리 및 데몬화
BPFDoor는 자신을 사용자 터미널과 분리된 독립 세션으로 전환한다.
마치 운영체제 내부의 정상 데몬처럼 조용히 백그라운드에서 동작한다.
이로 인해 해당 프로세스는 정상적인 시스템 데몬과 구분이 어려워지며
사용자나 관리자에 의한 식별을 어렵게 만든다.
셸 실행 시에는 가짜 터미널을 생성해 주 세션으로 설정하고 기존 연결 흔적을 제거하여,
보안 솔루션이나 행위 기반 탐지를 우회할 수 있도록 자신을 은폐한다.
이런 세션 분리 및 데몬화는 타 악성코드에서 사용되었던 일반적인 은닉 기법 중 하나이다.
[그림 4] 세션 분리 데몬화 코드
────────────────────────────────────────────────────────────
3.2 BPF 필터 수신 루프
일반적인 백도어는 특정 포트에서 요청을 기다린다.
따라서 포트 스캔을 통해서 백도어 동작 여부 식별이 가능했다.
BPFDoor는 운영체제의 패킷 필터 기능(BPF)을 이용해 특별한 조건의 네트워크 패킷만 골라낸다.
이렇게 하면 외부에서는 BPFDoor가 포트를 열고 있지 않은 것처럼 보이므로
포트 스캔을 통한 악성코드 검출을 무력화한다.
────────────────────────────────────────────────────────────
3.2.1 패킷 필터(BPF) 설정
특정한 조건을 만족하는 패킷만 선택하도록 BPF(Bytecode 형태의 필터)를 설정한다.
OS 수준에서 이더넷 프레임을 직접 수신할 수 있는 RAW 소켓을 만들고,
여기에 위에서 정의한 필터를 적용한다.
[그림 5] 패킷 필터 설정
────────────────────────────────────────────────────────────
3.2.2 프로토콜별 패킷 분석 및 매직 패킷 오프셋 추출
수신된 패킷을 분석하여 magic_packet 의 오프셋을 찾는다.
magic_packet은 BPFDoor 악성코드가 감염된 서버를 제어할 명령어가 포함된 패킷으로
명령어 앞에 특정 문자열 (magic bytes)이 포함되어 있기에 매직 패킷이라 한다.
[그림 6] 수신된 패킷 형식 확인
[그림 7] 매직 패킷 구조
[표 2] 매직 패킷 구조
────────────────────────────────────────────────────────────
3.2.3 매직 패킷 명령 수행
A. Reverse Shell 연결 시도 (“justforfun”)
BPFDoor의 magic_packet은
“justforfun”과 “socket”의 대표적인 2가지 명령어 문자열을 가지고 있으며
해당 명령어에 따른 명령을 수행한다.
[그림 8] 매직 패킷 명령 수행 코드
A. Reverse Shell 연결 시도
“justforfun” 명령 수신 시,
try_link() 함수를 통해 magic_packet에 공격자가 지정한 IP와 port로 TCP 연결을 시도한다.
공격자의 IP와 Port로 TCP 연결이 성립되면,
shell() 함수를 통해 즉시 셸이 생성되어 명령 실행 및 결과 송신이 가능해진다.
[그림 9] 문자열이 “justforfun”일 때 동작
[그림 10] Reverse shell 실행
────────────────────────────────────────────────────────────
B. Host 서버 방화벽 규칙 적용 (“socket”)
“socket” 명령 수신 시 공격자가 지정한 IP와 Port를 대상으로
iptables 규칙을 설정해 연결을 허용한 뒤,
셸 수신을 위한 리스너 소켓을 열어 리버스 셸 접속을 대기한다.
[그림 11] 문자열이 “socket” 일때 동작
공격자의 요청을 수신하기 위한 환경을 구성하기 위해
4개의 iptables 명령 포맷 문자열을 사용한다.
[그림 12] iptables 명령 포맷 문자열
이 명령들은 각각 다음과 같은 목적을 가진다:
[그림 13] 공격자 명령 수신을 위한 포트 리다이렉션 및 셸 실행
────────────────────────────────────────────────────────────
C. 생존 신호(beacon) 전송
공격자가 지정한 IP와 Port로 생존 신호(beacon)인
1바이트 크기의 UDP 패킷을 전송하여 후속 연결을 유도하는 트리거 역할을 수행한다.
[그림 14] UDP 비콘 전송
────────────────────────────────────────────────────────────
4. 서버 안티바이러스(Server-i AV)의 탐지 및 대응
[그림 15] Server-i AV 탐지 화면
소만사 Server-i의 리눅스 안티바이러스 탐지 엔진은
BPFDoor 악성코드가 생성될 때 실시간 탐지 및 파일 격리를 수행한다.
타사의 서버 보안 솔루션도 유사한 방식으로 탐지 및 대응이 가능할 것으로 예측된다.