본문 바로가기

Malware_Study

DOCX 파일 구조에 대해

안녕하세요 오늘은 Wargame Write Up이나 백준 문제 풀이가 아닌 개념에 대한 블로그를 작성하고자합니다.

대외활동을 하면서 악성코드와 관련한 공부를 지속적으로 해오고 있는데, 해당 과정에서

추가로 궁금한 점도 생기고 처음 알게된 정보도 많아서 이를 공유하고자합니다.

 

해당 글에서는 DOCX 파일 구조에 대해 설명하고, 다음 글에서는 MalwareBazaar에서 다운로드 받은 샘플을

직접 분석하는 시간을 가져보도록 하겠습니다.

 

doc 파일과 docx 파일은 똑같은 word파일처럼 보이지만, 차이점이 존재합니다.

doc 파일은 바이너리 형식의 오래된 MS Word 파일 포맷으로,

OLE Compound File 위에 문서 데이터, 서식, 매크로, 이미지 등이 이진 블록 형태로 저장됩니다.

독점적인 바이너리 형식이었기 때문에 내부 구조가 복잡하고, OOXML처럼 쉽게 해석하기 어려운 특징이 있습니다.

 

docx 파일은 Microsoft Word 2007 이후 도입된 OOXML(Office Open XML)기반 포맷이며 실제로는 ZIP 압축파일입니다.

내부에 XML 문서와 리소스(이미지, 스타일, 설정 등)가 폴더 구조로 정리되어있습니다.

직접 docx 파일을 만들어서 확인해보겠습니다.

Test.docx

 word 파일을 하나 만들어 글자를 조금 적어 저장해보았습니다.

이후 해당 파일의 복사본을 하나 만들어 파일 확장자를 ZIP으로 바꾸고 압축해제하면 다음과 같은 결과가 나옵니다.

ZIP파일 내부 모습

파일의 내부 모습을 보면 _rels, docProps, word, [Content_Types].xml 파일이 존재합니다.

먼저 _rels 폴더는 파일의 각 부분들이 어떻게 연결되어있는지 관계를 정의하는 .rels 파일을 담고 있습니다.

_rels 내부 모습

docProps 폴더는 문서의 메타데이터를 포함하는 폴더입니다.

해당 폴더에는 애플리케이션 정보를 담고 있는 app.xml 파일과

제목, 작성자 등 핵심 정보를 담고 있는 core.xml 파일이 존재합니다.

docProps 내부 모습

word 폴더에는 문서의 가장 핵심적인 내용이 담긴 폴더입니다.

안에는 텍스트 본문(document.xml), 이미지(media), 스타일(styles.xml) 등 문서의 핵심 요소들이 포함되어있습니다.

word 내부 모습

마지막으로 [Content_Types].xml 파일에는 이 DOCX 파일을 구성하는 모든 파일의 종류(타입)를 정의한 목록표입니다.

MS Word와 같은 프로그램은 이 파일을 가장 먼저 읽어 각 구성 요소가

XML 파일인지, 이미지 파일(JPEG, PNG)인지 등을 파악하고 그에 맞게 처리하는 과정을 거칩니다.

실제로 해당 파일을 열어보면

[Content_Types].xml

패키지를 로드하고, 파일 목록 확인도 하고 있으며 규칙 적용 및 안내하는 설명서임을 알 수 있습니다.

 

DOCX 파일의 이러한 구조는 피싱 메일에서 악성코드로 자주 사용되고 있습니다. 공격자들은 파일의 정상적인 기능과 구조적 특징을 교묘하게 악용하여 사용자의 시스템을 감염시키며, 주요 공격 방식은 다음과 같습니다.

 

첫째, '원격 템플릿 삽입' 방식입니다. 공격자는 문서와의 관계를 정의하는 document.xml.rels 파일이나 설정 파일인 settings.xml을 조작합니다. 이를 통해 사용자가 문서를 열람할 경우 공격자의 서버에 있는 악성 매크로가 포함된 원격 템플릿 파일을 자동으로 불러오게 됩니다. 이후 사용자에게 콘텐츠 사용과 같은 버튼을 누르도록 유도하여 매크로를 실행시키게 됩니다.

 

둘째, '임베디드 OLE(Object Linking and Embedding) 객체'를 활용하는 방식입니다. 이는 word/embeddings 폴더내에 악성 스크립트나 실행 파일을 숨겨두는 기법입니다. 문서에는 '청구서'나 '알림'아이콘처럼 보이는 객체를 삽입하여 사용자가 이를 더블 클릭하도록 유도하고 사용자가 누를 경우 숨겨진 악성 코드가 동작하게 됩니다.

 

셋째, '하이퍼링크와 프로토콜 핸들러'를 악용하는 방식입니다. 문서 내의 텍스트나 이미지에 악성 링크를 심어두고, 사용자가 이를 클릭하면 ms-로 시작하는 특정 시스템 프로토콜을 통해 악성코드를 실행합니다. 과거의 실제 사례로 'Follina' 취약점이 있습니다. 또한, 악성 웹페이지로 연결하여 사용자가 모르는 사이에 악성 프로그램을 설치하는 '드라이브 바이 다운로드' 공격을 수행하는 경우도 있습니다.

 

이외에도 HTML이나 RTF 형식의 외부 콘텐츠를 문서에 병합하는 'altChunk' 기능이나, 동적 데이터 교환(DDE), ActiveX, customXML 등 파일의 복잡성을 이용한 다양한 고급 기법들이 사용되고 있기 때문에 추가적인 분석이 필요합니다.

 

이처럼 다양하면서 정교한 공격 방식이 존재하기 때문에 우리는 출처가 불분명한 문서 파일을 열람할 때 각별한 주의가 필요합니다. 다음 글에서는 실제로 docx 파일이 어떻게 구성되어 악용되었는지 분석해보겠습니다.

 

감사합니다.

 

'Malware_Study' 카테고리의 다른 글

XLSX 파일 구조에 대해  (0) 2025.09.19
DOCX 악성파일 분석(우크라이나 캠페인)  (0) 2025.09.17