Ye0ngJae

문서형 악성코드 분석과 제작 본문

프로젝트

문서형 악성코드 분석과 제작

Ye0ngJae 2023. 1. 14. 14:28
728x90

문서형 악성코드 분석과 제작

개요

Layer7 프로젝트와 학교 정보보안프로젝트 소수전공 프로젝트로 진행한 프로젝트로써 실제 공격에 사용된 문서형 악성코드 분석과 분석 결과를 토대로 실제로 제작을 해 보았다.

팀소개

프로젝트 주제 선정 동기

최근 들어 북한이 여러 문서형 악성코드를 이용한 특정 분야 전문가에 대한 공격이 급증하는 가운데 관련 피해도 증가하고 있다. 굳이 북한뿐만 아니라 Virus Total에서 제공하는 통계자료인 Virus Total File Types 통계자료를 살펴보면 다음과 같다.

[그림 1] Virus Total File Types Stat

 

통계를 살펴보면 가장 많이 보고되는 악성 파일의 Type은 exe(실행파일)이지만, 문서형 악성코 드인 PDF, DOCX, DOC 비중이 다른 파일 타입에 비교하여 그리 낮지 않으며, 점차 증가하고 있다. 이에 우리는 이렇게 점차 증가하고 있는 문서형 악성코드의 동작 원리와 문서 프로그램의 존재하던 어떠한 취약점을 이용하여 실제 공격을 진행하는지 궁금증이 생겨 주제를 선정하게 되었다.

1. 문서형 악성코드란?

 

pdf, hwp, docx와 같은 전자 문서 파일을 악용하여 개인정보 탈취, 파일 암호화 등 악성 행위 를 하는 것을 문서형 악성코드라고 할 수 있다. 문서형 악성코드는 타 악성코드처럼 실행파일로 되어있는 것이 아니라 일반적인 전자 문서의 형태로 되어있다. 문서파일의 존재 자체로 컴퓨터에 해를 가하는 것이 아니라 사용자가 해당 문서를 열람함으로써 문서 내부에 숨겨져 있던 악성코드가 실행된다는 점에서 기존의 악성코드와는 다르다. 기존 악성 코드는 파일을 실행하면서 다른 전용 프로그램이 필요하지 않지만, 문서형 악성코드는 해당 문서 확장자에 따른 전용 프로그램이 필요하다.

1-1. 문서형 악성코드 종류

아래는 현재 MS Word / 한글 문서 작성 프로그램에서 문서 프로그램 자체의 취약점으로 흔히 쓰이는 문서형 악성코드 유형이다.

  • VBA 매크로
    MS Word에서 기본적으로 제공하는 매크로 기능을 이용하여 스크립트를 실행시키는 방식이다. MS Word의 매크로 입력 창에 사전에 작성한 악성 스크립트를 입력하면 문서가 처음 실행되었 을 때 자동적으로 매크로를 실행하여 공격자가 사전에 심어놓은 스크립트에 따라 행동을 하게 된 다. 가장 간단한 악성 스크립트인 만큼 바이러스 백신에 가장 쉽게 걸리는 매크로이다.

 

  • OLE(Object Linking and Embedding)

MS Word에서 지원하는 OLE은 문서와 기타 객체에 연결과 삽입을 도와주는 연결규약이다. 링 크와 임베드를 지원하고 있는데, 링크의 경우 기타 언어의 포인터와 비슷한 역할을 하며 소스 파 일의 데이터가 변경될 시 변경 내용에 문서에 반영된다. 임베드된 오브젝트는 소스 파일 데이터 복사본이다. 소스 파일의 데이터가 변경된다고 하더라도 변경사항이 문서에 반영되지 않는다. 링크 방식을 이용하여 외부에 악성 스크립트가 작성된 외부 문서를 자신의 문서로 불러와 해당 문서에 포함된 스크립트를 실행하는 방식이다.

  • DDE

DDE란 윈도우 응용 프로그램 간에 정보를 공유하도록 허용하는 방법이다. OLE과 비슷한 기능 을 한다고 생각하면 편하다. 공격자는 도형이나 사진 등에 DDE 기능을 이용하여 악성 스크립트 가 작성된 타 문서를 삽입하여 해당 문서에 포함되어있는 악성 스크립트를 실행하는 기법이다.

