최근에 docm등 악성 매크로가 포함된 악성메일이 많이 유입되어 간단한 분석 방법부터 공부하면서 정리했습니다. Sandbox나 여러가지 편리한 방법이 있지만 수작업으로 VBA Script를 추출해서 소스코드를 분석하는 하나의 방법입니다. 


편리한 방법은 자동 추출해 주기 때문에 굳이 아래 절차가 필요하지 않습니다. 수작업의 장점이라면 자동화에서 놓치는 세세한 부분을 인지할 수 있어 시간적 여유가 될때 또는 공부할때 이해도를 높여주기 때문에 꼭 한번쯤 해봐야할 과정인거 깉습니다.



악성 매크로가 포함된 DOCUMENT에서 VBA Script를 추출하는 방법


※ 샘플파일 정보

- 파일정보

  파일명 : 6973x9h93r24qivq.dotm

  MD5   : 9590b3f2809fd3304ffe284da31c3666


- dotm 파일이란?

  .DOTM File

  File extension: DOTM

  File type: Microsoft Office Open XML Format Template with Macros Enabled

  참고 URL : http://filext.com/file-extension/DOTM


※ VBA Script 추출방법


추출방법은 크게 2가지 방법이 있을거 같습니다.

- 직접추출 : MS Office 문서를 열어 VBA Editor에서 직접 추출

- 간접추출 : 오피스 문서 분석툴을 활용하여 추출하는 방법


일단 직접추출할 경우 보통 자동으로 실행되어 악성코드에 감염될 가능성이 높아, 두번째 방법에 대해서 본 문서에서는 기술합니다.


인터넷에 검색하면 여러가지 툴이 많이 있으며 여기서는 윈도우에서 압축해제 후 바로 사용이 가능한 OfficeMalScanner를 사용하였습니다.


OfficeMalScanner.zip

http://www.reconstructer.org/code/OfficeMalScanner.zip


사용법

- OfficeMalScanner <PPT, DOC or XLS file> <scan | info> <brute> <debug>

예시)

- OfficeMalScanner evil.ppt scan brute debug

- OfficeMalScanner evil.ppt scan

- OfficeMalScanner evil.ppt info


C:\>OfficeMalScanner.exe 6973x9h93r24qivq.dotm info


최근에는 2007 이상의 버전이 많이 사용되고 있어 inflate 옵션을 사용해서 .bin파일을 추출하는 방식을 사용해야 한다.



추출된 파일은 %LOCALAPPDATA%\Temp\DecompressdMsOfficeDocument 폴더에 저장된다.


아래 명령을 사용해서 현재 폴더로 가져오면 DecompressedMsOfficeDocument\word 폴더에 vbaProject.bin 파일이 있습니다.


C:\>move %localappdata%\temp\DecompressedMsOfficeDocument .\



VBA Script는 vbaProject.bin 파일에서 다음과 같이 추출이 가능합니다.



위의 폴더로 이동하면 다음과 같은 파일을 확인 할 수 있습니다.



에디터 프로그램으로 열람하면 VBA Script를 볼 수 있습니다.


여기 까지 매크로 악성코드 문서에서 VBA Script 추출하는 방법 하나의 사례를 설명했습니다.


위의 방법을 Windows Batch Script로 구현하였습니다.

아래 Scanner 변수의 officemalscanner.exe의 경로를 기입하고 원하는 위치에서 파일을 실행시키면 자동으로 vba 파일을 추출해 줍니다.

getVBA.bat

※ 세부내용

- 파일명칭 : getVBA.bat

- 설정확인 : 세번째 줄의 scanner의 Full Path를 변경

- 실행방법 : docm, xlsm, pptm, dotm 등 매크로가 포함된 파일이 있는 곳에 batch파일을

                복사 후 더블클릭합니다.

                파일명과 동일한 폴더가 생성되며 하위 VBAPROJECT.BIN-Macro의 폴더에

                VBA 소스코드 파일이 저장되어 있습니다.

------------------------------------------------------------------------------------------------

@echo off

REM Script by N3015M.tistory.com 2016-05-25

REM Plese modify the officeMalScanner paths correctly.

SET scanner=c:\maltest\OfficeMalScanner\OfficeMalScanner.exe


ECHO Step1. Check OfficeMalScanner Program 

ECHO        LOCATION : %scanner%

IF EXIST %scanner% (

ECHO        - The file be found

ECHO.

ECHO Step2. inflate Office file

IF EXIST *.???m (

ECHO        - The dotm extension file be found.

ECHO.

ECHO Step3. Extracting VBAProject file

FOR %%f IN ("*.???m") do (

START /MIN /WAIT CMD /C %scanner% "%%f" inflate

MKDIR "%%~nf"

START /MIN /WAIT CMD /C MOVE /Y %localappdata%\temp\DecompressedMsOfficeDocument .\"%%~nf"\

IF EXIST  ".\%%~nf\DecompressedMsOfficeDocument\word\vbaProject.bin" (

START /MIN /WAIT CMD /C %scanner% ".\%%~nf\DecompressedMsOfficeDocument\word\vbaProject.bin" info

START /MIN /WAIT CMD /C MOVE /Y ".\VBAPROJECT.BIN-Macros"  .\"%%~nf"\

ECHO        - The %%f is extraced.

) ELSE (

ECHO       - The vbaProject.bin canot be found, Please Check and try again.

  )

)

)

ECHO - Finished.

) ELSE (

ECHO        - The file canot be found, Please Check the location and try again.

)

timeout 10


위와 같은 방식으로 VBA Script 파일 추출이 가능하지만 추가적으로 vbaProject.bin의 구조를 이해하고 있는게 VBA에 불러와서 디버깅 하면서  분석이 가능하게 됩니다.  소스코드만 보고 분석해도 되지만 디버깅하면서 분석하면 여러가지 편리한 점이 않습니다.


여기까지 VBA Script 추출 방법에 대한 기술이었으며 시간이 될때 예시를 하나씩 설명해서 동작 벙법을 봐보도록 하겠습니다.

Posted by n3015m
:
BLOG main image
'네오이즘'의 보안LAB 블로그입니다........... n3oism@gmail.com by n3015m

카테고리

분류 전체보기 (228)
[ HappyDevTool ] (29)
[ HappyToolRelease ] (4)
[Book] (6)
[ Security Studies ] (0)
- CII (2)
- BigData (2)
- Web Hacking (10)
- SQL Injection (25)
- Mobile Security (9)
- Network (6)
- OperatingSystem (4)
- Malware & Reversing (4)
- Phishing (5)
- Compliance (0)
- Programming (13)
- Tools (13)
- IoT (6)
- etc (21)
[Pentration Testing] (3)
[OS X] (4)
[ Security Trends ] (16)
[ Fixing Guideline ] (7)
My Way, My Life (34)
About Me (2)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

Total :
Today : Yesterday :