취약한 데이터베이스 서버를 대상으로 유포 중인 Gh0stCringe RAT

ASEC 분석팀은 취약한 데이터베이스 서버(MS-SQL, MySQL 서버)를 대상으로 유포되는 악성 코드들을 지속해서 모니터링하고 있다. 여기에서는 Gh0stCringe[1]라고 하는 RAT 악성코드를 다룬다.

Gh0stCringe는 CirenegRAT이라고도 불리는 악성코드로서 Gh0st RAT의 코드를 기반으로 하는 변종 중 하나이다. 2018년 12월경에 처음 확인되었으며 SMB 취약점(ZombieBoy의 SMB 취약점 도구를 사용하여)을 통해 유포되었던 것으로 알려져 있다.[2] 이후 직접적인 연관 관계가 확인된 것은 아니지만 2020년 6월경 발간된 KingMiner 코인 마이너 분석 보고서[3]에서 언급된 바 있다.

최근 확인되고 있는 Gh0stCringe RAT은 취약한 데이터베이스 서버들을 대상으로 유포되고 있다. 자사 ASD 로그를 기반으로 Gh0stCringe 관련 로그를 확인해 보면, 다음과 같이 sqlservr.exe 프로세스 즉 MS-SQL 서버 외에도 윈도우 환경 용 MySQL 서버 프로세스에 의해 생성된 로그를 확인할 수 있다.

[그림 1] Gh0stCringe RAT 생성 로그

MS-SQL 서버뿐만 아니라 MySQL 서버도 공격 대상인 것을 보면, 대부분의 DB 서버를 대상으로 유포되는 악성코드들이 그러하듯 Gh0stCringe도 취약한 계정 정보를 가진 즉 부적절하게 관리되고 있는 DB 서버를 대상으로 하는 것으로 추정된다.

일반적으로 취약한 계정 정보를 갖는 데이터베이스 서버들은 다양한 공격자들 및 악성코드들로부터 공격 대상이 되기 때문에 다양한 악성코드들의 감염 로그들이 확인된다. 실제 위에서 언급한 KingMiner 악성코드 또한 대표적인 공격 경로가 취약한 계정 정보를 가진 SQL 서버에 대한 공격이었으며, Gh0stCringe가 설치된 시스템들의 감염 로그들을 보더라도 KingMiner 외에도 Vollgar 코인 마이너 악성코드[4]와 같이 무차별 대입 공격으로 유포되는 다른 악성코드들의 감염 이력이 함께 확인된다.

Gh0stCringe는 공개된 Gh0st RAT의 소스 코드를 기반으로 만들어졌다. 다음은 공개된 Gh0st RAT의 CFileManager::OpenFile() 함수와 Gh0stCringe의 함수를 비교한 결과이며, 소스 코드 중 일정 부분이 그대로 사용된 것을 알 수 있다. 참고로 Gh0st RAT 소스 코드를 기반으로 하여 다수의 코드가 원본과 유사한 일반적인 변종들과 달리, Gh0stCringe는 별개의 이름이 붙여진 것처럼 고유한 코드들의 비율이 높다.

[그림 2] Gh0st RAT의 소스 코드를 활용한 Gh0stCringe

Gh0stCringe RAT은 이름과 같이 RAT 악성코드로서 C&C 서버와의 연결 이후 공격자로부터 명령을 받아 다양한 악성 행위를 수행할 수 있다. 다른 RAT 악성코드들처럼 Gh0stCringe도 공격자가 다양한 설정을 지정할 수 있는데, 여기에서는 분석 대상 샘플을 기준으로 설명한다.

다음은 C&C 명령과 별개로 실행 시 수행할 수 있는 다양한 기능들에 대한 설정 데이터들이다. 7개의 설정이 존재하며 설정된 데이터에 따라 각각 다른 행위를 수행한다.

