보안정보

전문화된 보안 관련 자료, 보안 트렌드를 엿볼 수 있는
차세대 통합보안관리 기업 이글루코퍼레이션 보안정보입니다.

DDE(Dynamic Data Exchange)

2019.04.30

16,109





1. 개요

우리가 문서를 작성할 때 사용하는 대표적인 프로그램으로는 한글, MS word(워드), Excel(엑셀) 등이 있다. 이런 문서 파일에는 매크로(Macro)기능이나 ‘JS’, ‘Java’, ‘VBS’ 등 다양한 기능이 존재하며 공격자들은 이러한 기능의 특성을 이용하여 정상적으로 보이는 파일 내에 악성코드를 심어 유포하기도 한다. 

이번 호에서는 [그림 1]과 같이 2017년 하반기부터 꾸준히 공격자들에게 악성코드 유포방식으로 이용된 DDE(Dynamic Data Exchange) 기능과 해당 기능에 대한 위험성, 이를 방지하기 위한 대응방안에 대해 알아보기로 하자.


[그림 1] 여러 사례 기사(출처:보안뉴스)


2. DDE(Dynamic Data Exchange)

1) DDE란

DDE(Dynamic Data Exchange) 기능은 사용자의 편의를 위해 Windows 운영체제에서 응용 프로그램 간 데이터 전송을 위해 사용되는 기능이다. 예를 들어 워드파일을 열람할 때 엑셀파일에서 데이터를 가져와 사용할 수 있는 기능으로 해당 기능은 워드(Word)뿐 아니라 엑셀(Excel), VisualBasic 등 다양한 응용프로그램에서 사용되어지고 있다.


2) DDE 기능을 이용한 악성행위 사례

그럼 DDE를 이용하여 실제로 악성코드 유포나 악성행위가 실행됐던 사례들은 어떤 것이 있었는지 살펴보자.

① MS워드 문서 DDE를 이용한 파워쉘 스크립트 실행으로 악성코드 감염 (2017.11)

공격자가 MS워드 문서의 DDE 기능을 이용하여 파워쉘을 실행시키고 파워쉘 스크립트로 웹사이트에서 악성코드를 다운받아 유포했다.


[그림 2] 악성행위 사례


② 정상적인 툴을 이용한 데이터 유출(2018.10)

공격 표적을 정해 악성 오피스 문건을 전송하여 해당 문건을 열람하게 되면 DDE 기능이 실행되어 시스템 내 명령을 실행할 수 있게 된다. 이러한 시스템 명령을 통해 악성파일 다운로드 후 실행시켜 원격으로 시스템을 조종한다.

이 사례의 특징은 정상적인 프로세스로 보이는 것으로 악성 프로그램을 사용하지 않고 일반적으로 사용되는 툴을 사용할 뿐만 아니라 메모리 내에서만 실행되는 것이다.


[그림 3] 악성행위 사례 프로세스


③ ‘삼성 모바일’에서 전송된 메일처럼 꾸민 악성 첨부파일 (2019.02)

모바일 전송 메일로 위장한 메일에 엑셀파일을 첨부하여 다운로드 받게 유도한다. 첨부 파일을 열람하여 매크로를 실행시키는 순간 악성코드 유포지에 연결하여 실행파일을 다운받아 감염시킨다.


[그림 4] 악성행위 사례 (출처 : 월간보안동향 3월호 IGLOO Analysis Report)


3. DDE 기능을 이용한 프로그램 실행 예시

이러한 사례들처럼 DDE 기능은 다른 프로세스를 실행시킬 수 있어 인터넷을 통해 악성 파일이 다운받아지거나 실행되는 위험이 존재한다. 
그렇다면 앞서 말한 DDE 기능을 이용하여 간단한 예시를 들어보기로 하자.

MS 워드에서 수식을 삽입할 때 사용하는 필드를 추가하고 이때 [그림 5]와 같이 필드 값에 실행시킬 프로그램 경로를 입력한다. 아래 예시의 경우 명령창을 실행시켜 실행시키고자 하는 명령어를 입력했다.


[그림 5] DDE 기능 예시_01


명령어가 입력된 파일 열람을 시도하면 맨 처음 문서 내에 데이터 연결여부를 묻는 창이 뜨는데 대부분의 경우 메시지 창의 글을 확인하지 않고 Enter버튼을 누르거나 무조건 “예”를 누르게 된다. 


[그림 6] DDE 기능 예시_02


마찬가지로 첫 번째 “예”를 클릭한 뒤 문서 내에 포함되어 있는 응용 프로그램을 실행할 것인지에 대한 메시지 창이 또 한번 발생한다. 


[그림 7] DDE 기능 예시_03


그렇게 발생되는 메시지 창을 모두 “예”라고 클릭할 경우 아래 [그림 8]과 같이 의도했던 계산기 프로그램(calc.exe)이 실행된다. 


[그림 8] DDE 기능 예시_04


또한 겉으로 보이는 필드 값을 임의의 값으로 변경하여도 필드 속성값은 변하지 않기 때문에 공격자가 글자를 아주 작게 만들거나, 원래 내용인 것처럼 작성할 경우 사용자는 어떤 명령인자가 있는지 쉽게 알아채지 못한다.

 

변경 전

변경 후

필드 값 표시

!수식의 끝이 잘못되었습니다.

임의의 값(예시의 경우 TEST)

필드 코드 값

 - 실행하고자 하는 프로그램 경로, 명령어 등


