상세 컨텐츠

본문 제목

[알약 악성코드 분석리포트] Exploit.HWP.Agent

악성코드 분석 리포트

by 알약(Alyac) 2014. 5. 7. 13:06

본문

Exploit.HWP.Agent -ALYac Division Malware Research


최근 사회∙정치적으로 여러 이슈들이 등장하면서, 이슈들을 교묘하게 악용한 악성코드의 유포가 꾸준히 지속되고 있습니다. 겉으로는 그저 이슈를 담은 문서파일이지만, 그 속에는 악의적인 공격 코드가 담겨있습니다. 공격자는 이를 이메일을 통해 무차별적으로 유포함으로써, 메일 수신자에게 호기심을 유발하여 해당 파일을 실행시킵니다.


이번에 발견된 악성코드도 최근 언론에서 한국 주요기관의 정보 유출을 노리는 사이버 스파이, 일명 'Kimsuky'와 비슷한 유형으로 판단됩니다.


정보 유출의 역할을 하는 악성코드는 이미 다양한 유형이 존재하고 활동하고 있습니다. 그러나 이것이 특정 국가를 노리는 사이버전의 전초전이라고 생각하면 ‘공격 전 정보 수집의 목적’에 사용될 수 있습니다. 따라서 기업 및 공공기관의 보안 관리자들의 각별한 주의가 필요합니다.



악성코드 순서도




악성코드 상세 분석


1. 악성파일 분석 : ***.hwp


[그림1] 문서 파일 첫 페이지의 내용


HWP 문서파일의 역할은 사용자로 하여금 호기심을 유발하여, 문서파일을 열어보도록 합니다. 공격자는 이 문서파일로써 취약점이 존재하는 ‘한컴 오피스’를 이용했습니다. 해당파일을 열게 되면, 내부에 삽입된 악성코드가 드롭 및 실행됩니다. [그림 1]은 악성 HWP 문서파일을 실행했을 때 나타나는 첫 페이지의 내용입니다.


[그림2] 실행중인 악성코드


문서파일을 실행하면, 한 때 논란이 되었던 정치적 이슈에 관한 내용을 확인할 수 있습니다. 사용자가 이 내용을 눈으로 확인했다면, 이미 악성코드는 실행되었다고 볼 수 있습니다. [그림 2]에서 확인할 수 있듯, 프로세스 목록을 살펴보면 아래와 같이 악성코드가 이미 실행중인 것을 확인할 수 있습니다. 


그렇다면 어떤 이유로 인해서 HWP 문서파일 내부에 숨겨진 악성코드가 실행되었는지 파악해야 합니다. 일단 기본적으로 이 HWP 문서파일은 분명히 정상 HWP파일이 아니라, 조작된 파일일 가능성이 높습니다.


해당 HWP 문서파일은 사이즈를 줄이기 위해서 압축 저장되어 있으며, 내부에는 본문 데이터를 담은 6개의 섹션이 존재합니다. 이 6개의 섹션 개수는 이 문서파일이 총 6페이지로 구성되어 있다는 것과 일치합니다. 그 중에서 섹션 0번은 앞서 [그림 1]의 내용을 담은 정상적인 섹션이지만, 섹션1번부터 섹션5번까지는 [그림 3]과 같이 숨은 설명 형태로 눈에 안보이게 삽입되어 있습니다.


[그림3] 숨은 설명 형태로 삽입된 섹션1 - 섹션5의 본문 데이터


숨은 설명 데이터를 가지고 있는 섹션1번~섹션5번은 정상적인 섹션으로 보일 수 있으나, 압축 해제된 섹션의 데이터를 검증해보면 HWPTAG_PARA_TEXT TagID부분에서 데이터의 길이가 비정상적으로 긴 것을 확인할 수 있습니다. HWPTAG_PARA_TEXT는 본문을 의미하는데, 공격자는 한글의 본문과 관련된 취약점을 노린 것으로 보입니다.

