분석 정보/악성코드 분석 정보

취약한 드라이버를 악용하는 GhostEngine

TACHYON & ISARC 2024. 6. 17. 16:59

최근 GhostEngine 악성코드를 유포해 EDR(Endpoint Detection and Response) 프로세스를 종료하고 코인 마이너를 실행해 암호화폐를 채굴하는 캠페인이 발견됐다. 해당 캠페인은 취약한 윈도우 드라이버를 악용해 감염된 호스트에서 EDR 프로세스를 종료하고 종료된 프로세스의 실행 파일을 삭제한다. 이후, 공격자가 운영하는 C&C 서버에서 XMRig 코인 마이너를 다운로드 및 실행한다.

 

EXE 형식의 다운로더 Tiworker.exeGhostEngine 악성코드의 동작 흐름도는 [그림 1]과 같다. 먼저, Tiworker.exe는 파워쉘 스크립트인 get.png를 다운로드 및 실행하며, 스크립트는 각 모듈과 윈도우 드라이버를 다운로드한다. 다운로드된 모듈 중에서 EDR 종료 모듈과 smartsscreen.exe는 드라이버에 직접 제어 코드를 전송해 EDR 프로세스를 종료하며, 업데이트 모듈과 백도어 모듈은 각각C&C 서버와 통신해 악성코드를 업데이트하고 추가 명령어를 수신 및 실행한다.

 

[그림  1]  악성 동작 흐름도

 

1. 모듈 및 드라이버 다운로드

먼저, Tiworker.exe 파일은 파워쉘을 이용해 공격자가 운영하는 C&C 서버에서 get.png 파일을 다운로드해 실행한다. 이때 다운로드 받은 파일은 파워쉘 스크립트이며, 다시 한 번 동일한 C&C 서버와 연결해 GhostEngine을 구성하는 모듈을 다운로드한다.

 

[그림  2] get.png  다운로드

 

하기의 [1]get.png에서 다운로드하는 GhostEngine 모듈의 목록으로 크게 EDR 종료 모듈, 업데이트 모듈 및 백도어 모듈로 구성되며, EDR 종료에 사용되는 윈도우 드라이버와 XMRig를 다운로드 및 실행하는 파일을 포함한다.

 

[표  1]  다운로드 모듈 목록

 

또한, 두 개의 취약한 윈도우 드라이버인 aswArPots.sysIOBitUnlockers.sys를 하기에 작성된 저장 경로에 다운로드하고, [그림 3]과 같이 서비스로 등록해 실행한다. 전자는 본래 Avast사의 소프트웨어에서 사용하던 안티 루트킷이며, 후자는 IOBit Unlocker 소프트웨어의 구성요소로 다른 프로그램에서 사용 중인 파일이나 폴더의 잠금을 해제 처리하는 기능을 제공한다. 하지만, GhostEngine 악성코드는 EDR 프로세스를 종료하고 제거할 목적으로 두 드라이버의 기능을 악용했다.

- 드라이버 저장 경로 : C:\Windows\System32\drivers

 

[그림  3]  드라이버 다운로드 및 서비스 등록

 

 

2. 모듈 분석

2.1. EDR 종료

다운로드된 파일 중 kill.png는 파일에 포함된 쉘 코드를 현재 프로세스에 인젝션해 실행하며, 쉘 코드는 DLL 형식의 EDR 종료 모듈을 메모리에 로드한다. 로드된 모듈은 호스트에서 EDR 프로세스를 검색해 종료한 후 그 프로세스의 실행 파일을 삭제하며, 다운로드한 모듈 중 하나인 smartsscreen.exe도 동일한 역할을 수행한다.

 

[그림  4] kill.png 의 쉘 코드 인젝션

 

EDR 종료 모듈은 호스트에서 실행 중인 프로세스와 [ 2]을 포함한 1,660개의 프로세스 이름을 비교해 EDR 프로세스를 검색한다.

 

