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으로 변환하여 압축을 해제한다.
이제부터 해야할 일은 다음과 같다.
1. OLEDUMP도구를 이용하여 악성 징후가 있는지 확인
2. YARA룰을 이용하여 PE 파일을 내장하고 있는지 확인
PE파일의 구조
- "MZ" 문자열로부터 60byte 이후 4byte의 필드값(좌표)를 가짐
- 그 아래에는 PE@@라는 파일 시그니처가 있다.
이때 시그니처가 좌표값을 참조해서 점프할 수 있다.
우선 YARA 룰을 만들어보자.
룰은 위와 같이 만들 수 있다. 리틀엔디언방식이므로 50 = P, 45 = E가 되겠다.
이렇게 압축해제된 파일에 룰을 적용해주면 실행파일이 있는 스트림을 찾을 수 있고
PE_Carver를 이용하여 실행 파일을 카빙해준다.
파일이 livebin형식이므로 bin으로 확장자를 변경해준 후 확인해보면
위와 같은 CreateMutex를 볼 수 있는데, 이는 악성코드의 중복 방지를 위해 사용된다.
감염된 상태에서 다시 감염을 시도하면 중복 오류가 발생해 공격을 못 할 수도 있기 때문이다.
이때 mutex를 생성할 때 이름을 정해줘야 하는데
만약 double up이라는 mutex가 있으면 악성코드가 없는 방향으로 발전할 것이라고 예측할 수 있다.
또한 내려가다보면 Powershell의 코드가 Base64로 디코딩 된 것을 알 수 있다.
리틀엔디언 형식으로, 유니코드라 한 칸씩 띄어져 나온다는 것을 알 수 있다.
이후 HxD로 띄어쓰기를 제거해준다.
이제 이 코드를 CyberShef 도구로 디코딩해보면
위와 같은 Powershell Code를 얻을 수 있다.
드디어 악성코드를 분석할 수 있게 되었다.
3. PowerShellCode Analysis
먼저 아래와 같은 함수로 자동실행을 설정한다.
그 다음 악성코드를 위장하고, 복사하며
정보 수집 및 C2통신을 위한 작업을 한다.
직접적인 악성행위는 다음에서 수행된다.
데이터의 타입에 따라 각자 다른 행위를 수행하는 것을 볼 수 있다.
정리해보면 악성 HWP 파일은
1. PE파일이 내장, 덤프되는 경우
2. POST 스크립트 내장, 실행하는 경우
3. 익스플로잇을 내장, 셸코드로 실행하는 경우
위 3가지 경우인데, 이번에는 1번 경우를 살펴봤다.
'정보보안 > Spear-Phishing' 카테고리의 다른 글
[Spear-Phishing] Malicious HWP Document Macro Analysis (2) | 2023.08.29 |
---|---|
[Spear-Phishing] Malicious HWP Document Triage, PostScript Analysis (0) | 2023.08.28 |
[Spear-Phishing] ShellCode Analysis (API Hash Pattern Matching) (0) | 2023.08.27 |
[Spear-Phishing] Malicious Document의 구성요소 (0) | 2023.08.27 |
[Spear-Phishing] Spear-Phishing Email Analysis (0) | 2023.08.27 |