매크로 악성코드 동향
1999년 전 세계를 강타한 멜리사 바이러스(Melissa Virus)를 기억한다면 매크로 바이러스란 단어도 들어봤을 듯하다. 매크로 악성코드는 1995년 등장해 오피스 사용자들을 대상으로 널리 퍼졌다가 2000년 초에 거의 사라졌다. 하지만 놀랍게도 탄생 20년이 된 2014년부터 조금씩 증가해 2015년에는 매일 1~2개의 신종 매크로 악성코드가 발견되고 있다. 최근 조금씩 증가하고 있는 매크로 악성코드에 대해 알아보자.
매크로(Macro)는 사용자가 입력하는 키보드 입력순서를 보관해 두었다가 그대로 실행하는 기능을 지칭한다. 하지만 마이크로소프트사의 오피스 프로그램인 워드나 엑셀 같은 애플리케이션의 경우 매크로가 단순히 반복적인 키 입력뿐만 아니라 사용자가 원하는 어떤 행동을 할 수 있는 프로그램 언어처럼 되어 있다.
매크로 악성코드 등장과 감소
매크로 바이러스는 이들 애플리케이션에서 지원하는 막강하고 편리한 매크로 기능을 이용해서 악성코드를 생성 및 다운로드하는 능력을 가진 프로그램이다. 매크로를 이용한 바이러스는 컴퓨터 바이러스가 처음 등장한 1980년대 중반부터 제기되었으며 1994년 워드 베이직(Word Basic)으로 구현된 후 1995년 8월 컨셉 바이러스(WM/Concept)를 시작으로 많은 악성코드가 발견되었다. 매크로 바이러스는 베이직 명령과 유사해 배우기 쉽고 소스코드도 쉽게 볼 수 있어 바이러스 제작과 변형이 쉬워 악성 매크로는 급속히 증가했다. 2001년 8월까지 약 7,000여 종의 매크로 바이러스가 존재했었으나 이후 증가세는 둔화되어 2006년 4월까지 약 8,600개의 악성 매크로가 발견되었다. 매크로 바이러스가 극성을 부리자 마이크로소프트사는 오피스 2000부터 매크로 기능을 기본적으로 사용할 수 없게 하고 사용자가 필요할 때 사용하도록 변경하면서 매크로 악성코드는 급격히 사라졌다. 매크로를 이용한 악성코드보다 워드나 엑셀 문서를 변조해 취약점으로 악성코드를 감염시키는 형태가 더 많이 발견되었다. 하지만 2014년 중반부터 다시 매크로를 이용한 악성코드가 증가하고 있다.
매크로 악성코드 부활
2015년 3월 언론을 통해서도 매크로 악성코드의 부활에 대해 기사화되기 시작한다.

[그림 1] 오피스 악성코드 증가 기사
하지만, 매크로 악성코드의 재등장은 2014년 1월부터 시작된다. 네덜란드 국가 사이버 안전 센터(National Cyber Security Center)에서 매크로 악성코드를 이용한 표적공격을 경고했다.

[그림 2] 네덜란드 국가 사이버 안전 센터 매크로 악성코드 경고
2012년부터 2015년 2월까지 안랩이 고객으로부터 접수된 매크로 악성코드 수는 다음과 같다. 2015년 2월 이미 2014년 한해 동안 발견된 매크로 악성코드보다 많다.

[표 1] 매크로 악성코드 고객 접수 수
2015년 3월 영국 보안업체 소포스(Sophos)에서는 매크로 악성코드 중 다운로더 분포를 다음과 같이 발표했다.
- 워드 97 – 2003 : 83%
- 엑셀 97 -2003 : 10%
- 워드 2007 이상 : 6%
- 엑셀 2007 이상 : 1%

[그림 3] 매크로 다운로더 문서 종류 (source : Sophos)
국내에 발견된 매크로 악성코드는 거의 모두 외국에서 만들어져 비율은 유사하다.
매크로 악성코드 공격 기법
오피스에서 매크로 기능은 기본적으로 사용하지 않음으로 설정되어 있어 요즘 다시 등장한 매크로 악성코드는 사용자가 매크로 기능을 활성화하도록 유도한다. 이른바 사회공학(Social Engineering) 기법이 이용되고 있다.
메일
공격자는 보통 이력서, 주문서 등을 가장한 메일을 보내 첨부된 문서를 열게 만든다. 아직 한글로 작성된 유형은 없고 대부분 영문 메일이지만 가끔 유럽 지역 언어로 된 메일과 문서도 존재한다. 따라서 영문 메일에 첨부된 문서 파일을 열어 볼 때는 주의해야 한다. 워드 문서 형태의 악성코드가 대부분이지만 국내에서는 한컴 한글 워드프로세스 사용자가 많아 개인 사용자는 상대적으로 피해가 적다. 하지만, 외국과 교류가 잦은 기업 등을 중심으로 피해가 발생하고 있다.
파일 형태 변환
워드나 엑셀 문서 파일을 XML(Extensible Markup Language) 등으로 변환하는 경우도 있다.