[표  2]  종료 대상 프로세스 목록

 

종료 대상 프로세스를 발견하면 DeviceIoControl API를 이용해 서비스 제어 코드와 관련 정보를 보낸다. 이 과정에서 aswArPots 서비스에는 제어 코드(0x9988C094)와 대상 프로세스 ID를 전달하고, 종료 대상 프로세스의 실행 파일이 C:\Program Files 경로에 존재하면 IOBitUnlockers 서비스에 제어 코드(0x221224)와 실행 경로를 전달한다.

 

[그림  5] EDR  종료 모듈의  DeviceIoControl  호출 코드

 

프로세스 ID를 전달받은 aswArPots 서비스는 ZwTerminateProcess를 호출해 프로세스를 종료한다.

 

[그림  6] aswArPots 의 프로세스 종료 코드

 

IObitUnlockers 서비스는 대상 파일의 오브젝트에 IRP(I/O Request Packet)를 전달해 IRP_MJ_SET_INFORMATION 작업을 수행하도록 요청한다. 해당 작업은 파일의 메타데이터를 수정할 수 있으며, 그중에서 FILE_DISPOSITION_INFO RMATION 구조체의 DeleteFile 멤버를 TRUE로 설정하면 파일의 핸들이 닫힐 때 대상 파일이 삭제된다.

 

[그림  7] IObitUnlockers 의 파일 삭제 코드

 

2.2. 업데이트 및 백도어

A. 업데이트 모듈

업데이트 모듈과 백도어 모듈은 get.png 파일을 주기적으로 업데이트하고, C&C 서버와의 통신을 유지하는 역할을 한다. 업데이트 모듈은 MSDTC 서비스의 구성요소인 oci.dll 파일로 위장해 원본 파일을 대체하고 [그림 8]의 순서대로 로드된다.

 

[그림  8] oci.dll  로드 순서

 

MSDTC 서비스에 로드된 업데이트 모듈은 30분마다 공격자가 운영하는 C&C 서버에서 get.png 파일의 다운로드를 시도하며, 연결에 성공하면 다운로드한 파일을 실행해 업데이트를 진행한다.

 

[그림  9] get.png  업데이트 코드

 

B. 백도어 모듈

백도어 모듈은 공격자가 운영하는 C&C 서버로부터 수신한 데이터를 Base64로 디코딩한 후 cmd.exe를 이용해 실행하고, 그 결과를 서버로 전송한다. , 분석 시점에서는 서버와 연결되지 않아 어떤 데이터가 수신되는지 확인할 수 없었다.

 

[그림  10]  백도어 모듈의 데이터 수신 및 실행

 

2.3. 암호화폐 채굴 XMRig

한편, C:\Windows\Fonts 경로에 다운로드된 smartsscreen.exeXMRig 코인 마이너를 다운로드 및 실행해 암호화폐를 채굴한다.

 

[그림  11] XMRig  코인 마이너 다운로드 결과

 

GhostEngine은 취약한 윈도우 드라이버를 악용해 실행 중인 EDR 프로세스를 탐지하고 종료한다. 따라서, 사용자는 보안 알림을 받을 수 없으므로 감염 사실을 인지하기 어려워 주의가 필요하다. 이와 같은 피해를 방지하기 위해서 WDAC(Windows Defender Application Control)의 정책 새로 고침 도구를 이용해 마이크로소프트 취약 드라이버 차단 목록을 활성화하고, 백신 프로그램과 OS를 최신버전으로 유지할 것을 권고한다.

- 참조 : Microsoft 권장 드라이버 차단 규칙 - Windows Security | Microsoft Learn

 

상기 악성코드는 잉카인터넷 안티바이러스 제품 TACHYON Internet Security 5.0에서 진단 및 치료가 가능하다.

 

[그림  12]  TACHYON Internet Security 5.0  진단 및 치료 화면