공격자는 피해자의 시스템에 침투한 후, 보안 자산에 의한 탐지 및 차단을 피하고 악성 행위를 수행하기 위해 AppArmor, SELinux 등의 기능 비활성화 및 방화벽 규칙 생성 및 삭제 등의 방어 회피(Defense Evasion) 전술을 수행합니다.
공격자가 목표 시스템에 침투하더라도 방어 회피에 성공하지 못한다면, 백신이나 EDR 등의 보안 솔루션으로 인해 공격이 탐지 및 차단되어 정보 탈취, 데이터 훼손, 서비스 중단 등의 최종 목표를 이룰 수 없기 때문입니다.
따라서 공격자들은 방어를 회피하는 기술을 지속적으로 연구하며, 발전시키고 있습니다. MITRE ATT&CK에서도 이를 하나의 공격 전술(Tactic)로 분류해 방어 회피에 사용되는 기술(Technique)을 업데이트 하고 있습니다.
리눅스 운영체제에서는 SELinux(Security-Enhanced Linux)와 AppArmor 같은 보안 기능이 기본적으로 제공되며, 이들은 MAC(Mandatory Access Control)을 적용해 프로세스, 파일 등의 상호작용을 정책에 따라 접근을 제어합니다.
특히 실행 파일의 경로, 권한, 시스템 콜 등을 제어함으로써 백도어나 루트킷, 커널 익스플로잇의 실행을 차단하거나 권한 상승을 방지할 수 있습니다.
따라서 공격자는 보안 기능에 의해 악성코드가 차단되거나 동작하지 않는 상황을 방지하기 위해 SELinux와 AppArmor를 중지 또는 비활성화하는 방법으로, Defense Evasion 기법을 수행합니다.
이름 | AppArmor | SELinux |
운영체제 | Debian, Ubuntu 계열 | Red Hat 계열 (RHEL, CentOS, Fedora 등) |
기능 |
- 경로 기반(파일 경로)에 따라 접근 제어 - 개별 애플리케이션 단위로 프로파일 적용 - 학습 모드(complain) 및 강제 모드(enforce) 지원 |
- 보안 컨텍스트 기반(라벨 기반) 접근 제어 - 커널 수준의 강력한 MAC 정책 - 사용자/프로세스/오브젝트 간 모든 상호작용에 정책 적용 |
중지 및 비활성화 명령 |
systemctl disable apparmor |
setenforce 0 setenforce Permissive |
설정 및 정책 파일 | /etc/apparmor.d/ | /etc/selinux/config |
[표 01] AppArmor, SELinux 특징
WolfsBane은 리눅스 기반 백도어로, 2024년 11월 ESET에 의해 발견되었으며, 코드 유사성을 근거로 중국 APT 그룹인 Gelsemium이 사용하는 것으로 추정되고 있습니다. 해당 악성코드는 여러 단계에 걸쳐 실행되며, 초기 단계에서는 지속성 확보 및 보안 기능 우회 등의 행위를 통해 공격 기반을 마련합니다.
WolfsBane가 root 권한으로 실행될 경우, .X11 이름의 숨겨진 폴더를 생성하고 3개의 추가 악성코드를 드롭합니다. 이후, 드롭한 악성코드를 실행하는 /lib/systemd/system/display-managerd.service 파일을 생성해 지속성을 확보합니다.
다음으로는 /etc/selinux/config 파일의 존재 여부를 확인한 뒤, 해당 파일에서 enforcing 설정 값을 disabled로 변경하여 SELinux 보안 모듈을 비활성화합니다.
Kinsing은 Go언어로 개발된 가상자산 채굴(Coin Miner) 악성코드로, 주로 외부에 노출된 클라우드 환경의 컨테이너 및 서버 취약점을 통해 유포되고 있습니다.
해당 악성코드는 초기 단계에서 실행되는 악성 스크립트를 통해 보안 기능을 비활성화하고, 다른 코인 마이너를 제거하며, 지속성을 확보하는 등의 행위를 통해 안정적인 채굴 환경을 구성합니다.
Kinsing 악성코드는 보안 기능을 우회하고 악성 행위를 제한 없이 수행하기 위해서 service apparmor와 systemctl disable apparmor 명령을 사용해 AppArmor를 비활성화 합니다.
[그림 05] Kinsing 악성코드에 의한 AppArmor 비활성화 이벤트 화면
해당 Technique은 악성코드가 특정 조건에서만 실행되도록 제한하는 기법으로, 분석 환경을 우회하거나 특정 타깃에서만 작동하도록 하는 데 사용됩니다. 예를 들어, hostname이나 whoami, 환경 변수, IP 등을 검사해 공격자가 의도한 조건과 일치하지 않으면 실행을 중단하거나 악성 행위 없이 대기 상태를 유지하도록 합니다.
또한, 악성코드의 중복 실행을 방지하기 위한 수단으로도 Execution Guardrails 기법이 사용됩니다. Windows 환경에서는 공격자들이 뮤텍스(Mutex, 상호배제 객체)를 활용해 악성코드가 다중 실행되지 않도록 제어하기도 하며, 이는 시스템 리소스의 중복 사용을 방지하고 탐지 가능성을 줄이기 위한 방법으로 사용됩니다.
BPFDoor는 BPF(Berkeley Packet Filter)를 악용하는 리눅스 백도어 악성코드로 2021년 5월 PwC Threat Intelligence 보고서를 통해 알려졌습니다.
해당 악성코드는 일반적인 백도어처럼 오픈된 포트를 통해 공격자의 명령을 수신하지 않고, BPF를 사용해 커널 공간(Kernel Space)에서 공격자의 매직 패킷만을 필터링합니다.
매직 패킷은 공격자가 의도적으로 특정 시그니처를 추가한 네트워크 패킷으로, BPFDoor는 매직 패킷을 수신했을 경우에만 동작을 활성화합니다. 이러한 이유로 인해 BPFDoor는 일반적인 보안 솔루션으로는 식별이 어렵다는 특징을 가지고 있습니다.
출처 : Flare.Baek - Analysis of BPFDoor malware targeting Korean telecom companies!
.
.pid 파일은 일반적으로 실행 중인 프로세스의 PID(Process ID)를 저장하는 데 사용되며, 시스템에서는 이를 통해 특정 프로세스의 실행 여부를 판단합니다.
방화벽(Firewall)은 외부로부터의 불필요한 네트워크 접근을 차단하고 시스템을 보호하기 위한 보안 기능으로, 리눅스에서는 iptables, firewalld, ufw 등의 도구를 통해 인바운드 및 아웃바운드 트래픽을 제어할 수 있습니다.
그러나 공격자는 iptables -F 명령어를 사용해 모든 방화벽 규칙을 초기화하거나 systemctl stop firewalld 명령어로 방화벽 서비스를 중지해 방화벽의 차단 없이 C2와의 연결을 수행합니다.
또한, Iptables 규칙을 수정하거나 악의적인 규칙을 추가해 C2와의 통신을 허용하는 방식으로 악용하기도 합니다.
최종적으로 공격자는 Bind Shell을 통해 대상 시스템에 직접 접속할 수 있는 통로를 확보하며, 이를 통해 쉘 명령 실행, 시스템 정보 수집, 파일 다운로드 및 업로드, 계정 탈취 등 다양한 악성 행위를 수행할 수 있습니다.
Genian EDR을 통해 Iptables 규칙을 생성한 프로세스와 행위를 확인할 수 있으며, Iptables 규칙 추가에 사용된 명령어를 통해 어떤 Port 및 IP가 규칙에 추가됐는지 파악할 수 있습니다.
초기 실행되는 악성 스크립트를 통해 환경 구성을 마친 Kinsing 악성코드는 최종적으로 C2에서 코인 마이너 파일을 다운로드해 가상자산 채굴을 수행합니다.
GenianEDR를 통해 ufw 비활성화와 Iptables -F 명령을 통해 설정된 모든 Iptable 규칙을 삭제하는 행위를 확인할 수 있으며, 어떤 프로세스가 해당 행위를 실행했는지 파악해 대응할 수 있습니다.
Genian EDR은 MITRE ATT&CK을 기반으로 다양한 사이버 공격 전술 및 기술을 탐지하고 차단할 수 있습니다. 리눅스 환경에서 공격자들이 보안 도구 비활성화 또는 Iptables를 악용해 방어를 회피하는 행위를 탐지할 수 있으며, 이를 통해 보안 담당자는 위협을 파악하고 신속히 대응할 수 있도록 도와줍니다.
또한., MITRE ATT&CK VIew 기능을 사용해 원하는 프로세스의 행위를 Technique기준으로 한눈에 확인할 수 있으며, 해당 Technique를 클릭해 어떤 행위를 수행했는지 구체적으로 확인할 수 있습니다.
지니언스 GSC(Genians Security Center)에서 위협 분석을 담당하고 있습니다.