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

HORUS Protector를 이용해 유포되는 Snake Keylogger

TACHYON & ISARC 2024. 12. 9. 17:45

악성코드 인코딩 및 배포 도구인 HORUS Protector를 이용해 유포되는 Snake Keylogger가 발견됐다. HORUS Protector는 백신 프로그램을 우회할 수 있는 FUD(Fully Undetectable) 크립터로 텔레그램에서 판매되고 있다. 최근 발견된 Snake Keylogger는 해당 프로텍터가 적용됐으며, 인코딩된 VBS 스크립트인 VBE 파일과 레지스트리로 악성코드를 난독화하고 프로세스 할로잉을 이용해 실행된다.

 

1. 동작 흐름도

Snake Keylogger VBE 스크립트가 포함된 ZIP 아카이브 파일로 유포되며 VBE를 실행하면 공격자가 운영하는 C&C 서버에서 인코딩된 추가 데이터를 다운로드해 레지스트리에 저장한다. 이후 VBE는 레지스트리에 저장된 1차 로더 페이로드를 디코딩 및 실행하며, 이때 윈도우 디펜더의 활성화 여부에 따라 1차 로더를 바로 실행하거나 VBS 스크립트를 이용해 실행하게 된다. 실행된 1차 로더는 레지스트리에서 2차 로더 페이로드를 디코딩 및 실행하고, 이어서 2차 로더는 Snake Keylogger를 마이크로소프트 빌드 엔진 프로그램인 MSBuild.exe 프로세스에 인젝션해 실행한다.

 

[그림 1] 동작 흐름도

 

 

2. 데이터 수신 및 저장

VBE 스크립트는 공격자가 운영하는 C&C 서버에 연결해 다단계 로더, VBS 스크립트 및 Snake Keylogger 등 다음 단계에서 사용될 데이터를 요청 및 수신한다.

 

[표 1] 수신 데이터 및 동작

 

서버로부터 수신한 데이터는 할로잉 대상 프로세스 이름과 레지스트리 경로명 등의 정보와 함께 하기의 레지스트리 경로에 저장되며, 특히 Snake Keylogger의 데이터는 특정 크기로 분할해 저장된다.

-       레지스트리 경로 : HKCU\Software\uOITNhlpKJsMLJx

 

[그림 2] 수신 데이터 저장 결과

 

 

3. 로더 실행

데이터 저장이 완료되면 VBE는 감염된 PC의 윈도우 디펜더 활성화 여부를 확인해 비활성화된 경우에 직접 레지스트리에서 1차 로더 페이로드를 디코딩 및 실행하고, 활성화된 경우에는 [ 1]uOITNhlpKJsMLJx.vbs를 이용해 1차 로더를 실행한다. 해당 VBS 파일은 하기의 경로에 저장된 후 작업 스케줄러에 등록돼 1분마다 반복적으로 실행한다.

-       VBS 저장 경로 : %Appdata%\uOITNhlpKJsMLJx.vbs

 

[그림 3] 작업 스케줄러 등록

 

작업 스케줄러에 등록된 VBS 스크립트는 먼저 현재 실행 중인 프로세스 목록에서 할로잉 대상 프로세스인 “MSBuild.exe”의 존재 유무를 확인한다. 그리고 해당 프로세스가 없으면 레지스트리에 저장된 파워쉘 명령어를 이용해 1차 로더를 실행한 후 파워쉘 프로세스를 종료한다.

 

[그림 4] MSBuild.exe 프로세스 확인 스크립트

 

이때, VBE [그림 5] VBS 스크립트에서 동일한 파워쉘 명령어를 사용해 1차 로더를 실행한다. 해당 명령어는 레지스트리에 저장된 로더의 PE 데이터를 디코딩하고 애플리케이션의 격리된 실행 환경을 제공하는 AppDomain 클래스를 이용해 PE 이미지를 로드한다. 이후, 1차 로더의 내부 함수인 b 함수를 호출하고 데이터가 저장된 레지스트리의 경로 이름을 나타내는 문자열 uOITNhlpKJsMLJx를 파라미터로 전달한다.

 

[그림 5] 1차 로더 실행 명령어

 

1차 로더는 전달받은 문자열을 이용해 다시 데이터가 저장된 레지스트리에 접근해 2차 로더의 PE 데이터를 디코딩하고 [그림 6]과 같은 방법으로 AppDomain 클래스를 이용해 2차 로더의 PE 이미지를 로드한다. 이후, GetMethod를 이용해 2차 로더의 내부 함수인 r 함수를 호출한다.

 

[그림 6] 2차 로더 실행 코드

 

2차 로더는 최종적으로 레지스트리에 나뉘어 저장된 Snake Keylogger의 데이터를 합친 후 디코딩한다. 그리고, 정상 프로그램인 MSBuild.exe 파일을 실행하고 프로세스 할로잉을 이용해 디코딩된 Snake Keylogger를 삽입한다.

 

[그림 7] Snake Keylogger 디코딩 및 실행 코드

 

 

4. Snake Keylogger

Snake Keylogger는 윈도우 훅을 이용해 백그라운드에서 사용자의 입력을 모니터링하고 키 입력 이벤트가 발생하면 키로깅을 수행한다. 또한, GetWindowText 함수를 이용해 현재 키가 입력되고 있는 창의 제목을 함께 기록해 입력된 데이터와 관련된 프로그램의 정보를 함께 제공한다.

 

[그림 8] 키로깅 코드

 

Snake Keylogger는 키로깅뿐만 아니라 [ 2]의 웹 브라우저, 클립보드 및 프로그램 등에서 사용자 계정 정보를 수집하고 주기적으로 화면을 캡처해 내 문서 폴더에 저장한다. 수집된 정보는 SMTP 또는 FTP 프로토콜을 이용해 공격자의 C&C 서버로 전송하지만, 분석 시점에서 서버와 연결되지 않았다.

 

[표 2] 정보 수집 대상 목록

 

HORUS Protector가 적용된 Snake Keylogger는 인코딩된 VBS 스크립트를 사용하고 레지스트리를 악성 페이로드의 저장 공간으로 활용하는 등 다양한 방법으로 보안 프로그램의 탐지를 회피할 수 있어 주의가 필요하다. 따라서, 출처가 불분명한 파일의 다운로드와 실행을 지양하고, 보안 프로그램과 OS를 항상 최신버전으로 유지할 것을 권고한다.

 

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

 

[그림 9] TACHYON Internet Security 6.0 진단 및 치료 화면