AhnLab EDR을 활용한 BPFDoor 리눅스 악성코드 탐지

AhnLab EDR을 활용한 BPFDoor 리눅스 악성코드 탐지

BPFDoor는 Berkeley Packet Filter (BPF)를 활용한 백도어 악성코드로서 2021년 PWC 사의 위협 보고서를 통해 최초로 공개되었다. [1] 보고서에 따르면 중국 기반의 공격자인 Red Menshen이 중동 및 아시아를 대상으로 한 공격에 수년간 BPFDoor를 사용해 왔으며 최근에는 소스 코드가 공개되기도 하였다.

 

BPFDoor는 BPF를 악용하여 공격자가 매직 패킷을 보내는 방식으로 동작이 가능하다. 즉 일반적인 백도어 유형의 악성코드들과 달리 BPFDoor는 먼저 C&C 서버에 접속하거나 실행 중 특정 포트를 지속적으로 오픈하고 있지 않아도 된다는 장점으로 인해 감염 시스템에 은밀하게 남아있을 수 있다.

 

여기에서는 리눅스 시스템을 대상으로 설치된 백도어 악성코드인 BPFDoor에 대한 간략한 분석 정보와 함께 AhnLab EDR을 활용해 이를 탐지하는 방식을 정리한다.

 

1. Berkeley Packet Filter (BPF)

BPF는 유저 모드 프로그램이 네트워크 필터에 어태치하여 소켓을 통해 들어오는 데이터를 허용하거나 거부할 수 있게 허용해 주는 기술이다. 즉 실행 중인 프로그램이 사용 중인 네트워크 소켓에 패킷 필터링 룰을 등록할 수 있으며 이를 통해 데이터를 읽거나 알림을 받을 수 있다.

 

BPFDoor 또한 BPF를 활용하는데 설치 이후 다음과 같은 필터를 등록한다. 해당 필터는 TCP 프로토콜의 경우 0x5293, UDP 및 ICMP 프로토콜의 Echo Request인 경우 0x7255를 검사하는 기능을 담당한다.

 

Figure 1. BPFDoor가 등록하는 BPF 필터

 

Protocol Magic Packet
TCP 0x5293
UDP 0x7255
ICMP (Echo Request) 0x7255

Table 1. BPF Filter

 

BPFDoor가 설치한 패킷 필터는 수신되는 패킷들을 검사하며 만약 매직 패킷에 매칭될 경우 BPFDoor에 이를 전달한다.

 

 

2. BPFDoor

BPFDoor가 최초로 실행되면 다음과 같은 명령을 이용해 “/dev/shm” 경로에 “kdmtmpflush” 라는 이름으로 자신을 복사한 후 자가 삭제한다. 참고로 /dev/shm 경로는 리눅스에서 메모리 기반의 파일 시스템으로 주로 애플리케이션이 임시 데이터를 저장하거나 처리하는 데 사용된다. 하지만 디스크에 기록되지 않고 메모리 상에서만 운영되는 특징이 있는 /dev/shm 디렉토리는 공격자들에 의해 자주 악용되는 편이며 이는 BPFDoor도 동일하다.

 

/bin/rm -f /dev/shm/kdmtmpflush;
/bin/cp [악성코드] /dev/shm/kdmtmpflush && 
/bin/chmod 755 /dev/shm/kdmtmpflush && 
/dev/shm/kdmtmpflush –init kdmtmpflush &&

/bin/rm -f /dev/shm/kdmtmpflush

 

이후 다음과 같은 문자열들 중 하나를 선택하여 이름을 변경하는데 여기에는 prctl() 함수가 사용된다.

 

Figure 2. 정상 프로세스 위장에 사용되는 문자열들

 

여기까지의 과정에 끝나면 위에서 언급한 BPF 필터를 등록하고 대기한다. 이후 공격자가 매직 패킷이 포함된 명령을 보낼 경우 BPF 필터로부터 이를 전달받아 분기하는데 비밀번호에 따라 Reverse Shell, Bind Shell 그리고 응답이 존재한다. 소스 코드 기준 비밀번호가 “justforfun”인 경우에는 매직 패킷에 포함된 IP/Port에 접속하여 Reverse Shell을 제공하며, “socket”인 경우에는 새로운 포트를 오픈하고 방화벽을 설정하여 공격자로부터 연결을 확립한다. 마지막으로 비밀번호에 매칭되지 않은 경우에는 공격자에게 “1”을 응답하는데 공격자는 이를 통해 감염 여부를 판단할 수 있을 것으로 보인다.

 

Figure 3. 매직 패킷의 구조

 

Figure 4. BPFDoor가 지원하는 명령

 

명령 비밀번호 기능
0 pass (justforfun) Reverse Shell
1 pass2 (socket) Bind Shell
2 N/A “1” 응답

Table 2. BPFDoor가 지원하는 명령

 

참고로 Bind Shell 과정에서는 새로운 포트를 오픈한 후 방화벽을 설정하여 공격자의 IP 주소로부터 전달받은 패킷을 새롭게 오픈한 포트로 리다이렉트한다. 이후 공격자와의 연결이 확립되고 다시 다시 추가했던 방화벽 규칙들을 제거한다.

 

# /sbin/iptables -I INPUT -p tcp -s [공격자 IP] -j ACCEPT
# /sbin/iptables -t nat -A PREROUTING -p tcp -s [공격자 IP] –dport [수신 포트] -j REDIRECT –to-ports [랜덤 포트]
# /sbin/iptables -t nat -D PREROUTING -p tcp -s [공격자 IP] –dport [수신 포트] -j REDIRECT –to-ports [랜덤 포트]
# /sbin/iptables -D INPUT -p tcp -s [공격자 IP] -j ACCEPT

 