[그림 3] Gh0stCringe의 설정 데이터
  • 자가 복제 [On/Off] : 활성화되어 있을 경우 모드에 따라 자신을 특정 경로에 복사한다.
  • 실행 모드 [Mode] : 0, 1, 2의 값을 갖을 수 있으며 실행 모드에 대해서는 아래에서 다룬다.
  • 파일 사이즈 변경 [Size] : Mode #2에서는 자신을 “%ProgramFiles%\Cccogae.exe” 경로로 복사하는데, 값이 설정되어 있을 경우 지정한 사이즈만큼 파일의 뒷부분에 쓰레기 데이터를 덧붙인다.
  • 분석 방해 기법 [On/Off] : explorer.exe 프로세스와 자신의 부모 프로세스의 PID 구한 후 0의 값을 갖는다면 종료한다.
  • 키로거 [On/Off] : 활성화되어 있을 경우 키로깅 쓰레드가 동작한다.
  • Rundll32 프로세스 종료 [On/Off] : 활성화되어 있을 경우 “taskkill /f /im rundll32.exe” 명령을 실행해 실행 중인 rundll32 프로세스를 종료시킨다.
  • 자가 복제 파일 속성 [Attr] : 자가 복제한 파일의 속성을 읽기 전용, 숨김, 시스템 속성으로( FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM) 설정한다.

키로깅 기능은 C&C 서버의 명령을 받아 동작할 수도 있지만 설정 데이터에 따라 활성화될 수도 있다. Gh0stCringe는 Windows Hooking 방식 즉 SetWindowsHookEx() API를 이용하는 Gh0st RAT 악성코드와 달리, Windows Polling 방식의 키로깅 기법 즉 GetAsyncKeyState() API를 이용한다.

[그림 4] GetAsyncKeyState() API를 이용하는 키로깅

로깅된 사용자의 키 입력은 “%SystemDirectory%\Default.key” 경로에 저장하며, Gh0st RAT과 유사하게 1바이트 XOR 인코딩하여 저장한다. 해당 악성코드에서는 0x62가 키로 사용되었다.

[그림 5] 0x62 키로 XOR 인코딩

Gh0stCringe는 4가지 모드를 지원한다. 3가지의 모드는 앞에서 다룬 설정 데이터의 값으로써 0, 1, 2를 가질 수 있다. 이외에도 Windows 10 버전에서는 전용 모드로 실행된다. 각 모드는 최종적으로 C&C 서버와의 통신 및 명령을 수행하는 것은 동일하지만 아래와 같이 지속성 유지와 관련된 기능적인 차이가 존재한다.

  • Mode #0 : “Rsuyke mkgcgkuc” 서비스가 존재하지 않을 경우 해당 서비스를 생성하지만 정상적으로 등록하지 않는다. 그리고 자가 복제 설정이 활성화되어 있을 경우 자신을 %ProgramFiles% 경로에 랜덤한 이름으로 복사한다. 생성한 서비스도 정상적으로 등록된 형태가 아니며 추가적인 Run Key 등록과 같은 기법을 사용하지 않기 때문에 지속성은 유지되지 않는다.
  • Mode #1 : Mode #0과 동일하게 비정상적인 형태의 “Rsuyke mkgcgkuc” 서비스를 생성한다. HKLM Run Key에 등록하여 지속성 유지가 가능하다.
  • Mode #2 : 자신을 “%ProgramFiles%\Cccogae.exe” 경로로 복사하고 “Rsuyke mkgcgkuc” 서비스에 등록한다. 이후 서비스를 실행시키면 서비스는 “Win7”을 인자로 주고 Gh0stCringe를 실행한다. 정상적으로 서비스가 등록됨에 따라 지속성 유지가 가능하다. 추가적으로 자가 복제 설정이 활성화되어 있을 경우 “%SystemDirectory%[Random].bak” 경로로 자신을 복사한다.
  • Mode Windows 10 : HKCU Run Key에 등록하여 지속성 유지가 가능하다.
[그림 6] 정상적으로 등록된 Rsuyke mkgcgkuc 서비스

초기 루틴을 지나면 C&C 서버에 연결하며 주기적으로 통신하면서 공격자로부터 명령을 기다린다. 이러한 명령 수행 루틴과는 별개로 최초 접속 시에는 다음과 같이 감염 시스템의 정보들을 수집하여 C&C 서버에 전달한다.

