vmware 파일로 위장한 악성코드

malwares.com 코드분석팀 분석 자료


<부제 : 내 컴퓨터가 DDOS에 이용되고 있어 ㅠㅠ >


1. 개요

 
실행된 파일명이 vmtoolsd.exe 이어야 동작하는 코드를 발견했다. VM에 설치되어 호스트에 영향을 끼치기 위한것인가? 아니면 단순히 분석가에게 걸리지 않기 위함인가? 하지만 설치되어있는 경로가 이상하다. 분석을 통해 C2 서버와 무슨 행위를 하는지 파악해보자 


2. 분석 정보 

분석 대상 악성코드는 관리자 패스워드 탈취, 원격 명령 실행이 가능한 백도어의 기능을 한다.
C2 Server를 가지고 있으며, 파일 드랍의 기능을 가지고 있으나 현재는 동작하고 있지 않다. 다른 포함한 기능을 살펴보며 분석한다.

(1) 시작

< Figure1.  WinMain 함수 >


프로그램의 시작지점인 WinMain을 분석해보면 실행된 자기프로세스가 시스템 디렉토리에 “vmtoolsd.exe“ 로 실행될 경우, sub_409460 함수가 동작하게된다하지만, vmtoolsd.exe는 가상OS 부팅을 도와주는 vmware 소프트웨어의 내장프로그램이다그러나 테스트해본 결과 vmware에서 실행된 OS에서도 vmtoolsd.exe는 시스템 디렉토리에 상주하고 있지않다.

두 번째로 sub_409B60 에서는 g49zp8 서비스가 등록되어 있을 경우 동작하게 되어있지만 처음 실행한 프로그램에서 서비스가 등록되어 있지는 않다.



< Figure2. sub_409C90 >


sub_409C90 에서는 자기 프로그램을 시스템 디렉토리에 복사하고서비스를 등록해 시작한다.



< Figure3. 서비스 프로시져 >


[Figure 1]에서 서비스가 등록되어 있을 경우 동작하는 프로시져를 살펴보면 시스템 디렉토리에  복사한 “vmtoolsd.exe“를 실행해주며, 실행한 프로세스가 종료되는 때를 기다려, 종료될 경우 무한히 재실행해주는 작업을 한다. 현재 실행되어있는 자신과 같은 파일을 재실행하는 이유는 프로그램 오류,사용자에 의해 프로세스가 종료되어도 새로 동작할 수 있으며,  [그림1]에서 시스템 디렉토리에서 ”vmtoolsd.exe” 이름으로 실행된다면, sub_409460 함수가 실행되기 때문에 다른 동작을 진행하게 된다. 



(3) Child Process


< Figure4.  Main >


분석한 내용에 따르면, 이전 코드는 위 함수의 실행을 위한 프롤로그로 보인다. 위 함수는 4개의 쓰레드를 생성 후,현재 클라이언트의 네트워크 가용량을 서버로 전달한다. 쓰레드는 반복적으로 돌게 되며, 메인에서 sub_407FB0 함수를 실행한다.



(4) Network Setting


< Figure5.  sub_407FB0 >


sub_407FB0 함수에 진입하면 sub_407410함수를 통해서 네트워크 설정을 진행한다.



< Figure6.  네트워크 설정 >


네트워크를 설정하는 함수에서는 IP와 PORT에 20000을 증가시켜 연결시도를 한다. 


● IP :   205.209.158.174

● PORT: 48080


20000을 증가시킨 값은 위와 같다. 현재는 연결이 되고 있지않으나 malwares.com 에 저장된 이력에 따르면, 다른 포트로도 사용된 이력이 있어, 다른 악성코드의 출현이 예상된다.

해당 이력은 [Figure 13]에서 확인할 수 있다.

 


(5) Send


< Figure7.  컴퓨터 정보 전송 >


sub_407FB0 함수로 돌아와서 네트워크 설정 후 운영체제, 메모리, 프로세서의 정보를 서버측에 전송한다. 서버에서는 클라이언트 관리용도로 사용할 것으로 보인다.



(6) Remote Command Recv


< Figure8.  Command 명령 >


서버에 클라이언트 정보를 전송한 후, 서버로부터 값을 반복해 전송받는다. 전송받은 값의 첫 번째 값에 따라서, 동작하게 되는데 핵심동작은 6을 전달받을 경우 실행되는 동작이다. 6번은 암호화가 되어 있어 복잡한 연산을 진행한 뒤에 사용한다. 5번은 찾는 파일이 있는지 없는지에 대한 유효값을 리턴해주며 7번은 호출해주어야만 6번을 사용할 수 있다.



(7) Command 5,7


< Figure9.  5번 명령 함수 >


5번 명령에서는 단순히 파일을 읽기모드로 존재 여부를 확인해 리턴한다.



< Figure10.  6번 명령 함수 >


7번을 호출할 경우 what_93F638을 0으로 설정한다. 위 [Figure 10] 는 서버로부터 6번 명령을 전달받을 경우 호출되는 함수인데, 1이라면 사용이 불가능하다. 또한, 한번이라도 호출될 경우 1로 설정이 되므로 반복적으로 7번 명령이 필요하다. 



(8) Command 6

< Figure11.  6번 명령 - 12개의 커맨드 >


위 함수는 12개의 switch구문에 따라서 다른 쓰레드를 생성한다. 각각의 내용은 다르나 모두 DDOS를 목적으로 생성하는 쓰레드로 보인다. 여기까지 실행되기 이전에 컴퓨터 사양, 네트워크 정보, 현재 가용중인 메모리를 서버측에 전달되던 것은 DOS 공격을 위해서 였음이였다.

12개의 커맨드는 IP random, udp flooding, http, tcp등의 공격을 수행한다.



(9) THREAD


< Figure12.  UDP Flooding >


2번째 공격으로 생성되는 쓰레드 함수로 반복적으로 패킷을 전송하는 코드를 볼 수 있다. 

“AAAAAAAAA·······” 1024개의 A를 반복적으로 보내는 동작으로 보아 UDP를 남발해 상대의 PC의 가용성을 떨어트리는 UDP Flooding 공격으로 추정된다. 또한, 반복적으로 7번 명령을 호출해주어야 하는 이유는 쓰레드를 중지하는 플래그를 활성화 하기 위한 명령이었다는것을 ExitThread() 함수 호출코드를 통해 알 수 있다.



(10) C2 SERVER


< Figure13.  MWS IP 조회 >


해당 샘플하고 통신한 도메인을 조회하면 통신한 악성 샘플 이력 2회와 maewrat.exe라는 파일명으로 악성코드가 유포지로도 사용되었던 이력이 존재한다. 현재는 연결되지 않는 URL이나, 새로운 샘플을 배포할 때 사용될 확률이 높다.



3. 파일 정보


 해쉬

 F289CAF5AA1C1077108B1F866FC36D6FCF59F6634EC0DA8D76DBC06FB4410198

 파일크기

 196,709 Bytes

 유입파일명

 X

 태그

 exe_32bit, peexe, zusy, trojan, servstart

 주요동작

 서비스 파일 드랍 및 DDOS 커맨드

 초기감염방법

 다운로드 추정

 재실행방법

 서비스

 네트워크연결

 205.209.158.174:48080




4. 진단

< Figure7.  MAX-AGENT 탐지 >

이 글을 공유하기

댓글(0)