본문 바로가기

정보보안/Spear-Phishing

[Spear-Phishing] Malicious MS-Office Document Basic Extract

728x90

1. CFBF Format vs OOXML Format

  • CFBF ( Compound File Binary Format) (DOC, XLS, etc.)
  • 파일시스템을 모사한 개념,  FAT(File Allocation Table)와 비슷
  • 여러 sector를 가짐
  • 구조의 복잡성, 호환문제에 의해 OOXML로 변경함
  • OOXML (Office Open XML) (DOCX, XLSX, etc.)
  • ZIP 포맷 형
  • Central Directory에 메타정보가 담겨있다.
  • 따라서 Central Directory만 분석해도 파일의 정보를 빠르게 파악할 수 있다.

 

두 format 모두 OLETools를 통해 분석가능한데,

 

oledump.py는 CFBF, ooxml.py는 OOXML, rtfobj.py는 RTF문서, msodde.py는 MS Office 문서를 분석할 수 있다.

 

간단하게 두 형식의 파일을 파싱해보자.

 

아래는 CFBF형식의 파일을 oledump로 열어본 것이다. 7번의 경우 매크로가 담겨있기에 표시가 되어있다.

 

 

만약 OOXML형식의 파일을 열면 다음과 같이 에러가 발생한다.

 

 

또한 OOXML 형식의 파일은 다음과 같이 zip으로 바꿔 압축을 풀 수 있다.

 

 

정리하자면 분석하고자 하는 파일이 어떤 포맷인지 확인하고 각각의 포맷에 따라

 

CFBF 포맷의 경우 oledump를 사용해 내부 자료구조와 macro 여부를 확인하고

 

OOXML의 경우 확장자를 변경해 압축을 풀어 악성스크립트 혹은 바이너리 파일을 확인한다.


2.  Analysis Procedure and Anomaly

우선 악성문서를 구별하는 방법을 알아보자.

 

VBA 스크립트 코드, DDE/DDEAUTO, 셸코드, OLE객체등이 들어있으면 악성문서일 확률이 매우 높다.

 

이렇듯 악성문서의 구성요소를 구별하는 작업을 Triage라고 한다.

 

이후 악성 스크립트와 명령어를 확보해 난독화를 해제해 분석에 용이하도록 한다.

 

마지막으로 악성 개체를 분석해 배포 서버의 도메인, 실행파일 등을 찾아낸다.

 

다음으로 이상징후를 정리해봤다.

 

1. 셸코드를 포함하고 있는가?

 

2. 매크로를 포함하고 있는가?

 

3. DDE(Dynamic Data Exchange)/DDEAUTO를 포함하고 있는가? (실시간 데이터 공유 기술)

 

4. 외부참조링크가 있는가?

 


3. Malicious Binary Extract

 

MS office 악성문서를 먼저 unzip 해줬다 (OOXML 형식)

 

 

VBA가 들어가있는 bin 파일이 보이므로 추출해준다.

 

 

추출한 파일은 vba.txt로 저장했다.

 

코드를 해석보니 base64로 인코딩 된 데이터를 바이너리로 디코딩한 후 특정파일 경로에서 rundll32를 실행하는 것으로 보인다.

 

코드에 쓰인 경로에 들어있는 이름중 lpwstr이 있다.

 

이 정보를 바탕으로 이제 base64인코딩된 dll의 데이터가 어느 xml파일에 들어있는지 찾아야한다. 

 

pattern

 

정보를 findstr명령어를 통해 추출했다.

 

 

docProps 속의 app.xml과 매칭되었다.

 

이제 인코딩된 악성파일 콘텐츠를 추출해서 디코딩해보자.

 

findstr로 추출한 내용중 base64 인코딩 문자열만 남기고 모두 지워줬다.

 

디코딩은 certutil을 통해 진행했다.

 

 

이는 바이너리 실행파일이므로 MZ라는 시그니처를 가지고 있다.

 

728x90