2. 문서형 악성코드 공격 동향

문서형 악성코드의 경우 북한의 해커들이 미국, 한국 등의 북한 관련 인물, 군사·과학 연구 관련 분야 종사자들을 대상으로 지속해서 공격해오고 있고, 최근 들어 점점 증가하고 있다.

 

3. 문서형 악성코드 분석

여러 악성코드 샘플 제공 사이트에서 제공하는 표본들을 분석한다.

3-1. 424-xpl

일반적으로 널리 퍼진 문서형 악성코드의 작성 방식과 다르게 본 파일은 CVE-2017-11882를 사용하는 문서이다.

3-1-1. 파일정보

3-1-2. 동작 흐름


- 424-xpl.docx


- __00______00__.doc


- 간단한 진행도

 

424.docx -> _00_______00__.doc -> vbc.exe

최종적으로 00____00__.doc 파일에서 vbc.exe라는 실행 파일을 다운로드 받는 것을 확인할 수 있었다.

3-1-3. 실행파일 구조

일단 vbc.exe 실행파일에서 중요한 함수 몇 가지만을 살펴보자.


- wWinMain

내부에서 호출되는 함수 같은 경우 WinAPI를 제외하고 vsprintf, scanf, remove, abort, sub_402EE9 함수가 호출되는 것을 확인할 수 있다. abort로 프로그램을 비정상적으로 종료하는 것으로 보아 dwBytes가 3이면 안 되는 것 같다. 어쨌든 dwBytes가 3이 아니면 조건문을 건너뛰고, sub_402EE9 함수로 넘어가게 된다.
- sub_402C34


- sub_402C34

 

sub_402EE9 내부에 존재했던 sub_402B88 함수를 보면 처음에 SetDefaultCommConfigW로 통신 프로그램을 구성하고 있는데, 이를 통해 공격자에게 무언가를 보낼 거란 걸 추측할 수 있고, 이는 sub_402C34 함수에서 얻었던 컴퓨터 정보일 확률이 높다. 이런 일련의 과정이 끝나면, 다시 sub_402EE9로 돌아와 드라이브 정보, 파일 위치, 정보 등을 수정하고 스레드를 종료한다.

따라서 결국 vbc.exe 실행 파일은 피해자의 pc에 다운로드 되어 피해자의 pc에 대한 각종 정보를 획득하고 이를 공격자의 서버로 전송하는 프로그램임을 알 수 있다.

 

3-2. [붙임] 약력 양식.docx, 법제처 국가법령정보센터.doc

[붙임] 약력 양식.doc과 법제처 국가법령정보센터.doc이 같은 형식의 파일이었기 때문에 하나의 파일만 분석하였다.

 

3-2-1. 파일정보

법제처 국가법령정보센터.doc

3-2-2. 동작 흐름

 

VBA 매크로를 이용하여 동작하는 매크로임을 알 수 있다.

3-2-3. 실행코드

 

MS Word에서는 VBA 매크로 부분이 암호화되어 코드 확인이 불가능 하였기 때문에, 따로 DOCX 문서에서 VBA 매크로를 추출하는 툴을 이용하여 추출하였다.

해당 VBA 매크로 함수를 살펴보면 무엇인가 암호화된 글자로 가득한 것을 확인할 수 있다.

위 코드를 자세히 살펴 보면 변수에 문자열을 할당하고, 그 문자열에 있는 모든 부분문자열 “eila”에 대해 “” 으로 replace하고 있다. 또한 여러 문자열을 치환하여 일종의 암호화를 진행하고 있는데, 해당 코드를 다시 복호화 하여 주면 아래와 같은 코드가 나온다.

외부 링크를 통하여 파일 하나를 다운로드 받는 스크립트임을 확인할 수 있다. 분석 당시에는 해당 서버가 운영중이었기 때문에 해당 서버에 접속하여 악성코드가 다운로드 받는 코드를 수집하였다.

  • yn.txt
    yn.txt 파일 내부에 중요 함수는 다음과 같다.

