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

변종으로 돌아온 모듈형 악성코드 Gelsemium

알 수 없는 사용자 2021. 6. 17. 15:46

2014년에 처음 등장한 Gelsemium 사이버 공격 그룹은 정부, 대학교, 전자 제품 제조업체 및 종교 단체 등을 공격했다. 현재는 Gelsemium이 더욱 정교해진 백도어로 업데이트되어 서남아시아 및 동아시아를 주 타겟으로 공격하고 있으며 최근 PC용 안드로이드 에뮬레이터인 NoxPlayer로 위장해 백도어를 유포한 사례가 있다.

 

보안 기업 ESET에서는 "Gelsemine", "Gelsenicine", "Gelsevirine" 를 사용하여 백신 프로그램 탐지를 우회하고, 관리자 권한을 획득하는 등 더욱 정교해진 새로운 버전의 Gelsemium 백도어가 유포되고 있다고 발표했다.

출처 : https://www.eset.com/ca/about/newsroom/press-releases/eset-research-uncovers-latest-version-of-gelsemium-cyberespionage-against-government-and-other-targ-5/

 

분석을 진행한 Gelsemium 악성코드 샘플의 동작 과정은 [그림 1]과 같다.

 

[그림 1] Gelsemium 악성코드 동작 과정

 

    Gelsemine의 시작 파일 "DiagTrack.exe"는 "DiagTrack2.exe"를 드랍한다.

    "DiagTrack2.exe"의 리소스 섹션에 저장된 "Install.dll"을 메모리에서 실행한다.

    사용자의 OS 환경과 버전을 비교하여 상황에 맞는 Gelsenicine을 드랍한다.

    "Install.dll"의 메모리에 저장되어 있는 암호화된 Gelsevirine 코드를 레지스트리에 저장한다.

    Gelsenicine은 레지스트리에 저장된 Gelsevirine 코드를 복호화하여 로드한 후 실행한다.

    Gelsevirine은 공격자의 C&C 서버에서 추가 파일을 다운로드한다.

 

Gelsemine (Dropper)

Gelsemine은 실행 시 "DiagTrack2.exe"파일을 드랍하고, 실행한다. "DiagTrack2.exe"의 리소스 섹션에는 암호화된 "install.dll"이 저장되어 있으며 해당 DLL 파일을 복호화하여 실행한다.

 

[그림 2]와 같이 "install.dll"의 메모리에는 "Gelsenicine"과 "Gelsevirine"의 정보 및 코드가 암호화되어 저장되어 있다.

 

[그림 2] Gesemine 파일 구조

 

실행된 "install.dll"은 사용자의 OS 버전을 비교하여 해당 OS 버전에 맞는 동작을 통해 관리자 권한을 획득한다. 이때, 실행중인 프로세스 중 특정 백신 프로그램이 존재하면 문자열을 비교한 후 해당 백신 프로그램 종료를 시도한다.

 

[표 1] 관리자 권한 획득 및 종료 시도 백신 프로그램

 

[2]DLL TableGelsenicineGelsevirine의 정보가 담겨있다.

 

[표 2] Gelsemine에 저장된 정보

 

Gelsenicine[load] 오프셋에 저장되어 있고, 관리자 권한 획득 여부 및 PC OS 버전을 확인한 후 상황에 맞는 Gelsenicine 파일을 [pulse]의 경로와 파일명을 참고하여 드랍한다.

 

관리자 권한 획득 성공 시 "%SYSTEM%" 경로에 접근하여 프린터 사용을 위한 정상 DLL 파일인 "winprint.dll"의 파일명을 "winemf.dll"로 변경한 후 Gelsenicine 로더를 "winprint.dll"로 위장하여 드랍한다. 그 후, 정상 서비스 프로세스인 "spoolsv.exe"를 종료하고, 재시작하여 자동으로 "winemf.dll"과 "winprint.dll"이 로드된다.

 

[그림 3] Gelsenicine 로드

 

관리자 권한 획득이 실패하면 "%SYSTEM%" 경로에 접근할 수 없기에 Chrome 하위 폴더에 "chrome_elf.dll"이라는 파일명으로 Gelsenicine을 드랍한 후 "DiagTrack2.exe"의 메모리에서 실행된다.

 

Gesevirine[main] 오프셋에 저장되어 있고, [Mainpath]를 참고하여 해당 레지스트리에 암호화하여 저장한다.

 

[그림 4] 암호화된 Gelsevirine

 

그 후, 배치파일을 이용해 "DiagTrack2.exe"파일을 삭제한다.

 

Gelsenicine (Loader)

Gelsenicine은 레지스트리에 저장된 Gelsevirine을 복호화한 후 로드하여 실행한다.

 

[그림 5] 복호화된 Gelsevirine

 

Gelsevirine

Gelsevirine은 공격자의 C&C 서버에서 추가 파일을 다운로드한다. 분석 시점에서 C&C 서버와 연결이 되지 않아서 확인할 수는 없지만 다운로드한 파일을 이용하여 추가적인 악성 동작을 할 것으로 추정된다.

 

[그림 6] C&C 연결 패킷

 

Gelsemium는 최근 안드로이드 에뮬레이터 NoxPlayer로 위장해 유포되어 이슈가 됐다. NoxPlayer로 위장한 Gelsemium 공격은 윈도우 OS뿐만 아니라 Mac OS까지 감염시킬 수 있으며 약 15천만명 이상의 사용자가 해당 악성코드의 피해를 입은 것으로 알려졌다.

 

Gelsemium는 사용자의 PC가 감염되었다는 사실을 알아차릴 수 없도록 정상 프로세스에 로드되어 실행되는 특징이 있다. 따라서 사용자는 악성코드를 실행하기 전에 차단할 수 있도록 보안에 유의할 것을 권고한다.

 

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

 

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