AhnLab EDR을 활용한 리눅스 지속성 유지 기법 탐지 (1)

AhnLab EDR을 활용한 리눅스 지속성 유지 기법 탐지 (1)

지속성 유지 기법은 공격자가 시스템에 침투한 이후 지속적인 활동을 유지하기 위해 사용하는 기법이다. 한 번의 침해로 모든 목표를 달성하기 어려울 수 있기 때문에 공격자는 시스템에 다시 접근할 수 있는 방식을 보장하길 원할 수 있다. 이에 따라 악성코드가 시스템의 재부팅 이후에도 동작할 수 있도록 다양한 방식들을 통해 설정하거나 백도어 계정을 설치하는 등의 방식을 사용한다.

 

일반적으로 윈도우 환경에서는 Run 키나 시작 프로그램, 작업 스케줄러, 서비스 등을 이용하는 방식이 자주 사용된다. 물론 이외에도 DLL Side-Loading, Winlogon Helper DLL, 루트킷 등 다양한 기법이 지원된다. 이는 리눅스도 동일한데 bash_profile, .bashrc, profile.d 등의 시작 스크립트나 Sys Vinit, Systemd와 같은 서비스, Cron 작업, Preload 등의 기법을 지원한다.

 

AhnLab EDR (Endpoint Detection and Response)은 국내 유일의 행위 기반 분석 엔진을 기반으로 엔드포인트 영역에 대해 강력한 위협 모니터링과 분석, 대응 역량을 제공하는 차세대 엔드포인트 위협 탐지 및 대응 솔루션이다. AhnLab EDR은 의심스러운 행위에 관한 유형별 정보를 상시 수집해 탐지 및 분석, 대응 관점에서 사용자가 위협을 정확하게 인식할 수 있는 기능을 제공하며 이를 통해 종합적인 분석을 통해 원인 파악과 적절한 대응, 재발 방지 프로세스를 수립할 수 있다.

 

여기에서는 리눅스 시스템을 대상으로 하는 공격자들이 사용하는 지속성 유지 기법을 분류하고 AhnLab EDR을 활용해 이러한 공격을 탐지하는 방식을 정리한다.

 

1. 시작 스크립트 (profile.d)

리눅스에서는 시스템 부팅 시나 사용자가 로그인할 때 실행되는 시작 스크립트들이 있다. 여기에서는 대표적으로 전역 환경 설정 파일을 악용하는 사례를 정리한다. 전역 환경 설정 파일은 “/etc/profile.d/” 경로 내에 존재하며 시스템 부팅 시 해당 디렉토리 내의 스크립트들이 실행된다.

 

악성코드는 이를 악용할 수 있는데 예를 들어 코인 마이너 악성코드 중 하나인 Kaiji는 자신을 “/etc/profile.d/bash_conf” 경로에 복사하고 이를 실행하는 스크립트를 “/etc/profile.d/bash_conf.sh”를 생성한다. 이에 따라 시스템이 부팅되면 “/etc/profile.d/” 경로 내에 존재하는 “bash_conf.sh”를 실행하게 되고 최종적으로 Kaiji 악성코드 “bash_conf”가 실행된다.

 

Figure 1. 시작 스크립트를 악용해 지속성을 유지하는 Kaiji

 

AhnLab EDR은 시작 스크립트가 새롭게 등록되는 이벤트를 주요 행위로 탐지하여 관리자가 이를 사전에 인지할 수 있도록 도와준다.

 

Figure 2. 시작 스크립트 등록 이벤트 발생 시의 탐지 로그

 

2. Cron 작업

리눅스의 Cron 작업은 윈도우의 작업 스케줄러와 유사하게 정해진 시간이나 주기에 따라 특정 작업을 자동으로 실행할 수 있도록 설정하는 스케줄링 시스템이다. 일반적으로 주기적으로 실행해야 하는 백업, 로그 관리, 시스템 유지보수 등의 작업에 사용되지만 악성코드들도 지속성 유지를 위해 이를 악용하는 경우가 많다.

 

XorDDoS는 오래전부터 유포되고 있는 DDoS 악성코드로서 지속성 유지를 위해 다양한 기법들을 사용하는데 대표적으로 Cron 작업이 있다. Cron 작업에 “/etc/cron.hourly/gcc.sh” 경로의 스크립트를 3분 간격으로 실행하는 명령을 등록하는데 해당 스크립트에는 “/lib/libudev.so” 경로에 설치된 자신을 복사하여 다시 실행하는 명령이 저장되어 있다.

 

Figure 3. Cron 작업을 등록하는 XorDDoS

 

AhnLab EDR은 Cron 작업을 조작하여 지속성을 유지하는 이벤트를 주요 행위로 탐지하여 관리자가 이를 사전에 인지할 수 있도록 도와준다.

 

Figure 4. Cron 작업 등록 이벤트 발생 시의 탐지 로그

 

 

3. Systemd

리눅스 환경에서도 윈도우와 유사하게 서비스 개념이 존재하며 이를 관리하고 제어하는 방식으로서 최근에는 Systemd 서비스가 표준으로 사용되고 있다. Systemd는 systemctl을 통해 관리될 수 있으며 서비스와 관련된 설정 정보는 “/etc/system/system” 경로에 위치한 unit 파일들에 저장된다.

 