3. AhnLab EDR을 활용한 탐지

BPFDoor는 실행 과정에서 자신을 /dev/shm 경로에 복사하는 것이 특징이다. AhnLab EDR은 의심스러운 프로세스가 자신을 /dev/shm 경로에 복사하고 나아가 실행 권한을 부여하는 행위에 대해 다음과 같이 위협으로 탐지하여 관리자가 이를 사전에 인지할 수 있도록 도와준다.

 

Figure 5. 의심스러운 경로에 위치한 파일에 대한 권한 부여 행위 탐지

 

위에서 다룬 바와 같이 BPFDoor는 비밀번호에 매칭되는 명령을 전달받을 경우 특정 포트를 오픈하고 방화벽을 설정하여 공격자로부터 수신되는 패킷들을 리다이렉트한다. AhnLab EDR은 Iptables를 이용해 새로운 규칙을 추가/제거하는 행위 그리고 포트 리다이렉트와 같은 의심스러운 행위들을 주요 행위로 탐지한다.

 

Figure 6. iptables를 이용한 포트 리다이렉트 행위 탐지

 

위의 행위들은 다른 악성코드들에서도 사용할 수 있는 기법들이다. AhnLab EDR은 이외에도 설치된 BPFDoor의 의심스러운 행위들을 활용해 위협으로 탐지하고 있으며 관리자가 이를 인지하고 원인 파악과 적절한 대응을 진행할 수 있도록 도와준다.

 

Figure 7. AhnLab EDR을 활용한 BPFDoor 탐지

 

4. 결론

BPFDoor는 2021년 PWC 사의 위협 보고서를 통해 최초로 공개되었으며 아시아를 포함한 다양한 국가들을 대상으로 한 공격에 사용되고 있다. 통신 공급 업체, 물류, 교육, 정부 등 다양한 피해 업체들이 확인되었으며 중국 기반의 공격자인 Red Menshen이 수년간 BPFDoor를 공격에 활용해 온 것으로 알려져 있다.

 

일반적인 백도어 유형의 악성코드들과 달리 BPF를 악용하는 BPFDoor는 먼저 C&C 서버에 접속하거나 실행 중 의심스러운 포트를 지속적으로 오픈하고 있지 않아도 된다는 장점이 있다. 즉 BPFDoor는 감염된 시스템에 의심스러운 정황 없이 은밀하게 남아있을 수 있으며 추후 공격자가 매직 패킷을 전송하는 방식으로 명령을 실행할 수 있다.

 

AhnLab EDR은 BPFDoor 악성코드의 설치 과정 및 명령 수행 과정에서 확인되는 다양한 의심스러운 행위들을 위협 및 주요 행위로 탐지하여 관리자가 이를 사전에 인지할 수 있도록 도와준다. 관리자는 이를 통해 원인 파악과 적절한 대응을 진행할 수 있으며 공격에 노출된 이후에도 공격 대상이 된 시스템에서 공격자의 증적 자료로서 침해 사고 조사에 필요한 데이터를 확인할 수 있다.

 

V3 진단

Backdoor/Linux.BPFDoor.19772
Backdoor/Linux.BPFDoor.20688
Backdoor/Linux.BPFDoor.2116536
Backdoor/Linux.BPFDoor.2120632
Backdoor/Linux.BPFDoor.2318528
Backdoor/Linux.BPFDoor.2442008
Backdoor/Linux.Bpfdoor.28832
Backdoor/Linux.BPFDoor.29304
Backdoor/Linux.BPFDoor.29324
Backdoor/Linux.BPFDoor.302576
Backdoor/Linux.BPFDoor.31336
Backdoor/Linux.BPFDoor.31456
Backdoor/Linux.BPFDoor.31488
Backdoor/Linux.BPFDoor.34475
Backdoor/Linux.BPFDoor.34752
Backdoor/Linux.BPFDoor.35464
Backdoor/Linux.BPFDoor.36752
Backdoor/Linux.BPFDoor.37536
Backdoor/Linux.BPFDoor.SE321
Backdoor/Linux.BPFDoor.SE322
Backdoor/Linux.BPFDoor.XE244
Trojan/Linux.Bpfdoor.27360

 

EDR 진단

– DefenseEvasion/EDR.Event.M12190
– Behavior/DETECT.Event.M12191
– DefenseEvasion/DETECT.Firewall.M12192
– DefenseEvasion/DETECT.Firewall.M12193
– Execution/EDR.BPFDoor.M12195

 

Tactic Technique
Execution (TA0002) Command and Scripting Interpreter: Unix Shell (T1059.004)
Execution (TA0002) Native API (T1106)
Defense Evasion (TA0005) Masquerading: Masquerade Task or Service (T1036.004)
Defense Evasion (TA0005) Impair Defenses: Disable or Modify System Firewall (T1562.004)
Defense Evasion (TA0005) Indicator Removal on Host: File Deletion (T1070.004)
Defense Evasion (TA0005) Indicator Removal on Host: Timestomp (T1070.006)
Defense Evasion (TA0005) File and Directory Permissions Modification (T1222)
Command and Control (TA0011) Traffic Signaling: Socket Filters (T1205.002)
Command and Control (TA0011) Encrypted Channel (T1573)

MITRE ATT&CK 매핑 정보

 

AhnLab EDR의 행위 기반 탐지 및 대응 기능에 대해 더 알고 싶으시면, 아래 배너를 클릭하여 확인해 보세요.