본문 바로가기

Malware_Study

XLSX 파일 구조에 대해

안녕하세요 오늘은 저번 DOCX 구조에 대한 글에 이어 이번에는 XLSX의 파일 구조에 대해 알아보겠습니다.

저번에 작성하였던 것처럼 XLSX 파일 구조에 대해 설명하고, 다음 글에서는 MalwareBazaar에서 샘플을

직접 다운로드 받아 어떻게 악성코드에서 사용되는지 분석해보겠습니다. 

 

XLS, XLSX 파일은 DOC/DOCX처럼 차이점이 존재합니다.

XLS 파일은 바이너리 형식의 오래된 MS Excel 파일 포맷이며 OLE Compound File 위에

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

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

 

XLSX도 사용자에게는 단일의 Excel 파일처럼 보이지만, 실제로는 ZIP 패키지 기반의 OOXML(Office Open XML)포맷입니다. 

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

저번 글처럼 직접 Excel 파일을 만들어서 확인해보겠습니다.

Excel

임의로 데이터를 작성한 후 저장하였고, 기존 Excel 파일을 복사하여 

파일 확장자를 ZIP으로 변경하고, 압축해제하면 다음과 같은 결과를 확인할 수 있습니다.

ZIP 파일 내부

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

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

_rels 폴더 내부

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

app.xml, core.xml 파일이 여기에 존재하는데,

app.xml은 애플리케이션 정보를, core.xml은 제목, 작성자 등 핵심 정보를 포함하고 있습니다. 

docProps 폴더 내부

xl 폴더는 가장 핵심적인 내용이 담겨있는 폴더입니다.

_rels는 workbook.xml이 참조하는 다른 파트들과의 관계를 정의하며

theme은 전체 문저의 색상/글꼴 조합 등 테마 조합을 담고 있습니다.

worksheets는 각 워크 시트의 셀 데이터, 수식, 행/열 속성, 하이퍼링크 등을 포함하고 있으며

styles.xml은 셀 서식을 정의하고 있습니다. 추가로 데이터 표현에 대한 설정도 담고 있습니다.

다음으로 workbook.xml 파일에는 워크북의 메타(시트 목록, 시트 순서 등)을 정의하고 있습니다.

이외에도 sharedStrings.xml, vbaProject.bin, media 등 엑셀 파일의 형태에 따라 다양한 파일이 존재할 수 있습니다.

xl 폴더 내부

ZIP 파일의 마지막 파일인 [Content_Types].xml은 각 파트의 콘텐츠 타입을 정의하고 있습니다.

직접 xml 코드를 확인해보겠습니다.

<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
<Default Extension="xml" ContentType="application/xml"/>
<Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>
<Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>
<Override PartName="/xl/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/>
<Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/>
<Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/>
<Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/>
</Types>

코드를 직접 확인해보면 특정 경로에 있는 파일에 대해 명시적으로 ContentType을 지정하고 있습니다.

엑셀 파일이 어떤 파일들을 포함하고 있으며, 각각의 용도가 무엇인지 설명하고 있는 매핑 파일임을 확인할 수 있습니다.

해당 매핑이 없을 경우 프로그램은 XML이 workbook인지, sheet인지 구분하지 못하기 때문에 

XLSX 파일의 무결성과 구조 파악에 있어 매우 중요한 역할을 수행합니다. 

 

이러한 구조를 가진 XLSX 파일은 악성코드의 드롭퍼 역할을 수행하는데 쓰이는 경우가 존재합니다.

공격 방식을 정리하면 아래와 같습니다.

 

- 악성 매크로 방식

  • 가장 고전적이고 널리 사용되는 방식
  • 공격자는 사용자가 문서를 열람할 때 '콘텐츠 사용' 버튼을 클릭하도록 유도하여 VBA 매크로를 실행시킵니다
  • workbook.xml.rels 파일이나 설정 파일을 조작하여 사용자가 문서를 열 때 공격자 서버의 악성 원격 템플릿 파일을 자동으로 불러오게 만드는 ‘원격 템플릿 삽입’ 공격과 결합되기도 합니다

- 임베디드 OLE 객체 활용

  • xl/embeddings 폴더 내에 악성 스크립트(VBS, PowerShell)나 실행 파일을 숨겨두는 기법
  • 문서에는 ‘청구서’, ‘견적서’ 아이콘 처럼 보이는 객체를 삽입하여 사용자가 더블 클릭하도록 유도. 사용자가 객체를 실행하는 순간 숨겨진 악성코드가 동작하여 시스템이 감염됩니다

- 하이퍼링크와 프로토콜 핸들러 악용

  • 문서 내의 텍스트나 이미지에 악성 웹사이트로 연결되는 하이퍼링크를 심어두는 방식
  • 사용자가 이를 클릭하면 자신도 모르게 악성 프로그램이 설치되는 드라이브 바이 다운로드 공격에 노출될 수 있음

- Excel 4.0 매크로(XLM)

  • 최근 공격에서 재등장한 기법으로 워크시트에 XLM 매크로를 숨겨 실행하는 방식

이외에도 다양하면서 정교한 공격 방식이 존재하므로 출처가 불분명한 문서 파일 열람시 주의가 필요합니다.

악성코드 분석을 진행하면서 추가로 확인되는 방식이 있다면 업데이트 하도록 하겠습니다.

 

감사합니다.

'Malware_Study' 카테고리의 다른 글

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