본문 바로가기

정보보안/Spear-Phishing

[Spear-Phishing] Malicious HWP Document Analysis

728x90

1. HWP 악성감염의 징후

  • OLE 스트림을 포함하고, 실행파일을 포함하고 있다.
    - BinData 스토리지에 OLE 확장자를 가지고 있는 스트림이 존재하는지 확인
    - HWP 파일의 압축을 푼 후, 패턴매칭을 활용해 실행 파일을 포함하고 있는 스트림이 존재하는지 확인
  • 포스트 스크립트를 포함한 스트림이 존재한다.
    - PS또는 EPS 확장자를 가지고 있는 스트림이 존재하는지 확인
    - 스트림 내용을 확인하여 정상적인 포스트 스크립트인지 확인
  • 동일한 내용(사이즈)의 스트림이 다수 존재한다.
  • 실행파일을 포함한 스트림이 존재한다.
    - HWP 파일의 압축을 푼 후, 패턴 매칭을 활용해 실행 파일을 포함한 스트림이 있는지 확인
  • 스크립트를 포함하고 있다.
    - 스크립트 스토리지를 조사하여 스크립트를 포함하고 있는 스트림이 존재하는지 확인

 

OLE란?

DOC, HWP, XLS, PPT - OLE Compound Document

- 파일 시스템처럼 서로가 폴더랑 스트림 구조로 이루어져,
  해석하기 위해서는 전용 도구가 필요하다.

DOCX, HWPX, XLSX, PPTX - ZIP - OOXML ( Office Open XML )

- OOXML은 MS office 뿐 아니라 한컴도 사용하는 포맷

- XML을 갖고 대부분 데이터와 좌표값을 가져 객체 형태로 관리

- ZIP기반이므로 ZIP으로 바꿔 압축을 풀 수 있다.

 

따라서 실제 분석시, OLE인지 OOXML인지 구분하여

 

OLE - OLE 컴파운드 도큐먼트 파싱 프로그램

 

OOXML - 압축해제

 

를 해야한다.


2.  RealWorld Analysis

 

실제 북한 해커가 사용했던 악성문서를 분석해보겠다.

 

이 파일의 경우 OOXML이므로 zip으로 변환하여 압축을 해제한다.

 

zip

 

이제부터 해야할 일은 다음과 같다.

 

1. OLEDUMP도구를 이용하여 악성 징후가 있는지 확인

 

2. YARA룰을 이용하여 PE 파일을 내장하고 있는지 확인

 

PE파일의 구조

- "MZ" 문자열로부터 60byte 이후 4byte의 필드값(좌표)를 가짐

- 그 아래에는 PE@@라는 파일 시그니처가 있다.

이때 시그니처가 좌표값을 참조해서 점프할 수 있다.

 

우선 YARA 룰을 만들어보자.

 

YARA 룰

 

룰은 위와 같이 만들 수 있다. 리틀엔디언방식이므로 50 = P, 45 = E가 되겠다.

 

 

이렇게 압축해제된 파일에 룰을 적용해주면 실행파일이 있는 스트림을 찾을 수 있고

 

PE_Carver를 이용하여 실행 파일을 카빙해준다.

 

Carving

파일이 livebin형식이므로 bin으로 확장자를 변경해준 후 확인해보면

 

 

위와 같은 CreateMutex를 볼 수 있는데, 이는 악성코드의 중복 방지를 위해 사용된다.

 

감염된 상태에서 다시 감염을 시도하면 중복 오류가 발생해 공격을 못 할 수도 있기 때문이다.

 

double up

 

이때 mutex를 생성할 때 이름을 정해줘야 하는데

 

만약 double up이라는 mutex가 있으면 악성코드가 없는 방향으로 발전할 것이라고 예측할 수 있다.

 

Powershell

 

또한 내려가다보면 Powershell의 코드가 Base64로 디코딩 된 것을 알 수 있다.

 

리틀엔디언 형식으로, 유니코드라 한 칸씩 띄어져 나온다는 것을 알 수 있다.

 

 

이후 HxD로 띄어쓰기를 제거해준다.

 

 

이제 이 코드를 CyberShef 도구로 디코딩해보면

 

Code

 

위와 같은 Powershell Code를 얻을 수 있다.

 

드디어 악성코드를 분석할 수 있게 되었다.


3. PowerShellCode Analysis

 

먼저 아래와 같은 함수로 자동실행을 설정한다.

 

Auto

 

그 다음 악성코드를 위장하고, 복사하며

 

정보 수집 및 C2통신을 위한 작업을 한다.

 

C2

 

직접적인 악성행위는 다음에서 수행된다.

 

데이터의 타입에 따라 각자 다른 행위를 수행하는 것을 볼 수 있다.

 

Code

 

정리해보면 악성 HWP 파일은

 

1. PE파일이 내장, 덤프되는 경우

 

2. POST 스크립트 내장, 실행하는 경우

 

3. 익스플로잇을 내장, 셸코드로 실행하는 경우

 

위 3가지 경우인데, 이번에는 1번 경우를 살펴봤다.

728x90