작은 메모장

악성HWP문서 분석_오브젝트 1 본문

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

악성HWP문서 분석_오브젝트 1

으앙내눈 2023. 5. 30. 20:46

이번 목표 문서

 

트리아지

항상 하듯 파일의 스트림부터 조사

2 ~ 6 섹션에 이상한 OLE, png 스트림이 발견 됨

zlib으로 압축되었을 것이므로, 압축 해제또한 진행

압축 해제가 완료되었으므로, 파일을 분석하기 시작

일단 2개의 사진 파일 전부 정상적인 PNG 파일임을 확인

내용물을 열어서 무슨 사진인지 확인

놀랍게도 상위버전 알람창과 매우 유사하게 생긴 사진(!!!)파일이 존재

실제로 악성 한글 파일을 열면 저런 창(아님)이 뜨는 것을 확인 가능함

즉, 별도의 가짜 알람 창을 만들어 사용자를 속이게 해 스크립트를 실행하게 하는 악성 코드임을 확인

 

한글은 그림이나 표, 그리기 개체에 하이퍼링크를 연결하는 기능이 있음

하이퍼링크를 연결하는 방법은 Ctrl + 좌클릭

때문에 저 확인 버튼에 악성코드를 실행하는 하이퍼링크가 있을 것임을 추측 가능

알람창을 가장한 그림파일 둘은 개체로 묶여 있음

개체 풀기를 통해 확인 버튼의 하이퍼링크만 조사

그럼 이렇게 상대경로가 설정되어 있는 하이퍼링크를 발견가능

아직 이게 뭔지는 모르니 일단 확인하고 넘어감

BIN00003.OLE의 데이터

데이터를 확인하다보면 아까 본 apisecurity라는 이름이 존재(확장자는 다르지만)

즉, BIN00003에서 무언가 파일이 만들어지는 것을 추측

BIN00004.BIN의 데이터

데이터를 확인하면 apisecurity.key라는 파일이 존재

또, MZ 시그니처를 가진 PE 파일이 존재하는 것으로 확인

BIN00005.BIN의 데이터

데이터를 확인하면 apisecurity.vbs이라는 파일이 존재

아까 가짜 확인 이미지에 연결되어 있던 파일명과 일치

 

스크립트 코드 분석

악성 HWP 문서가 실행될 때 OLE 오브젝트는 임시 디랙토리에 생성됨

해당 경로로 가서 확인

파일을 확인하면 Visual Basic Script 문법으로 작성된 것을 확인할 수 있음

위 코드는 줄이면 다음과 같음

1. 특정 경로(OneDrive) 경로에 Resources.pri 파일이 존재한다면, apisecurity.key파일을 Onedriver 변수 경로에 xmllite.dll 이름으로 이동

2. Onedriver 변수 경로에 api.patch 파일이 없다면, 오류 메시지를 띄우고 apisecurity.bat 파일을 호출

이걸 왜 하는가?

이 공격은 OneDrive를 이용한 DLL Planting 기법으로 확인

DLL Planting이란? DLL을 특정 위치에 심어서 해당 DLL을 로드시키는 기법

DLL 파일은 로드할 때 파일이 위치한 디렉토리에 따라 우선순위가 있으며, 이를 악용해 악성코드를 로드

 

호출하려는 apisecurity.bat파일을 분석

구조는 아주 심플

@echo off로 배치 파일의 프롬프트와 내용이 표시되지 않도록 숨김

taskkill.exe /f /im hwp.exe명령으로 hwp.exe프로세스를 강제종료

핵심 파일인 apisecurity.key파일을 PEview로 확인

파일의 기본 정보부터 살펴봄

32비트, DLL파일로 빌드 시간은 2020-11-12

 

공격자는 추가 바이너리 및 문서, 설정 데이터 같은 정보를 리소스 섹션에 저장

이를 조사

리소스 섹션을 확인하였으나 크기가 너무 크거나 의심스러운 문자열은 없었음

 

Sigcheck 도구를 통해 서명 정보를 확인

이 파일은 서명이 안되있는 파일

 

다시 PEView를 이용하여 이 .key파일이 사용하는 주요 API함수를 확인

눈에 보이는 함수 중 WinExec, CreateThread, ExitProvess가 보임

이게 있다는 소리는 특정 프로세스를 추가적으로 실행한다는 소리

더 조사하면 CreateFile, WriteFile, ReadFile, SetFilePointerEx같은 API 함수도 확인

특정 파일을 생성, 쓰기, 읽기 행위 또한 하는 것으로 확인

GetConsoleMode, ReadConsole같은 콘솔 관련 API 함수도 확인됨

 

종합적으로, 파일, 프로세스 실행, 콘솔 명령어 실행과 관련된 행위를 하는 것으로 확인됨

 

Strings를 사용하여 키워드를 추출

base64로 인코딩된 문자열이 보임

더 탐색하면 위에서 찾은 API 이름들도 보임

이 문자열을 Powershell을 통해 디코딩

base64 디코딩을 마친 문자열에서 공격자의 도메인이 보임

저 명령어 중 wmic os get 명령어는 운영체제의 정보를 확인하는 정상적인 코드

공격자는 이 명령어를 악용하여 공격자 도메인으로부터 스크립트를 받아 실행하는 XSL Script Processing 공격을 사용