[그림 4] XML 내 포함된 MSO
XML로 변환해도 기본적으로 매크로 등을 포함하고 있어 문서가 열리면 매크로를 사용할 수 없다는 보안 경고가 뜬다. XML이 텍스트이고 텍스트 파일은 안전하다고 사용자나 보안 프로그램을 우회하기 위한 목적으로 추정된다.
매크로 기능 활성 유도
오피스는 기본적으로 매크로 기능이 꺼져 있기 때문에 매크로 악성코드가 동작하기 위해서는 매크로 기능이 활성화되어야 한다. 따라서, 사용자가 매크로를 활성화하도록 유도한다.
가장 널리 사용되는 방법은 문서 내용을 알아보지 못하게 하고 매크로를 사용하면 내용을 볼 수 있다고 유도하는 방법이다.

[그림 5] 매크로 기능 활성 유도 방법
오피스 버전별 매크로 기능 활성화를 알려주는 친절한(?) 악성코드도 존재한다.

[그림 6] 매크로 기능 활성화 유도 방법
매크로 기능을 활성화하면 화면 변화 없이 악성코드만 실행되는 경우가 있다. 하지만, 다른 내용을 보여줘 사용자를 속이는 형태도 존재한다. 주로 엑셀 파일에서 볼 수 있다.

[그림 7] 매크로 기능 활성화 전

[그림 8] 매크로 기능 활성화 후

[그림 9] 매크로 기능 활성화 전

[그림 10] 매크로 기능 활성화 후
VBA프로젝트 (VBAProject) 암호화
워드나 엑셀에서 [ALT+F11] 명령으로 매크로 코드를 쉽게 볼 수 있다. 공격자들은 사용자가 매크로 내용을 볼 수 없게 VBA프로젝트(VBAProject)에 암호를 걸기도 한다. 악성코드 제작자가 설정한 암호를 모르면 매크로 내용을 볼 수 없다.

[그림 11] 암호 걸린 매크로 보기
난독화 (Obfuscation)
암호를 유추해 암호를 알아 낼 경우 매크로를 볼 수 있다. 악성코드 제작자는 스크립트 악성코드처럼 매크로 악성코드에도 난독화를 시도하고 있다.

[그림 12] 난독화
난독화 기법을 사용하는 악성코드 중 일부는 한국어, 중국어, 일본어 등 윈도에서 표현할 수 없는 문자로 대체되면서 인코딩이나 변수명이 잘못되어 매크로가 제대로 실행되지 않기도 한다.

[그림 13] 표현할 수 없는 문자로 대체된 암호화된 코드
이런 경우 해당 코드가 표현 가능한 윈도의 오피스에서는 실행된다. 하지만, 특정 언어에서만 동작하는 매크로의 경우는 해당 언어 환경에서만 실행된다.
매크로 악성코드 종류
다른 감염 대상이 있는 바이러스가 요즘 보기 힘든 것처럼 매크로 악성코드에도 바이러스 형태는 일부 엑셀 매크로 바이러스를 제외하고는 거의 사라졌으며 대체로 다른 악성코드를 다운로드하는 다운로더(Downloader)와 다른 악성코드를 떨어뜨리는 드롭퍼(Dropper)가 있다.
매크로 바이러스의 경우 파일을 직접 생성하기 보다는 다운로드하는 비율이 월등히 높다. 그 이유는 다운로드 받는 파일의 경우 언제든지 변경이 가능하여 상황과 나라에 맞는 파일로 변조할 수 있기 때문이다. 즉 매크로 바이러스 주요 목적은 감염 경로로 활용되며 공격자가 원하는 공격 방법으로 언제든 변조가 가능하다.
다운로더 (Downloader)
다른 악성코드를 웹사이트 등에 올려두고 다운로드해 실행한다.

[그림 14] 매크로 악성코드의 다운로드 코드
매크로를 확인하면 다운로드 파일을 받아오는 주소와 다운로드 파일을 저장할 경로 코드를 갖고 있다.
드롭퍼(Dropper)
사용자 컴퓨터에 실제 감염시킬 실행 파일을 매크로 코드 내에 포함하기도 한다.

[그림 15] 악성 매크로 내 다른 악성코드 데이터
실제 떨어뜨리는 파일의 데이터를 코드 내 포함시키지 않고 엑셀 문서의 경우 커스텀 프로퍼티(CustomProperties) 등과 같이 외부에 보관하고 있는 형태도 있다.

[그림 16] 커스텀 프로퍼티 내 데이터로 DLL 드롭 코드
[그림 17]과 같이 커스텀 프로퍼티의 데이터 내용을 보면 10진수로 77, 90으로 시작됨을 알 수 있다.

[그림 17] 커스텀 프로퍼티 데이터
이를 16진수로 변환하면 0x4D(M), 0x5A(Z) 으로 윈도 실행 파일의 시작 부분임을 알 수 있다. 실제 사용자 컴퓨터에 생성되는 파일을 보면 [그림 18]과 같다.

