Security/Malware

[문서형 악성코드] 악성 .doc 파일 분석

chimita 2022. 11. 28. 17:23
파일 명 구조 Hash (SHA1)
사이버공격 대응 방법 안내  .doc  eeefb9c419d40bf7c11fff25871381c8ae2bbe0c

*IOC : 침해사고 대응 현황 및 침해 지표


그림 1 문서 실행 화면

문서를 실행해보니 위와 같은 문서가 출력되었다. 문서가 보호되었다며 ‘콘텐츠 사용’ 버튼을 누르길 유도하고 있다. 이을 누르게 되면 내장된 악성 매크로가 동작하여 사용자의 PC에 악성코드를 감염시켜 악성 행위가 동작한다.

 

그림 2 문서 실행 화면 2

분석을 위해 ‘편집 사용’ → ‘콘텐츠 사용’ 버튼을 눌러 보았더니, 별다른 반응이 일어나지 않았다. 일반 사용자라면 자신이 악성행위에 감염되었는지 전혀 몰랐을 것이다.

 

컴퓨터 내부에서 어떤 행위가 벌어지고 있는지 매크로를 통해 분석해 볼 것이다.

 

그림 3 매크로

워드 프로그램 내에서 편집 기능을 사용하여 매크로에 들어있는 코드를 확인하고자 오픈소스 툴인 OfficeMalScanner를 사용했다.

 

OfficeMalScanner은 MSOffice를 분석할 때 주로 사용하며 악성코드를 탐지하고, VBAScript를 암호 구분 없이 추출해주는 등 다양한 분석을 지원해주는 툴이다. 해당 실습에서는 VBAScript를 추출하기 위한 목적으로 사용할 것이다.

그림 4 OfficeMalScanner로 VBAScript 추출

여러가지 옵션이 있지만, Info 옵션을 사용하면 VBAScript를 추출할 수 있다. [그림 4]을 보면 [Scanning for VB-code ~]라고 출력되었는데 이는 VBAScript를 의미한다. ‘ThisDocument’ 파일로 추출이 되었고 밑에 노란 글씨로 파일이 저장된 위치를 알려주고 있다. 해당 경로에 들어가 파일을 확인해보자.

 

그림 5 ThisDocument

파일이 잘 추출된 것을 확인했다.

 

그림 6 ThisDocument 내용

파일 첫 부분에 VB_~ 가 나와있는 것을 보아 VBAScript가 맞음을 다시 확인할 수 있다. 이후 밑으로 내리면 몇개의 함수가 나오는데, 그 중 MainPage에 악성 스크립트가 있을 것이라 예상된다.

 

그림 7 Sub MainPage
그림 8 Sub MainPage 문자열 재배치

먼저 MainPage 부분에 “” 형태로 문자열이 곳곳에 있는 것을 확인할 수 있다. 어떤 내용을 포함하는지 확인하기 위해 “” 문자열만 가져와서 [그림 8]처럼 정리했다. 정리한 내용을 토대로 분석해보자면, [그림 7]에 Replace 함수가 있다.

이 함수는 특정 문자열을 변경, 치환하는 함수로 hs에 저장된 ‘xxx’를 ui 값으로 변경한다. 따라서 hs에는 다음과 같은 URL을 요청하는 문자열이 저장된다.

 

http://samsoding.homm7.gethompy.com/plugins/dropzone/min/cs/list.php?query=1

 

다음으로 ‘1589989024.xml’ 문자열을 rp에 저장하고, ActiveDocument 함수를 이용하여 ‘1589989024.xml’ 문서를 생성하여 실행한 후 닫는다. 이후 윈도우 명령어인 WMI를 사용하여 wscript.exe를 e와 b 옵션과 함께 실행한다. 이 때 e와 b 옵션은 xml 같이 정상적인 문서가 아니더라도 실행하고 오류나 경고 메세지를 출력하지 않는다. 이렇게 분석한 것을 기반으로 매크로를 실행시켜 보자.

 

그림 9 매크로 실행

매크로를 실행했더니 새로운 워드 문서가 열렸다가 닫히는 것을 볼 수 있다.

그림 10 새로 열린 워드 문서

해당 문서의 이름을 보면 위에서 분석했던 값과 동일한 ‘1589989024’인 것을 확인할 수 있다.

 

그림 11 매크로 편집 창

매크로 편집 창에 새로운 Project가 생기며 ThisDocument가 생긴다. 이 문서를 편집창에서 확인하고자 했으나 [그림 10]에서 열린 문서로 매크로 편집 창이 가려져 제대로 확인이 되지 않았지만, 돌아가는 상황을 봐서는 위에서 추출한 VBAScript가 정확히 작동하고 있는 것을 알 수 있다.

 

어떤 프로세스가 동작하고 있는지 확인하기 위해 Process Monitor 도구를 사용했다.

 

그림 12 wscript.exe 동작

WMI 명령어를 사용하는 것으로 분석했으므로, ‘wininit.exe → services.exe → svchost.exe → WmiPrvSE.exe’ 부분을 살펴보았다. 다시 매크로를 실행하여 보니 언급한 위치 하위 프로세스로 분석했던 wscript.exe 가 e와 b 옵션을 사용하여 동작하는 것을 확인할 수 있었다. 그런데 wscript.exe 가 3초도 채 되지 않아 종료된 것을 보아, 요청한 URL 주소가 C&C 서버이고 그 곳에서 또 다른 악성 파일을 다운 받는 형태인 것으로 판단된다. [그림 8]에서 확인했던 GET 요청이 잘 이루어지는지 WireShark 도구를 이용해 확인해보자.

그림 13 Wireshark로 확인한 GET 요청

분석한 URL 주소가 잘 요청되었고, 해당 주소에 접근한 것도 알 수 있다.

현재 해당 주소(C&C서버)가 막혀 있어서 더 이상의 분석이 불가능했다.