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

GO 언어로 제작된 악성코드 Klingon RAT

알 수 없는 사용자 2021. 6. 25. 12:34

2019년부터 백신 프로그램 탐지 회피 및 다양한 OS 사용자 타겟으로 공격이 가능하다는 이유에서 기존의 프로그래밍 언어가 아닌 GO 언어로 제작된 악성코드가 등장하기 시작했다. 최근에는 점차 GO 언어를 사용해 제작된 악성코드가 증가하고 있다.

 

20212월경, 자사에서는 GO 언어로 제작된 "Electro RAT" 분석글을 게시하였으며 해당 글의 링크는 아래에 첨부되어 있다.

2021.02.09 - [악성코드 분석] ElectroRAT 악성코드 분석 보고서

 

최근 GO 언어로 제작된 새로운 악성코드 "Klingon RAT"이 등장했다. "Klingon RAT"은 백신 프로그램 종료를 시도하며 관리자 권한을 획득한다. 최종적으로 해당 악성코드는 C&C 서버를 이용해 정보를 탈취하고, 사용자의 PC를 제어한다.

 

Analysis

파일 드랍

GO 언어로 제작된 파일은 GO 언어 기본 함수 패키지에 포함된 "archive/zip"을 사용하여 내부 메모리에 저장된 파일을 자체적으로 압축 해제할 수 있다.

 

"PAExec", "lsass(악성)", "Foxmail" 파일은 "Klingon RAT" 파일 내부에 'GZIP' 확장자 형태로 저장되어 있으며 "archive/zip" 함수를 사용하여 파일의 압축을 해제한 후 "%TEMP%" 경로에 드랍한다.

 

[표 1] 드랍 파일 정보

 

백신 프로그램 종료 시도

"Klingon RAT"은 명령 프롬프트를 실행시켜 "WMIC" 명령어(getCaption, ParentProcessID, ProcessID)를 이용해 실행중인 모든 프로세스를 검색한다. 그 후, 공격자 서버에 저장된 백신 프로그램 파일명과 비교하여 일치하면 종료를 시도한다.

 

현재 공격자의 서버는 닫혀 있어 종료 시도하는 백신 프로그램 이름을 확인할 수 없었다.

 

[그림 1] 백신 프로그램 종료 시도

 

지속성 유지

다양한 방법을 통해 사용자가 PC를 재부팅 하더라도 악성코드가 실행될 수 있도록 지속성을 유지하는 동작을 한다.

 

1. 레지스트리 등록

자동 실행 레지스트리에 자가 복제 파일을 등록하고, 윈도우 시작 시 항상 실행되는 화면 확대 프로그램인 "magnify.exe" 레지스트리를 변조하여 "magnify.exe"와 "Klingon RAT"가 함께 실행되도록 한다. 또한, 윈도우가 부팅될 때 자동으로 실행되는 winlogon의 레지스트리를 변조하여 동시에 악성코드가 실행될 수 있도록 한다.

 

[그림 2] 레지스트리 등록

 

2. 이벤트 등록

"WMIC" 명령어를 사용하여 "\rootsubscription" 네임 스페이스에 윈도우 부팅 후 60초 이내 자동으로 악성코드를 실행하는 이벤트를 생성한다.

 

[그림 3] 생성된 이벤트

 

3. 작업 스케줄러 등록

작업 스케줄러에 "OneDriveUpdate"라는 이름으로 "Klinon RAT"을 실행하는 XML 파일을 등록하는 루틴이 존재했지만 분석 샘플에서는 동작하지 않았다.

 

[그림 4] 작업 스케줄러 등록 코드

 

권한 상승

실행된 "Klingon RAT"는 관리자 권한이 있어야 접근할 수 있는 "PHYSICALDRVIE0"  "SCSI0"에 접근을 시도하여 프로세스가 관리자 권한이 있는지 확인한다. 만약 관리자 권한이 없는 것으로 확인이 되면 사용자의 OS가 윈도우 환경인지 확인후 권한 상승을 위한 루틴을 실행한다.

 

[그림 5] 권한 확인 함수

 

"Klingon RAT"은 권한 상승을 위해 권한이 높은 윈도우 기본 프로그램의 레지스트리를 변조하면 임의의 명령어나 파일 실행이 가능하다는 취약점을 악용한다.

 

"MakeAdmin" 루틴에서 [2]와 같은 권한이 높은 정상 프로그램의 레지스트리 변조를 통해 실행과 동시에 권한이 높은 자식 프로세스로 악성코드도 함께 실행되도록 한다.

 

[표 2] 권한 상승을 위한 레지스트리 변조

 

또한, 기본적으로 사용자 PC에는 디스크 정리를 위해 작업 스케줄러에 "SilentCleanup"가 등록되어 있어서 관리자 권한이 있는 "cleanmgr.exe"를 호출한다. "SilentCleanup" 작업은 [그림 7]과 같이 '동작' 탭에 등록된 호출 경로에 "WINDOWS" 경로를 "%windir%"과 같이 환경 변수를 참고한 경로가 적용된다.

 

"%windir%"의 환경 변수는 그 경로가 레지스트리에 지정되어 있으며 PC에서 처리할 때에는 해당 레지스트리를 참고한다. 이때, "Klingon RAT"은 "%windir%"의 환경 변수를 악성 페이로드가 있는 경로로 변조하여 "%windir%"을 호출하면 악성코드가 함께 실행된다.

 

[그림 6] SilentCleanup 작업 스케줄러

 

[그림 7] 레지스트리에 등록된 windir 환경 변수

 

C&C 서버 연결 (정보 탈취 및 PC 제어)

C&C 서버와 연결을 하기 위해 TLS 핸드 셰이크를 위한 키 쌍을 디코딩한다.

 

[그림 8] TLS 핸드 셰이크 준비 루틴

 

C&C 서버와 연결이 되면 이전에 드랍한 파일 "lsass"를 실행하여 정보 탈취 동작을 수행한다. 실행된 "lsass"는 사용자 PC 정보가 저장된 메모리를 "Andrew.dmp" 파일로 만들어 드랍한 후 공격자 서버로 전송한다. 현 시점에서는 C&C 서버에 연결이 되지 않아 탈취되는 정보만 확인할 수 있었다.

 

[표 3] 탈취 정보

 

최종적으로 공격자의 C&C 서버에서 명령을 받아 사용자의 PC를 제어한다.

 

[표 4] PC 제어를 위한 명령 및 동작

 

"Klingon RAT"은 효율적인 감염을 위해 권한 상승과 지속성 유지 동작이 한 가지 방법이 아닌 다양한 공격 루틴을 시도한다. 또한, 최근 증가하고 있는 GO 언어라는 새로운 언어로 제작된 악성코드는 새로운 패턴과 진단 방법이 필요하기 때문에 백신 프로그램의 진단 회피가 용이해지는 특징이 있다. 따라서 사용자는 출처가 밝혀지지 않은 파일을 실행할 시 주의하여 피해를 예방할 것을 권장한다.

 

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

 

[그림 9] TACHYON Endpoint Security 5.0 진단 및 치료 화면