Lady는 Go 언어로 개발된 코인 마이너 악성코드로서 지속성 유지를 위해 Systemd를 악용한다. Ntp 서비스를 위장하여 자신을 “/usr/sbin/ntp” 경로에 복사하고 systemctl을 이용해 “ntp.service”로 등록한다. Lady가 등록된 “ntp.service” unit 파일을 확인해 보면 다음과 같이 NTP daemon으로 위장한 설정 정보를 확인할 수 있다.

 

Figure 5. Systemd를 악용하는 Lady 코인 마이너

 

AhnLab EDR은 Systemctl을 이용해 서비스를 등록하는 이벤트를 주요 행위로 탐지하여 관리자가 이를 사전에 인지할 수 있도록 도와준다.

 

Figure 6. Systemd를 이용한 서비스 등록 이벤트 발생 시의 탐지 로그

 

 

4. Preload (환경 변수)

리눅스에는 LD_PRELOAD라는 환경 변수가 존재하며, 리눅스의 로더는 실행 파일을 로드할 때 이 환경 변수를 참조하여 다른 라이브러리들보다 먼저 로드될 수 있게 지정해 주는 행위를 한다. 이러 한 기능 때문에 리눅스 환경의 악성코드들은 악성 so 라이브러리 파일을 만들고 환경 변수 LD_PRELOAD에 경로를 지정하는 방식으로 정상 프로세스에 의해 로드될 수 있도록 악용하는 케이스가 존재한다.

 

Roopre는 백도어 악성코드로서 PHP 드로퍼에 의해 설치된다. PHP 드로퍼는 아키텍처에 맞게 라이브러리 포맷의 Roopre를 “cached.so”라는 이름으로 설치하며 이후 LD_PRELOAD 환경 변수에 이를 등록하고 host 명령을 실행한다. 이에 따라 host 명령이 실행되면서 LD_PRELOAD 환경 변수에 등록된 Roopre를 로드하여 실행하게 된다.

 

Figure 7. LD_PRELOAD 환경 변수를 악용하는 Roopre

 

AhnLab EDR은 LD_PRELOAD 방식을 통해 의심스러운 라이브러리가 로드되는 경우 이를 주요 행위로 탐지하여 관리자가 이를 사전에 인지할 수 있도록 도와준다.

 

Figure 8. LD_PRELOAD에 등록된 라이브러리 로드 이벤트 발생 시의 탐지 로그

 

 

5. Preload (ld.so.preload)

리눅스의 로더가 Pre Loading을 진행하는 방식으로는 LD_PRELOAD 환경 변수 외에도 “/etc/ld.so.preload” 파일을 이용하는 방식이 있다. 만약 해당 파일이 존재한다면 환경 변수를 등록하는 방식과 동일하게 파일 내부에 정의된 경로의 라이브러리를 먼저 로드해 준다.

 

코인 마이너 악성코드인 Kinsing은 은폐를 위해 오픈 소스 유저 모드 루트킷인 Beurk를 커스터마이징하여 사용한다. 루트킷은 라이브러리 포맷으로서 프로세스에 로드된 후 파일 및 TCP 통신과 관련된 함수를 후킹하여 Kinsing과 관련되었을 경우 이를 은폐한다. Kinsing은 루트킷이 파일이나 네트워크 통신을 조회하는 프로세스에 로드될 수 있도록 “/etc/ld.so.preload” 파일을 악용하는데, 단순히 루트킷을 “/etc/libsystem.so” 경로에 설치한 이후 “/etc/ld.so.preload” 파일에 해당 경로명을 등록하는 방식이다. 이를 통해 새롭게 생성되는 프로세스들은 루트킷인 “/etc/libsystem.so”를 자동으로 로드하게 된다.

 

Figure 9. ld.so.preload 파일에 등록된 루트킷

 

AhnLab EDR은 “/etc/ld.so.preload” 파일을 조작하는 이벤트를 위협으로 탐지하여 관리자가 이를 사전에 인지할 수 있도록 도와준다.

 

Figure 10. ld.so.preload 파일 조작 이벤트 발생 시의 탐지 로그

 

 

6. 결론

공격자들은 시스템에 침투한 이후 지속적인 활동을 유지하기 위해 다양한 지속성 유지 기법을 악용하고 있다. 이에 따라 최초 침투 과정에서 목표를 달성하지 못했다고 하더라도 지속적으로 시스템에 접근하여 최종적으로 정보 탈취나 파일 암호화, 제어 탈취 등의 목적을 달성할 수 있다.

 

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

 

행위 진단

– Persistence/DETECT.T1053.M10875
– Persistence/DETECT.T1543.M10920
– Suspicious/DETECT.T1574.006.M10894
– Suspicious/EDR.Preload.M10892

 

Tactic Technique
Persistence (TA0003) Event Triggerd Execution: Unix Shell Configuration Modification (T1546.004)
Persistence (TA0003) Scheduled Task/Job: Cron (T1053.003)
Persistence (TA0003) Create or Modify System Process: Systemd Service (T1543.002)
Persistence (TA0003) Hijack Execution Flow: Dynamic Linker Hijacking (T1574.006)

MITRE ATT&CK 매핑 정보

 

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