Data Foreniscs2009/11/25 00:47
Proneer | Security is a people problem...


Microsoft Word 2007 (.docx)에서 이미지 파일 변환 형태



Microsoft Word 2007 (.docx) 파일은 기존의 97~2003 버전에서 사용했던 Compound File Binary Format(CFBF) 구조를 사용하지 않고 Open Office XML(OOXML) 구조를 사용한다. OOXML 구조의 특징은 XML로 표현된 문서가 ZIP 형식으로 압축되어 저장된다. 자세한 각 문서의 구조에 대해서 관심이 있다면 최근 Microsoft 에서 공개한 해당 문서 포맷을 참고하기 바란다.

ZIP 파일은 압축하기 이전의 데이터들을 블럭 단위로 압축을 한다. 해당 블럭은 크기가 고정된 것이 아니라 압축할 데이터들의 수에 따라 나누어진다. 예를 들어, 두 개의 이미지 파일을 압축한다면 각각 독립된 블럭으로 압축이 되는 것이다. 다음은 ZIP 파일의 일반적인 구조를 보여준다.


(Ref. http://en.wikipedia.org/wiki/ZIP_(file_format))

MS Word 2007 (.docx) 파일도 ZIP 포맷으로 압축되어 있기 때문에 압축파일 푸는 것과 같이 압축을 풀 수 있다. 압축을 풀게 되면 "[Content_Types].xml"를 비롯하여 "word/document.xml" 파일 등 여러 개의 xml 파일로 구성되어 있는 것을 볼 수 있다. 이러한 xml 파일은 각각 독립적으로 하나의 블럭을 구성하여 ZIP 포맷으로 압축된다.

따라서 MS Word 2007 파일은 위와 같이 여러 개의 FILE ENTRY로 구성이 된다. 각 FILE ENTRY는 Local Header (로컬 헤더)라는 헤더 구조를 가진다. 로컬 헤더에는 시그니처, 암호화여부, 압축방식, 수정시간, CRC32, 압축크기, 비압축크기, 파일이름 등이 표현된다. 다음은 로컬 헤더의 구조를 보여준다. 좀 더 자세한 내용은 ZIP 포맷 문서를 참고하기 바란다.

 Offset  Decription
 0 - 3  local file header signature (0x04034B50)
 4 - 5  version needed to extract
 6 - 7  general purpose bit flag
 8 - 9  compression method
 10 - 11  last modify file time
 12 - 13  last modify file date
 14 - 17  crc-32
 18 - 21  compressed size
 22 - 25  uncompressed size
 26 - 27  file name length
 28 - 29  extra field length
 variable size  file name
 variable size  extra field


MS Word 2007의 압축 방식
로컬 헤더의 오프셋 0x08부터 2바이트 값은 압축 형식을 나타낸다. 지원하는 압축 형식은 다음과 같은데 MS Word 2007(.docx)로 파일을 저장하면 항상 Deflate(0x08) 방식으로 압축되어 저장된다.

 Value  Description
 0x00  The file is stored (no compression)
 0x01  The file is Shrunk
 0x02  The file is Reduced with compression factor 1
 0x03  The file is Reduced with compression factor 2
 0x04  The file is Reduced with compression factor 3
 0x05  The file is Reduced with compression factor 4
 0x06  The file is Imploded
 0x07  Reserved for Tokenizing compression algorithm
 0x08  The file is Deflated
 0x09  Enhanced Deflating using Deflate64(tm)
 0x0A  PKWARE Date Compression Library Imploding


MS Word 2007의 이미지 저장 형태
MS Word 2007 파일을 유심히 살펴보면 이미지 파일은 XML 파일과 조금 다르게 저장되는 것을 알 수 있다. 이미지 파일 포맷 중에 PNG, JPEG, GIF 등의 파일들은 이미 압축되어 있다. 압축된 데이터를 다시 압축하게 되면 거의 압축이 되지 않기 때문에 여러 번 압축을 하는 일은 번거로운 작업임에 틀림이 없다.

이러한 특성을 고려하여 MS Word 2007 문서에 압축된 이미지 파일을 삽입하게 되면 압축되지 않은 상태(압축 방식 값 0x00)로 FILE ENTRY 구조에 저장이 된다. 그렇다면 압축이 되어 있지 않은 비트맵(BMP)와 같은 파일들은 어떻게 저장이 될까? 이러한 궁금증에 주로 사용하는 이미지 파일을 대상으로 MS Word 2007 문서에 저장되는 형태를 조사하여 보았다.

 Original Format
 (Signature)
 Converted Format  Compression
 Method
 BMP  PNG  0x00
 GIF(GIF87a)  GIF(GIF87a)  0x00
 GIF(GIF89a)  GIF(GIF89a)  0x00
 JPEG(Exif)  JPEG(Exif)  0x00
 JPEG(JFIF)  JPEG(JFIF)  0x00
 PNG  PNG  0x00
 TIF, TIFF  TIF, TIFF  0x00
 WMF  WMF  0x08
 EMF  EMF  0x08
 EPS  WMF  0x08
 CUR  -  -
 ICO  -  -

위의 결과에서 알 수 있듯이 압축된 이미지 포맷은 모두 압축 없이 원본 그대로 저장되는 것을 알 수 있다. 하지만 압축되지 않은 파일인 BMP는 PNG로 변환되어 저장된다.

특이한 점은 WMF, EMF, EPS는 이미지를 표현할 수 있음에도 불구하고 압축되어 저장되었다. 그리고 CUR, ISO 파일은 Word 2007 문서에 삽입하는 과정에서 원본 이미지를 제대로 표현하지 못하였다.
저작자 표시 비영리 변경 금지
Creative Commons License
Creative Commons License
Posted by Proneer

TRACKBACK http://forensic-proof.com/trackback/42 관련글 쓰기

댓글을 달아 주세요

  1. CPark

    좋은 자료 감사합니다...

    2009/11/30 14:04 [ ADDR : EDIT/ DEL : REPLY ]