[그림4] 비정상적으로 긴 본문 데이터


해당 부분을 살펴보면, 아래 [그림 5]에서 확인할 수 있듯이 수많은 0x09가 연속적으로 나열되어 있고, 끝 부분에 쉘코드로 의심되는 부분을 발견할 수 있습니다. 데이터의 길이가 0x01000000을 넘는데, 이는 약 16Mb의 크기이며 섹션1 ~ 섹션5가 모두 이와 동일합니다.


[그림5] 숨은 설명 형태로 삽입된 쉘코드


[그림6] 메모리 힙스프레이


[그림 5]의 데이터에서 실제로 메모리 할당되는 모습을 확인해보면, [그림 6]과 같습니다. 좌측은 정상파일의 내용이 메모리에 올라간 형태이고, 우측은 악성 문서파일의 내용이 올라간 형태입니다. 우측 악성 문서파일의 경우, 비정상적으로 큰 크기(01001000)의 메모리가 할당되어, 숨은 설명 본문 데이터를 힙스프레이로 이용하고 있습니다.


[그림7] 쉘코드가 실행되기 직전의 함수 호출 순서


[그림 5] 쉘코드가 실행된 시점에서 함수 호출 순서를 살펴보면, [그림 7]과 같이 HncDRDrawRectangle함수에서부터 호출된 것을 알 수 있습니다. 함수의 이름으로부터 기능을 유추 해봤을 때 한컴 오피스에 본문 데이터를 로드하여 화면에 표시해주는 기능을 가지고 있고, 결국 이 부분에서 취약점이 발생하는 것으로 추정할 수 있습니다.

[그림8] 정상 동작 시 함수인자


[그림9] 쉘코드 동작 시 함수인자


[그림 8]과 같이, 문제가 되는 부분으로 이동하기 전의 함수에 들어가는 Arg3 인자는 16진수 0~17의 범위로 한정되어 있습니다. 하지만 [그림 9]와 같이 쉘코드가 실행되기 직전의 시점에서 Arg3로 전달되는 인자를 살펴보면 이를 벗어난 범위의 값(16진수 1A)이 전달됨을 확인할 수 있습니다.

[그림10] 쉘코드 영역을 가리키게 되는 모습


비정상 Arg3값이 함수 인자로 들어오게 되면, 결국 잘못된 부분을 가리키게 되고 쉘코드 영역이 호출되는 문제점이 발생합니다. [그림 10]은 그러한 상황을 나타내며, [EDX+0F8] 영역은 쉘코드 영역(09090909)을 가리키고 있음을 확인할 수 있습니다.

[그림 11] 쉘코드 시작 부분

결국 의도하지 않은 영역이 호출됩니다. 공격자는 힙스프레이 기법을 이용하여, 미리 메모리에 올려놓은 숨은 설명 본문 데이터로 제어권이 이동됩니다. [그림 11]과 같이 해당 영역에서는 무의미한 명령어를 지나서 결국에는 쉘코드가 실행됩니다.

[그림 12] HWP 문서 파일 내부의 암호화 된 데이터 및 복호화 코드

쉘코드에서는 HWP 문서 파일에 암호화해 둔 부분을 로드한 뒤 복호화하는 부분이 존재하며, 복호화를 완료한 뒤에는 PE파일을 드랍 및 실행시킵니다. [그림 12]는 16진수 C8로 암호화 된 부분을 풀어내는 복호화 코드와 실제로 HWP 문서 파일 내부에 삽입되어 있는 암호화된 데이터를 나타내고 있습니다.

[그림 13] HWP 문서 파일로부터 추가적인 악성 파일이 생성된 모습
 
결과적으로 임시폴더에 win***.exe라는 파일이 생성되고, 실행됩니다. 해당 파일이 실행되면, 자기 자신을 Mst***.exe라는 이름으로 Windows 이하의 Temp 폴더 내부에 저장 후 실행시키고 종료됩니다. 결과적으로 앞서 [그림 2]에서 살펴보았듯이 Mst***.exe만 실행되는 것입니다.


