사용자 몰래 가상화폐를 채굴하는 악성코드가 기승을 부리고 있다. 유포 및 감염 방법도 가지각색으로 USB 이동식 디스크를 통해 전파 되거나 이력서를 가장한 메일로 유포 되기도 한다 또한 웹 브라우저를 통해 마이닝 동작을 하는 악성코드도 있었다. 


작년 5월 큰 이슈가 되었던 WannaCryptor 랜섬웨어 유포에도 사용된 SMB 원격 코드실행 취약점 (MS17-010 / 일명 EternalBlue ) 을 악용한 가상화폐 채굴 악성코드가 확인 되어 다시 한번 주의가 요구 된다. 사실 해당 취약점이 작년에 알려졌을 때도 이러한 악의적인 채굴 목적의 악성코드를 유포 하는데 주로 사용 되었다. 취약점이 알려지고 1년이 다 되어가는 시점에도 유사 악성코드가 활개를 치는 만큼 다시 한번 취약점 패치 유무를 점검하는 것이 바람직하다.


Trojan/Win32.Agent.C2342864 (이하 Agent) 악성코드는 MS17-010 취약점 (일명 EternalBlue) 을 이용하여 내부 네트워크를 스캐닝하고 취약한 경우 가상화폐의 한 종류인 모네로 코인을 채굴하는 악성코드를 감염 시킨다.


악성코드는 ZIP 압축파일 포맷의 패키지 파일로 구성 되어 있으며 패키지 파일명은 변형마다 다르다. 본 내용에서는 MsraReportDataCache32.tlb 파일명의 패키지를 대상으로 설명한다. 패키지 파일의 구조는 다음과 같다.

[그림1] NrsMiner 패키지 구조


Agent 악성코드는 위 구조상 메인 모듈에 해당된다. 취약점을 통한 시스템 감염시 설치된 OS 환경에 맞는 Srv / Srv64 파일 중에 하나를 tpmagentservice.dll 파일명으로 변경하여 서비스로 등록한다. 이후 설명하는 공격모듈과 채굴 툴을 생성 및 실행하는 주체가 된다.  Spoolsv / Spoolsv64 는 패키지 파일을 로드 하여 환경에 따라서 필요한 모듈을 설치하고 특히 MS17-010 취약점을 스캐닝 한다. Hash / Hash64 는 모네로 코인을 채굴하는 알려진 공개툴인 XMRig 이다. Crypt 폴더는 공개된 MS17-010 취약점 관련 도구와 파일들이 포함된 ZIP 형태의 압축파일이다.


Spoolsv.exe 공격모듈 부터의 동작 방식은 다음 [그림 2]와 같다.


[그림2] Spoolsv.exe 실행 흐름


spoolsv.exe 파일은 MsraReportDataCache32.tlb 패키지를 압축 해제하여 내부 모듈들을 로드 하는 기능을 수행한다. 해당 tlb 파일은 위 [그림1] NrsMiner 패키지 구조 에서 설명 한대로 hash, hash64 파일명의 XMRig (공개 모네로 채굴 툴), spoolsv, spoolsv64 파일명의 공격모듈 그리고 srv, svr64 파일명의 메인 모듈,  MS17-010 Eternal blue SMB 취약점 관련 Crypt 파일명의 압축파일이 존재 한다.

Spoolsv.exe 는 실행 후 6개의 스레드를 구동하며 주요 행위는 다음과 같다.


다음 폴더를 생성하고 악성코드 패키지 파일을 로드하며 로드 된 파일의 압축을 해제 한다.

  • 폴더 생성

%Windows%\SecureBootThemes\

%Windows%\SecureBootThemes\Microsoft\


  • 파일로드

%Windows%\System32\MsraReportDataCache32.tlb

*.tlb 파일 (zip) 압축해제

crypt : %Windows%\SecureBootThemes\Microsoft\crypt (압축해제 완료 후 삭제) 



SMB 취약점 전파를 위해 MsraReportDataCache32.tlb 파일 내부에 있는 crypt 압축폴더 내 svchost.exe (Eternalblue-2.2.0.exe) 와 spoolsv.exe (Doublepulsar-1.3.1.exe) 를 실행 한다. 윈도우 환경에 따라 x64.dll, x86.dll 파일을 로드 한다. 해당 파일명은 spoolsv64.exe 내 하드코딩 되어 있다. spoolsv64.exe 프로세스의 스레드에서 취약점 스캔을 수행하며 성공시 x64.dll, x86.dll 모듈에서 타겟 시스템으로 *.tlb 파일을 복사, 압축해제, srv(tpmagentservice.dll 으로 파일명 변경) 서비스 등록  및 다시 spoolsv64.exe 을 실행되는 과정을 거친다.


위 과정을 좀더 설명 하면 취약점을 이용한 내부 네트워크 전파는 다음과 같이 진행 된다. (x64 윈도우 기준)

