작은 메모장

악성HWP문서 분석_PostScript 1 본문

KISA 사이버 보안 훈련/스피어피싱 대응 심화

악성HWP문서 분석_PostScript 1

으앙내눈 2023. 5. 30. 01:26

하나의 예시를 보자

 

일반적인 한글 파일

그러나 이를 실행하게 되면

 

윈도우 시작 프로그램에 이상한 파일이 생긴것을 확인 가능

또, 문서 상단 알수없는 크기의 영역이 잡힌 것을 확인 가능

이것이 바로 PostScript로 공격을 시행한 것임

 

PostScript?

어도비에서 만든 언어

각종 고화질 벡터 이미지를 표현 가능

 

어떻게 악성 코드가 생긴 것?

악성 PostScript가 주입된 HWP문서를 열람하게 되면 HWP 프로세스가 실행

실행된 HWP 프로세스는 문서를 파싱하여 사용자에게 뷰로 보여줌

HWP는 문서를 뷰로 처리하는 과정에서, PostScript가 있는지 확인

있다면, ghostscript를 실행 함 (ghostscript는 PostScript를 해석하는 인터프리터)

실행된 ghostscript는 코드를 해석 후 실행하고, 이 과정에서 공격자의 코드가 시작 프로그램에 악성 프로그램을 생성

 

 

악성 HWP 문서의 트리아지

HWP 문서는 OLE구조를 기반으로 함

여러 스토리지와 스트림으로 구성

한글문서 5.0 파일 형식(출처: https://www.hancom.com/etc/hwpDownload.do)

각 스토리지는 문서의 각 구역을 담당하고, 스트림은 문서 내용의 형식을 담당

PostScript는 바이너리 데이터 영역에 위치

바이너리 데이터는 BinData 스토리지 아래 BinaryData0, 1, ...형식으로 존재

이 부분을 자세히 살펴보면 됨

 

oledump를 사용하여 악성 HWP문서의 구조를 파악

2번에 BinData/BIN0001.eps라는 스트림이 존재

eps? Encapsulated PostScript의 약어 => 악성파일을 캡슐화했음, 보통 문서 작업 시 Postscript를 사용하지 않음

이 스크립트를 자세히 보기 위해, 저 스크립트에만 oledump를 다시 적용

데이터가 깨져서 나옴

데이터 추출은 가능한 것으로, 이를 다른 형태로 저장

 

스크립트 파일을 다시 열어봄

나오긴 나왔는데 읽을 수가 없음

스크립트 파일은 읽을 수 있는 형태여야 하는거 아님? =>

이미지 및 벡터 파일을 그대로 담게 되면 문서 파일 용량이 어마어마하게 커짐

그래서 이미지/벡터 파일은 zlib 알고리즘을 사용하여 데이터를 압축 후 저장하게 됨

이 스크립트 파일도 악성 코드지만 이미지/벡터의 복호화 과정을 거치므로, zlib으로 압축 됨