OffsetSizeDescription
+0x00000x010xC8
+0x00010x07“Default”
+0x00240x04감염 시스템 IP 주소
+0x00280x04감염 시스템 호스트 이름
+0x005C0x9C윈도우 버전
+0x00F80x04CPU 개수 (MB)
+0x010C0x04CPU 속도 (GHz)
+0x01140x04네트워크 성능
+0x01180x04웹캠 개수
+0x011C0x04Wow64 여부
+0x01200x04메모리 용량 (MB)
+0x01240x04로컬 디스크 용량 (MB)
+0x01280x04악성코드 설치 날짜
+0x0159N/A설치된 보안 제품 목록
+0x01BEN/A특정 데이터 영역 (사용되지 않음)
+0x02040x04네트워크 인터페이스 속도 (Mbps)
+0x02080x04“V9.0”
+0x02280x04최근 3분 이내 키 입력 여부
[표 1] 감염 시스템 수집 데이터 구조

수집하는 여러 정보들 중에서 가장 눈에 띄는 특징은 설치된 보안 제품 목록을 구하는 부분이다. 현재 실행 중인 프로세스들의 이름을 검사한 후 다음과 같은 리스트에서 비교하여 일치하는 경우 정보를 기록하여 C&C 서버에 전달한다.

[그림 7] 검사 대상 보안 제품 목록 중 일부

원본 Gh0st RAT은 이름과 같이 C&C 서버와의 통신에 “Gh0st”라는 시그니처 문자열을 사용한다. 다음은 원본 Gh0st RAT에서 PacketFlag로 “Gh0st” 문자열을 지정하는 루틴이다.

[그림 8] Gh0st 시그니처 문자열

다음은 암호화 이전 Gh0stCringe의 패킷 구조이다. 앞에서 정리한 감염 시스템 정보는 0x22C 사이즈였으며 앞부분에 0xF 사이즈의 추가적인 데이터가 더해졌다. 이 중에서 “xy “ 문자열 즉 처음 3 바이트 0x787920가 Gh0stCringe의 시그니처 문자열이다.

[그림 9] Gh0stCringe의 암호화 전 패킷 구조

암호화 이전 패킷 구조를 정리하면 다음과 같다.

OffsetSizeDataDescription
+0x000x03“xy “시그니처 문자열
+0x030x040x0000023B패킷 전체 크기
+0x070x040x0000022C전달할 데이터 크기
+0x0B0x040x00000001하드코딩된 데이터
+0x0F가변가변감염 시스템에서 수집한 데이터
[표 2] 패킷 구조

이렇게 만들어진 데이터는 최종적으로 자체적인 인코딩 방식을 거쳐 암호화된다. 다음은 패킷 암호화 루틴 및 이러한 과정을 통해 만들어져 C&C 서버에 전달되는 패킷이다.

[그림 10] 패킷 암호화 루틴
[그림 11] 인코딩되어 C&C 서버에 전달되는 감염 시스템 정보

다음은 C&C 서버로부터 전달받아 수행할 수 있는 여러 명령들에 대해 다룬다. Gh0stCringe의 명령들 중에는 원본 Gh0st RAT에 존재하는 것들도 있지만 고유한 명령들도 다수 존재한다.

명령 수행
다운로더 : C&C 서버로부터 추가 페이로드를 다운로드 받아 실행한다. 구체적인 인자를 전달할 수 있다.
특정 URL 접속 : 인터넷 익스플로러를 이용해 특정 사이트에 접속. 사용자가 인지할 수 없도록 윈도우를 숨기는 옵션도 존재한다.
MBR 파괴

정보 탈취
키로깅 : 설정 데이터의 유무와 관계없이 C&C 서버의 명령에 의해서도 키로깅을 수행할 수 있다.
클립보드 탈취 : 현재 클립보드에 저장된 데이터를 탈취한다.
텐센트 관련 파일 정보 수집 : “%APPDATA%\Tencent\Users\” 경로에 존재하는 파일들의 목록을 수집하는데, 일반적으로 QQ 메신저 관련 사용자 데이터가 포함되어 있을 것으로 추정된다.