2. 악성파일 분석 : win***.exe
 
드롭된 파일은 C&C 서버로 추정되는 사이트에 주기적으로 접속하여, 사용자 정보를 전송하고 명령을 내려 받아 실행하는 기능을 갖고 있습니다.

생성 파일 정보
 

주요 행위는 아래와 같습니다.

[그림 14] 파일 복사

[그림 14]는 윈도 Temp 폴더에서 아래의 폴더로 자신을 복사한 내용입니다.
C:\WINDOWS\Temp\Mst***.exe

[그림 15] 레지스트리 등록

윈도 시작 시 자동 실행을 위하여 레지스트리에 자신을 등록합니다.
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows
"load" = "C:\WINDOWS\temp\Mst***.exe"

[그림 16] 명령 서버 접속

주기적으로 특정 도메인에 접속을 시도하고 접속되면 수집된 정보를 전송하고, 명령을 내려 받아 수행합니다.
해당 도메인은 현재 접속이 차단된 상태입니다.
접속 도메인 : http://www.kosianis.com/index.aspx

[그림 17] 공격자 명령

명령 서버로부터 아래 2가지 명령을 내려 받아 수행하지만, 서버 접속이 되지 않는 관계로 정확한 내용은 확인할 수 없습니다.


악성코드 분석 결론

이번에 분석한 악성 문서파일은 한글의 취약점을 이용하여 악성 코드를 유포한 후, 정보를 수집하고 서버에서 명령을 받아 동작하는 방식으로 확인되었습니다. 이는 이메일을 통하여 특정 목표를 수행하기 위해, 지속적으로 공격하려는 목적으로 추정됩니다. 현재 널리 사용되고 있는 한글 2010버전에서도 악성코드가 실행되는 것으로 보아, 주의가 필요한 악성 문서파일이라고 할 수 있습니다.


악성코드 대응방안

해당 문서파일에 대응하기 위해서는, 첫째로 한컴 오피스를 사용할 때 꾸준한 보안 업데이트가 필수적입니다. 특히, 한글 프로그램 설정 메뉴 [보안 - 문서 보안 설정]에서 보안 수준을 ‘높음’으로 설정하여, 악의적으로 사용될 수 있는 기능을 제한해야 합니다.

또한, 출처가 불분명한 메일에 포함된 한글 문서파일은 함부로 열람하지 말아야 하며, 보안 취약점을 노리는 공격을 차단하는 보안 솔루션을 설치하는 등 관련하여 대비가 필요합니다.

알약에서는 해당 악성코드를 Exploit.HWP.Agent로 탐지 중이며, 알약 익스플로잇 쉴드를 통해서도 이러한 취약점 공격을 차단할 수 있습니다.

※ OS 및 소프트웨어의 보안 취약점을 노리는 공격을 차단하는 보안 솔루션 참고 :
알약 익스플로잇 쉴드 : 기존 백신에서 탐지가 어려웠던 악성 행위를 실시간으로 모니터링하여 차단 http://alyac.altools.co.kr/Public/Alyac/ExploitShield.aspx



관련글 더보기

댓글 영역

  • 프로필 사진
    2014.05.10 17:07
    비밀댓글입니다
    • 프로필 사진
      2014.05.15 16:52 신고
      inno님, 안녕하세요. 보안업체에서 수집한 악성코드 샘플의 경우, 외부로 공유가 어렵습니다. 너그러운 양해를 부탁드립니다. 혹시 악성코드 발표및 공부차원에서 샘플이 필요하신 경우, 해외 웹사이트 (ex. http://www.malware-traffic-analysis.net) 등에서 다양한 형태의 악성코드 샘플을 구하실 수 있습니다. 감사합니다.