본문 바로가기

Malware_Study

DOCX 악성파일 분석(우크라이나 캠페인)

안녕하세요 저번 블로그 글에 이어 docx 확장자를 가지고 있는 악성파일을 분석하고자합니다.

 

샘플로 선택한 파일은 CVE-2023-36884, CVE-2023-36584와 관련이 있습니다.

Storm-0978이라는 러시아 배후 위협 행위자가 유럽과 북미 지역 기관들을 대상으로 피싱 캠페인을 벌였는데,

우크라이나 문제, 특히 우크라이나 세계 총회 및 NATO 가입 논의와 같은 지정학적 사안을 미끼로 하여 정교하게 조작된 

오피스 문서를 사용하였습니다. (Storm-0978은 악명 높은 러시아의 위협 행위자로 알려져있으며 랜섬웨어 공격과 중요 정보를 훔치기 위한 캠페인, 정부 후원 첩보 활동, 사이버 범죄 등등 밀접하게 연관되어있는 조직)

 

샘플 확보를 위해 PaloAlto Network사의 Report를 확인하고,

hash값이 일치하는 샘플을 MalwareBazaar에서 다운로드 하였습니다.

hash값과 docx 파일

VM 환경에서 뷰어로 확인해보면 다음과 같은 모습을 확인할 수 있습니다.

docx 파일 실행 모습

하지만 해당 파일은 doc 파일이라 Report와 일치하는 파일이 맞다면 docx 파일로 변환하였을때에도 정상 실행될 것이라 생각했습니다. 실제로 docx 파일로 변환하였을때에도 정상적으로 확인이 가능했으며 분석을 위해 해당 파일을 zip 형태로 변환하였습니다.

이 블로그에서 확인한 것처럼 오른쪽 사진과 같은 형태를 확인할 수 있었습니다.

분석에 앞서 매크로 존재 여부, 외부 관계, OLE 객체를 차례대로 확인해보았습니다.

python의 oletools를 통해 확인해본 결과 매크로는 존재하지 않았습니다.

다음으로는 외부 관계 확인을 위해 rels파일을 확인해보았습니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/></Relationships>

코드를 직접 확인해보면 외부 리소스를 참조하지 않고 있다는 것을 알 수 있습니다.

다음으로 OLE 객체를 확인해보았는데, rels 파일의 경우 oleObject로 끝나는 태그가 존재하지 않습니다.

밑에 존재하는 document.xml.rels 파일을 확인해보면

<?xml version="1.0" encoding="utf-8"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings" Target="settings.xml" Id="rId3" /><Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="theme/theme1.xml" Id="rId7" /><Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml" Id="rId2" /><Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering" Target="numbering.xml" Id="rId1" /><Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable" Target="fontTable.xml" Id="rId6" /><Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="media/image1.png" Id="rId5" /><Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings" Target="webSettings.xml" Id="rId4" /><Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/aFChunk" Target="/word/afchunk.rtf" Id="AltChunkId5" /></Relationships>

ole 관련 객체는 보이지 않습니다만, aFChunk 관계를 의심해볼 필요가 있습니다

해당 기능은 워드 문서 안에 다른 형식의 외부 문서를 그대로 삽입하는 기능으로 워드 프로그램이 이 문서를 열 때,

aFChunk로 지정된 외부 문서를 읽어와 현재 문서의 내용으로 합칩니다.

해당 타겟으로 설정된 /word/afchunk.rtf를 확인해보면 다음과 같습니다.

afchunk.rtf

RTF 코드는 크게 문서의 구조와 서식을 정의하는 부분, 실제 내용을 담는 부분으로 나뉘는데

중간을 확인해보면 알 수 없는 16진수값들이 존재하는 것을 알 수 있습니다.

objdata

해당 rtf 파일 내부에는 두 개의 objdata가 존재하는데, 해당 데이터를 바이너리 형태로 확인하면 다음과 같습니다

첫번째 데이터
두번째 데이터

첫번째 데이터와 두번째 데이터 모두 외부 url이 존재하는 것을 확인할 수 있습니다.

해당 url의 역할을 직접 살펴보기 위해 tria.ge 사이트를 통해 pcapng 파일을 다운로드 하여 직접 확인해보았습니다

그러나, 해당 패킷 수집 당시 503 Error가 발생하였고, 그 외 샘플들을 확인해보았지만

실제로 어떠한 데이터를 주고 받았는지는 확인할 수 없었습니다.

첫번째 사진에서 나타난 IP주소의 경우에는 TCP 통신 기록만 존재하여 추가적인 심층 분석은 어려웠습니다.

직접 패킷 내용을 확인하며 더 깊게 분석해보고 싶었지만, 다른 샘플에서 시도해보려 합니다.

 

읽어주셔서 감사합니다. 

혹시 글에서 오류나 보완할 점이 있다면 댓글로 남겨주시면 감사하겠습니다.

'Malware_Study' 카테고리의 다른 글

XLSX 파일 구조에 대해  (0) 2025.09.19
DOCX 파일 구조에 대해  (0) 2025.09.13