-
[스피어피싱] 12강 악성 HWP 문서 분석보안/스피어피싱 2024. 9. 8. 23:19
1. 악성 HWP 문서 분석
1.1 HWP 트라이지를 위한 징후
- OLE 스트림을 포함하고 있고 실행 파일을 포함하고 있는 스트림이 존재하면 악성 가능성 높음
- BinData 스토리지에 OLE 확장자를 가지고 있는 스트림이 존재하는지 확인
- HWP 파일의 압축을 푼 후 패턴 매칭을 활용해 실행 파일을 포함하고 있는 스트림이 존재하는지 확인
- 포스트 스크립트를 포함하고 있는 스트림이 존재하면 악성일 가능성이 높음
- 포스트 스크립트를 인터프립트 하기 위해 고스트 스크립트가 필요
- 한글 파일에는 이러한 고스트 스크립트가 내장되어 있음
- PS 또는 EPS 확장자를 가지고 있는 스트림이 존재하는지 확인
- 스트림 내용을 확인하여 정상적인 포스트 스크립트인지 확인
- 포스트 스크립트를 인터프립트 하기 위해 고스트 스크립트가 필요
- 동일한 내용의 스트림이 다수 존재하는 경우 악성일 가능성 높음
- 동일한 사이즈의 스트림이 다수 존재하는지 확인
- 바디 텍스트라고 부르는 섹션의 수가 여러개일 경우 = 비정상
- 여러개의 섹션이 존재하는데 완벽하게 해시값까지 같다 = 비정상
- 동일한 사이즈의 스트림이 다수 존재하는지 확인
- 실행 파일을 포함하고 있는 스트림이 존재하는 경우 악성일 가능성이 높음
- 스크립트를 포함하고 있는 경우 악성일 가능성이 높음
1.2 문서 구조
- DOC, HWP, XLS, PPT - OLE Compound Document 구조
- 파일시스템 처럼 서로가 폴더랑 스트림 구조로 이루어짐
- DOCX, HWPX,, XLSX, PPTX - ZIP - OOXML
- XML 기반으로 데이터 표현
2. 실습

분석할 한글 파일 
파일 구조 확인 file 명령어를 이용하여 분석 할 문서 파일의 구조를 파악한다.

OLEDUMP 이용 구조 파악 OLEDUMP 도구 이용하여 악성 징후 존재를 확인한다.
해당 파일의 경우 한글 파일로서 문서 내 정확한 악성 징후 판별을 위해선 zlib 압축을 풀어내야만 HWP 포맷의 자료를 읽을 수 있다.
분석 할 파일을 ZIP으로 변환 후 압축 해제를 진행한다.

ZIP 변환 
압축해제 
압축 해제 결과 압축을 해제하여 내제된 파일들이 확인되었다.
PE 파일이 존재하는지 확인을 하기 위해 YARA룰을 사용한다.
PE 파일의 구조는 다음과 같다.
- 처음 MZ
- 60 Byte Jump 하면 4 Byte 문자열(필드값) 존재
- PE@@
아래의 YARA룰은 이러한 PE 파일의 구조를 반영하여 MZ라는 문자열이 탐지되었을 시 60 Byte를 이동 후 필드값 뒤의 문자열이 PE@@인지 확인하는 YARA 룰이다.

YARA 룰 
YARA 룰 사용 PE 탐지 YARA룰 실행 결과 2개의 PE 파일이 확인되었다.
분석 수행 절차를 정리하자면 아래와 같다.
- OLEDUMP 도구 이용하여 악성 징후 존재 확인
- YARA 룰 이용하여 PE 파일을 내장하고 있는지 확인
- PE 파일이 HIT 될 경우 pe carve.py 사용
- 그 후 덤프된 carved 파일을 IDA 이용 로딩 및 추가 분석 수행...
[Comment]
- 이해 안가는 점
- File 명령어 써서 확인했을때는 CFBF 형식이라 ZIP 구조 아닐거 같은데 ZIP 구조인 이유
- 한글 파일이라 그런가?
- 분석 절차 2번까지는 수행 했는데 그 이후 부분을 못했음
공부 더해서 이해 해야함...
'보안 > 스피어피싱' 카테고리의 다른 글
[스피어피싱] 11강 쉘코드 디버깅 분석 - 쉘코드 문자열 (0) 2024.09.03 [스피어피싱] 9강 쉘코드 API 해시 패턴매칭_YARA 룰셋 (0) 2024.08.31 [스피어피싱] 8강 쉘코드 분석 절차 (0) 2024.08.31 [스피어피싱] 7강 쉘코드 개요 및 구성요소 (0) 2024.08.31 [스피어피싱] 6강 악성 문서파일의 구성요소 (0) 2024.08.31 - OLE 스트림을 포함하고 있고 실행 파일을 포함하고 있는 스트림이 존재하면 악성 가능성 높음