[그림3] Eternalblue 공격툴 설정 파일


이후 Eternalblue 도구가 실행되고 다음과 같은 로그파일이 생성된다. (stage1.txt, stage2.txt)

cmd.exe /c C:\WINDOWS\SecureBootThemes\Microsoft\\svchost.exe > stage1.txt // Eternalblue

cmd.exe /c C:\WINDOWS\SecureBootThemes\Microsoft\\spoolsv.exe > stage2.txt // Doublepulsar

다음은stage1.txt (Eternalblue 툴 실행로그) 로그 파일 내용이다.


[그림4] Eternalblue 툴 로그파일


다음과 같이 타켓 시스템에게 취약점 패킷이 전송 되었다.


[그림5] 취약점 패킷 전송


이후 lsass.exe 에 의해서 악성코드 패키지 파일인 MsraReportDataCache32.tlb 파일이 원격 시스템내에  생성 된다. 전송되는 패키지 파일은 102,400바이트씩 분할하여 파일에 기록되며, 별도의 암호화 단계 없이 플레인 바이너리를 직접 전송 하도록 되어 있었다. 

패킷 전송시 사용하는 TCP 포트는 동적으로 할당한 492xx대역, 572xx 대역을 사용한다. (테스트시 src:49287, dest:57219 가 사용 되었다)


[그림6] 취약점 공격 성공 후 lsass.exe 의한 *.tlb 패키지 파일 생성


취약점 공격이 성공 하면 MsraReportDataCache32.tlb 파일이 전송 및 압축 해제 된다. 압축해제 폴더는 Windows\SecureBootThemes\Microsoft 로 동일하며 srv64 파일을 system32\tpagentservice.dll 파일명으로 변경 되어 복사 되고 서비스로 등록 및 동작 한다. 해당 모듈은 메인 제어 모듈로 tlb 내부의 spoolsv64.exe 실행 (또 다른 취약한 시스템을 찾아 패키지 파일을 유포함) 하고 모네로 코인을 채굴하는 공개된 XMRig 툴 (hash, hash64 파일명) 을 실행 한다. Mining Pool 주소는 다음과 같다.


접속 주소와 포트 

 -o p3.qsd2xjpzfky.site:45560 -u wvsymvtjeg

-o p1.mdfr6avyyle.online:45560 -u lqbpyceupn

-o p1.qsd2xjpzfky.site:45560 -u odiqldkee2

-o p5.mdfr6avyyle.online:45560 -u jodkrofar

-o p5.qsd2xjpzfky.site:45560 -u dkw1kaxlep


메인 제어 모듈은 악성코드 패키지 파일인 MsraReportDataCache32.tlb 파일을 압축 해제하고 공격모듈과 모네로 코인 채굴 프로그램 (TrustedHostServices.exe) 을 생성 및 실행 한다.

[그림7] 메인 제어 모듈의 주요 행위 코드


또한 이전 버전으로 추정되는 다음 파일들을 삭제하고 서비스 중지와 작업 스케줄을 삭제 한다.

 파일 삭제

dnsclientprovider_userdata.mof

NrsDataCache.tlb

SecUpdateHost.exe

ServicesHost.exe

settings7283.dat

SysprepCache.ini

vmichapagentsrv.dll


서비스 중지 및 작업 스케줄 삭제 

("schtasks.exe", " /Delete /TN \"\\Microsoft\\Windows\\UPnP\\Services\" /F");

("sc.exe", " stop vmichapagentsrv");

("sc.exe", " delete vmichapagentsrv");

("schtasks.exe", " /End /TN \"\\Microsoft\\Windows\\Tcpip\\TcpipReportingServices\"");

("schtasks.exe", " /Delete /TN \"\\Microsoft\\Windows\\Tcpip\\TcpipReportingServices\" /F");


Mongoose 기반의 자체 웹 서버 기능이 있어서, 다른 감염 시스템에게 MsraReportDataCache32.tlb 패키지파일 전송을 담당 하며 포트 26397 를 사용한다. 또한 외부로 인터넷 연결이 가능하면 원격 서버로부터 악성드 패키지 파일을 다운로드 받는다. 


[그림8] 다운로드 관련 코드


*.tlb 패키지는 다음 웹 서버 (메인 제어 모듈이 담당)를 통해 업데이트되며 다운로드 주소는 다음과 같다.


 접속 주소

 포트

rer.njaavfxcgk3.club/f79e53

ccc.njaavfxcgk3.club/a4c80e

ccc.njaavfxcgk3.club/5b8c1d

ccc.njaavfxcgk3.club/d0a01e

4431

4433

4433

4433


현재 V3에서는 다음 진단명으로 진단 하고 있다.


- 파일 진단 : Trojan/Win32.Agent.C2342864 (2018.01.08.04)

- 파일 진단 : Backdoor/Win64.Agent.C2427598 (2018.03.13.01)


Posted by 분석연구팀