[그림 18] 감염 시스템에 최종 생성되는 실행 파일
매크로 악성코드의 목적
공격자는 매크로 악성코드를 이용해 다양한 다른 악성코드를 다운로드하거나 생성할 수 있다. 최종적으로 사용자 컴퓨터에 감염되는 악성코드는 크게 다음 유형으로 나뉜다.
- 사용자 정보 유출
- 금융 정보 탈취
- 원격 제어
드라이덱스(Dridex)
가장 흔하게 볼 수 있는 악성코드는 드라이덱스이다.

[그림 19] 드라이덱스(Dridex) 실행 순서
드라이덱스는 다음 과정으로 실행된다.
1. 매크로 악성코드가 다운로드한 파일 자신을 C:\ 경로에 edg[램덤숫자].exe로 생성 후 원본 파일을 삭제한다.

[그림 20] 드라이덱스 파일 생성

[그림 21] 드라이덱스 파일 삭제
2. edg[램덤숫자].exe는 특정 주소(82.151.xxx.1xx)에서 실행 파일 [랜덤숫자].tmp(Trojan/Win32.Injtecter)를 C:\경로에 다운로드한다.
다운로드 받은 실행 파일은 rundll32.exe로 로드되어 Explore.exe에 인젝션(Injection)된다.
3. 인젝션된 Explorer.exe는 사용자 정보를 읽어온다.
4. 특정 주소(199.201.xxx.1xx)로 인코딩된 데이터로 통신을 하고 [랜덤숫자].tmp를 삭제한다
정보 탈취 기능을 기술한 드라이덱스의 경우 유럽에서는 다운받는 DLL이 유럽 은행 정보를 탈취하는 목적을 갖는 용도로 제작된 악성코드로 알려져 있다. 하지만, 테스트 당시 대부분의 C&C 서버가 동작하지 않아 추가적인 파일 다운로드가 되지 않는다.
리미테일(Limitail)
매크로 바이러스는 엑셀 모양의 아이콘(iexplore.exe)을 앱데이터(APPDATA) 폴더 안에 다운로드하고 실행시킨다.

[그림 22] 엑셀 모양 아이콘
실행된 EXE 파일은 자신을 C:\Documents and Settings\[사용자]\Application Data\Microsoft\Windows 경로에 복사 후 같은 경로에 AeLookupSvc.exe(Spyware/Win32.Limitail)를 생성한 후 실행시킨다.
생성된 AeLookupSvc.exe는 .표시된 Thread(Q.U)로 HKCU\Software\Microsoft\Windows\CurrentVersion\Run\Network List Service에 AeLookUpSvc.exe 등록한다.
해당 악성코드는 열리는 창(Window) 이름과 키 입력 내용을 수집 후 전송하는 것으로 알려져 있다.
매크로 악성코드 예방
오피스에서 매크로 활성화는 기본적으로 꺼져 있어 기본 설정으로도 매크로 악성코드의 피해를 입지 않는다. 따라서 매크로 설정에서 ‘매크로 제외’를 확인하는 게 중요하다.
매크로 활성화 설정
[파일] → [옵션] → [보안 센터] → [보안 센터 설정]에서 매크로 기능 활성화를 설정할 수 있다.

[그림 23] 마이크로소프트 오피스 보안 센터

[그림 24] 마이크로소프트 오피스에서의 매크로 설정
매크로 설정의 기본은 ‘모든 매크로 제외(알림 표시)’를 확인한다.
결론
요즘 증가하고 있는 매크로 악성코드는 우리나라 사용자보다는 외국 사용자를 대상으로 제작되고 있다. 하지만 앞으로 국내 사용자를 대상으로 한글로 작성된 문서가 공격에 이용될 가능성도 있다. 또 아직은 금융정보 탈취 목적의 악성코드가 최종적으로 감염되지만 표적공격에 이용될 수 있다. 메일의 첨부된 문서 파일을 열 때 조심해야 하고 무엇보다 오피스의 매크로 기능은 비활성화 상태를 유지하는 게 중요하다. @
[참고 문서]
[1] Gabor Szappanos, ‘Back to VBA’, 2014 (https://www.virusbtn.com/virusbulletin/archive/2014/04/vb201404-VBA)
[2] Gabor Szappanos, ‘Paper: VBA is not dead!’, 2014 (https://www.virusbtn.com/blog/2014/07_07.xml)
[3] Cho Sihaeng & Cha Minseok, ‘Script and Worm viruses in DBCS environment’, 2002 (AVAR 2002)
[4] Graham Chantry, ‘From the Labs: VBA is definitely not dead - in fact, it's undergoing a resurgence ‘, 2014 (https://nakedsecurity.sophos.com/2014/09/17/vba-injectors)
[5] Graham Chantry, ‘From the Labs: New developments in Microsoft Office malware’, 2015 (https://nakedsecurity.sophos.com/2015/03/06/from-the-labs-new-developments-in-microsoft-office-malware)