yn.txt 코드 내에선, 계속해서 사용자의 로그 정보를 탈취하고 그걸 base 64로 인코딩해 post.php라는 이름의 파일로 올리고 있다. 또, 로그를 얻을 땐 del.php라는 프로그램을 내려받아 그 프로그램을 decode 함수대로 디코딩 하여 실행시킨 다음 그 결과 값을 반환하고 있다.

  • post.php

post.php 안에는 result와 거기에 들어가는 base 64로 인코딩된 문자열이 있었다. 해당 문자열 을 base 64 방식으로 decode 해주면

피해자 PC의 Log로 보이는 여러 항목이 post.php에 인자로 전달되고 있다. 이를 통해 미루어 보아 피해자 PC의 로그를 공격자의 서버로 전송하는 것 같다. 계속해서 분석하여 보자. 위에 yn.txt 파일을 보면 post.php 뿐만 아니라 del.php 파일도 호출하고 있다.

  • del.php

yn.txt의 decode 함수대로 decode를 해보니 본래의 php 코드가 나타났다. 해당 코드를 살펴 보면 사용자가 입력한 키보드값을 로그로 남겨 “Ahnlab.hwp”에 저장하고 있다. 따라서 이 악성코드가 실행되면 사용자가 입력한 키보드 정보와 프로세스 정보가 계속해서 공격 자의 서버로 올라가고 이로써 피해자 PC의 취약한 정보를 쉽게 얻어낼 수 있게 된다.

4. 문서형 악성코드 제작

 

본교 신입생 자기소개서 양식 파일을 MS WORD로 변환한 후 MS WORD의 매크로 기능을 이용하여 특정 주소의 포트로 reverse shell을 여는 악성 스크립트를 문서에 삽입하였다.

 

 

AutoOpen()과 Document_Open() 함수를 이용하여 문서를 열람할 시 자동적으로 main 함수의 매크로가 실행되도록 하였다. powershell에서이용하여 reverse shell을 여는 스크립트를 삽입하였다.

  • 시연영상 :

5. 대응방안

  1. OS 및 문서 작성 소프트웨어를 항상 최신 버전으로 업데이트한다.
  2. 신뢰할 수 없는 출처의 파일은 실행하지 않는다.
  3. 중요한 파일 같은 경우 백업하고 물리적으로 분리하여 둔다.
  4. PC에 바이러스 백신 등을 설치하고 항상 최신 버전으로 업데이트한다.

어려웠던 점 및 해결 방법

프로젝트를 진행하던 중 악성코드 표본 수집과 Visual Basic을 이용하여 작성된 악성 스크립트 분석에 어려움을 겪었다. 악성코드 표본 수집의 경우 app.any.run 사이트와 VirusTotal 등의 사이트를 통하여 악성코드 표본 등을 수집할 수 있었다. Visual Basic을 이용하여 작성된 악성코드 분석의 경우 팀원들끼리 서로 논의하며 Visual Basic 문서를 보며 분석하였다. 이렇게 나온 Visual Basic 악성코드는 상당 부분이 이미 C&C 서버가 폐쇄되어 확인할 수 없거나 표본을 제공하는 측에서 일부 값을 삭제하고 주어서 분석하는 데 어 려움을 겪었으나 다른 코드를 참고하면서 해당 코드가 어떠한 역할을 하는지 분석하였다.

5. 참고 자료

- 개념 참고 자료

- 기사 출처

- 악성코드

[붙임] 약력 양식https://app.any.run/tasks/696b92bb-46d5-48be-9370-f04b247e5f68/

attacker1.dochttps://app.any.run/tasks/3900be5e-b901-485f-9ddb-e4b3ac87f4f2/#

424-xpl.dochttps://app.any.run/tasks/30bb546b-036b-43fc-878d-00dfd1d12671/

 

※ 링크 열람에 유의할 것

728x90

'프로젝트' 카테고리의 다른 글

[Linux]Set-UID 권한 프로그램과 공격 기법  (0) 2022.03.13