[표 1] 필드 값 표시 변경 전/후


4. 대응방안

그렇다면 우리가 할 수 있는 대응방안에는 무엇이 있는지 알아보자. 참고로 아래 자료는 Office2013 기준이다.

1) 파일 확장자와 파일 열람 시 알림창 확인

먼저 DDE 기능이나 매크로 기능 등을 포함한 문서라면 확장자가 *.docx, *.xlsm일 것이다. 하지만 확장자는 정상적일 수 있고 사용자는 파일을 열람할 때 아래 [그림 9]와 같은 알림창이 뜨고 알림창 내용을 유심히 살펴봐야 한다.


[그림 9] 워드 파일 열람 시 발생되는 알림창


위 그림은 워드 파일을 열람했을 때 발생하는 알림창으로 파일에서 참조하는 링크가 존재하고, 공격자가 심어둔 응용프로그램 실행여부를 물어보는 내용으로 구성되어 있어 사용자가 좀 더 주의 깊게 확인하여 의심되는 프로그램에 대해 ‘아니요’를 눌러야 할 것이다.


2) 파일 옵션에서 DDE에 대한 제한 설정 

① 워드 프로그램

워드 프로그램의 경우 ‘파일 > 옵션 > 고급 > 일반 > 문서를 열 때 자동 연결 업데이트’ 설정 체크를 해제하여 참조되어있는 링크에 자동으로 연결할 수 없도록 한다.


[그림 10] 워드 파일 옵션 설정


② 엑셀 프로그램

엑셀 프로그램의 경우 ‘파일 > 옵션 > 고급 > 일반 > DDE(동적 데이터 교환)을 사용하는 다른 응용 프로그램 무시’ 설정에 체크하여 다른 응용프로그램을 실행시키는 것을 제한한다.


[그림 11] 엑셀 파일 옵션 설정


3) Microsoft 권고에 따라 레지스트리값 변경

마지막으로 Microsoft에서 권고하는 사항은 레지스트리 편집기를 이용하여 DDE 기능을 제한하는 것이다.
DDE가 취약점이 아니라 기능이기 때문에 없애는 방향보다 자동 업데이트나 허용할 범위를 제한하여 설정하라고 권고하고 있다.

① 워드(Word)에서 DDE 기능을 변경해야 하는 경우

a. 레지스트리 편집기에서 HKEY_CURRENT_USERSoftwareMicrosoft Office & 버전
   Word Security AllowDDE (DWORD)로 이동한다.
b. AllowDDE 값을 변경한다.


AllowDDE (DWORD) = 0

DDE를 사용하지 않도록 설정 (업데이트를 설치 한 후 기본 설정)

AllowDDE (DWORD) = 1

이미 실행중인 프로그램에 DDE 요청 허용, 다른 실행 프로그램을 시작해야 하는 DDE 요청은 금지

AllowDDE (DWORD) = 2

DDE 요청을 완전히 허용


[표 2] 워드에 대한 DWORD 레지스트리 값


② 엑셀(Excel)에서 DDE 기능을 변경해야 하는 경우

a. 레지스트리 편집기에서 HKEY_CURRENT_USERSoftwareMicrosoftOffice & 버전
   ExcelSecurity DisableDDEServerLaunch(DWORD)로 이동한다.
b. DisableDDEServerLaunch 값을 변경한다.

DisableDDEServerLaunch = 0

DDE 서버 시작 설정을 초기 동작과 동일하게 유지 (업데이트를 설치 후 기본 설정)

DisableDDEServerLaunch = 1

사용자가 특정 DDE 서버를 시작할지 여부를 선택할 수 있는 대화 상자를 표시하지 않음, 대신 사용자가 기본 선택 인 NO를 선택한 것처럼 작동


[표 3] 엑셀에 대한 DisableDDEServerLaunch 레지스트리 값


c. 레지스트리 편집기에서 HKEY_CURRENT_USERSoftwareMicrosoftOffice & 버전
   ExcelSecurity DisableDDEServerLookup (DWORD)로 이동한다.
d. DisableDDEServerLookup 값을 변경한다.

DisableDDEServerLookup = 0

DDE 서버 조회 설정을 초기 동작과 동일하게 유지 (업데이트 설치 후 기본 설정)

DisableDDEServerLookup = 1

DDE 서버 가용성에 대한 쿼리 사용 안 함

 - DDE 서버를 찾기 위해 쿼리를 시도하지 않음


[표 4] 엑셀에 대한 DisableDDEServerLookup 레지스트리 값


5. 참고자료

[1] ADV170032 | Microsoft Office 업데이트 
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/ADV170021

[2] Office 문서에서 외부 콘텐츠 차단 또는 차단 해제
https://support.office.com/ko-kr/article/office-%EB%AC%B8%EC%84%9C%EC%97%90%EC%84%9C-%EC%99%B8%EB%B6%80-%EC%BD%98%ED%85%90%EC%B8%A0-%EC%B0%A8%EB%8B%A8-%EB%98%90%EB%8A%94-%EC%B0%A8%EB%8B%A8-%ED%95%B4%EC%A0%9C-10204ae0-0621-411f-b0d6-575b0847a795

[3] MS워드문서 DDE 취약점 악용 표적 공격 주의보

[4] 멀웨어를 하나도 사용하지 않는 공격 단체 골메이커 발견

[5] 백신 탐지 우회하는 악성 엑셀파일 발견

[5] ‘삼성 모바일 전송‘ 메일 위장 원격제어 악성코드 출현