자체 제어
업데이트 : 악성코드 업데이트
언인스톨 : 등록한 서비스를 제거하고 배치 파일을 이용해 자가 삭제한다. 이외에도 키로깅 데이터 Default.key 파일도 삭제한다.
서비스 제어 : 악성코드 서비스 즉 “Rsuyke mkgcgkuc”에 대해 “Host” 또는 “ConnectGroup” 항목을 변경한다.
이벤트 클린업
Run Key 등록 : “C:\Program Files\Common Files\scvh0st.exe” 경로에 대한 Run Key 등록.

시스템 제어
시스템 종료
NIC 재부팅

추가 모듈 제어
C&C 서버로부터 추가 모듈을 메모리 상에 다운로드 받아 로드한 후 다음과 같은 지정한 익스포트 함수를 호출한다. 첫번째 모듈은 익스포트 함수로 추정했을 때 프록시 관련 모듈로 보이며, 두번째 모듈은 추가 기능이 포함된 Plugin 모듈로 추정된다.
Module #1 : Export 함수 OpenProxy(), CloseProxy()
Module #2 : Export 함수 PluginMe()

기타
특정 프로세스 실행 여부 검사
특정 윈도우 존재 여부 검사
특정 레지스트리에 대한 쓰기 : “HKLM\SYSTEM\Clore / Clore”
메시지 팝업

데이터베이스 서버(MS-SQL, MySQL 서버)를 대상으로 하는 공격에는 대표적으로 부적절하게 계정 정보를 관리하고 있는 시스템들에 대한 무차별 대입 공격(Brute Forcing)과 사전 공격(Dictionary Attack)이 있다. 일반적으로 이러한 방식들이 공격의 대부분을 차지하고 있는 것으로 보이지만, 이외에도 취약점이 패치되지 않은 시스템들에 대한 취약점 공격이 있을 수 있다.

참고로 MS-SQL 서버의 경우 일반적으로 구축된 형태 외에도 ERP 및 업무용 술루션에 의해 설치된 MS-SQL 서버도 공격 대상이 되고 있다. 이에 따라 관리자들은 계정의 비밀번호를 추측하기 어려운 형태로 사용하고 주기적으로 변경하여 무차별 대입 공격과 사전 공격으로부터 데이터베이스 서버를 보호해야 하며, 최신 버전으로 패치하여 취약점 공격을 방지해야 한다. 또한 외부에 오픈되어 접근 가능한 데이터베이스 서버에 대해 방화벽과 같은 보안 제품을 이용해 외부 공격자로부터의 접근을 통제해야 한다.

안랩 제품에서는 해당 악성코드들을 다음과 같이 진단하고 있다.

[파일 진단]
– Backdoor/Win.Gh0stRAT.C4976413 (2022.02.19.00)
– Backdoor/Win.Gh0stRAT.C4976420 (2022.02.19.00)

[IOC]
MD5

– bd8611002e01d4f9911e85624d431eb0
– 9adc9644a1956dee23c63221951dd192
– 782cbc8660ff9e94e584adfcbc4cb961

C&C
– tuwu.meibu[.]net:2220
– 172.86.127[.]224:8000

[참고 자료]
[1] https://twitter.com/James_inthe_box/status/1125004664041197568
[2] https://www.binarydefense.com/gh0stcringeformerly-cirenegrat/
[3] https://www.sophos.com/en-us/medialibrary/pdfs/technical-papers/sophos-labs-kingminer-botnet-report.pdf
[4] https://www.guardicore.com/blog/vollgar-ms-sql-servers-under-attack/

연관 IOC 및 관련 상세 분석 정보는 안랩의 차세대 위협 인텔리전스 플랫폼 ‘AhnLab TIP’ 구독 서비스를 통해 확인 가능하다.

0 0 votes
별점 주기
guest
0 댓글
Inline Feedbacks
View all comments