Case
MS Office의 효력없는 보안패치
2017 12 01
  • Facebook
  • Twitter
  • Copy URL

얼마 전, 러시아 해커들이 Microsoft Office에 있는 기능의 취약점을 악의적으로 사용하고 있다는 이야기를 전했었다. 당시 취약점이 존재했던 기능은 보안 문제로 간주되지 않아 Microsoft에서는 보안 패치를 하지 않고 그냥 넘어갔었다. 취약점이 존재하는 곳은 Dynamic Data Exchange (DDE)라는 Microsoft Office의 기본 기능으로, 두 개의 실행 중인 응용 프로그램에서 서로 같은 데이터를 공유할 수 있도록 해주는 프로토콜이었다. 취약점은 MS Office에서 일반적으로 사용되는 공격과 달리 메크로의 활성화에 대한 사용자의 상호작용도 필요하지 않았고, 메모리에 손상도 주지 않았다. 하지만 이 취약점을 악용하면 시스템에서 공격자가 의도한 코드를 실행시킬 수 있었다. 문제는 이 취약점이 러시아 해커들 사이에서 실제로 공격에 사용되었었다는 점이었다.[1] 한편, 며칠 전에도 MS Office와 관련하여 취약점이 발생하였고, 해당 취약점과 관련한 공격이 발생하고 있다고 한다. 하지만 이전 취약점과 달리한 것이 있으니, 이번엔 해당 취약점이 보안 패치가 되었음에도 러시아 해커들 사이에서 공격에 쓰이고 있다는 것이다. 어떠한 취약점인지 얘기해보자. 

이미지를 불러오는데 실패했습니다.

Embedi의 보안 연구원에 의해 발견된 이 취약점은 CVE-2017-11882로 등록되어 있다.[2] 해당 취약점을 이용하면 메모리에 손상을 줄 수 있는데 즉, 원격에서 인증되지 않은 공격자가 이 취약점을 통해 사용자의 상호작용 없이 대상 시스템에서 임의 코드를 실행할 수 있다. 본래 소프트웨어가 메모리의 개체를 제대로 처리하지 못하면, MS Office 소프트웨어에 있는 원격 코드 실행 취약점이 트리거되는데 이는 해커들에게 공격 루트로 많이 쓰인다. 특히, 이런 식의 공격은 관리 사용자 권한으로 시스템을 제어하는 것은 물론, 악의적인 프로그램을 설치할 수도 있으며, 데이터 보기, 변경 또는 삭제는 물론 전체 사용자 권한으로 새 계정을 만들 수도 있다.

해당 취약점은 Office 문서에서 방정식을 넣고 편집할 수 있는 도구인, EQNEDT32.exe에 존재한다. 취약점에 대해 쉽게 얘기하면, 공격자가 메모리를 조작하여 MS Office의 구성요소인 EQNEDT32.exe 프로그램이 메모리 객체를 제대로 처리하지 못하게 함으로써, 공격자가 로그인한 사용자의 시스템에서 악성코드를 실행할 수 있게 한다. 취약점은 정확히 OLE 기능에서 발생하는데, 문서에 포함된 OLE 개체에는 내부 데이터와 문서에 표시되는 그림을 표현한다. 이 OLE는 문서를 실행한다고 해서 로드되거나 실행되지 않고, 사용자가 개체를 두번 클릭하였을 때만 로드절차가 실행된다. EQNEDT32.exe는 OLE standard COM interface를 사용하는데, OLE 개체의 내부 데이터가 파싱되면서 취약점이 만들어진다.[3]

이 공격에서 유일한 방해 요소는 액티브 컨텐트 실행을 금지하는 보호 뷰 모드다. 이를 우회하기 위해서 보통은사회 공학 기법을 사용하는데, 예를 들어ㅡ 사용자에게 클라우드에 파일을 저장하도록 유도할 수도 있다. 이 경우 원격 소스에서 가져온 파일은 MOTW (Mark of The Web)로 표시되지 않고, 파일을 실행하면 보호 뷰 모드가 활성화되지 않는다. 이 때문에 소프트웨어가 표준 보안으로 컴파일되더라도 악용될 수도 있다는 것을 보여준다.[4]

아래에는 해당 취약점의 시연 동영상이다. 

 

해당 취약점은 Microsoft Office 365를 포함하여 지난 17년 동안 출시된 모든 Microsoft Office 버전에 있는 메모리 손상 취약점 영향권 안에 든다. 또한, 최신 Microsoft Windows 10 크리에이터 업데이트를 포함하여, 모든 버전의 Windows 운영 체제에서 작동한다. 하지만 지난 11월 14일 이 취약점은 이미 패치를 받았다.[5] 문제는 패치가 되었음에도, 현재 해당 취약점이 악용되어 사용자 컴퓨터에 악성코드를 설치할 수 있는 백도어를 배포하는데 사용된다는 것이다.[6][7]

Fortinet의 연구원에 의해 처음 발견된 이 악성 코드는 Cobalt Strike라는 강력하고 합법적인 침투 테스트 도구의 구성 요소를 사용되므로 Cobalt로 불려 왔다. 이 도구는 시스템에 은밀하게 접근하기 위하여 Red Team Operations 및 Adversary Simulations 용으로 개발된 소프트웨어다.[8] 문제는, 새롭게 공개된 취약점이 매우 빠르게 악용되고 있다는 것이다. 공격자는 ‘Изменения в системе безопасности.doc Visa payWave.doc’라는 이름의 문서가 담긴 스팸 메일을 통해 코발트 악성코드를 배포했다. 스팸매일은 visa와 관련하여 러시아의 규칙 변경에 대한 가짜 비자 통지 메일로, 악의적인 RTF 문서를 포함하여 보내졌다. 또한, 메일은 암호로 보호된 아카이브 파일이 포함되어 있어 마치 스팸메일이 합법적인 금융 서비스에서 온 것마냥 보이게 만들었다. 이는, 자동 분석 시스템이 탐지하여 악성 파일을 추출하지 못하게 하려는 것도 있었다. 사용자가 문서를 실행할 경우, ‘편집 사용’이라는 버튼으로 일반적으로 문서를 실행하는데, 이때 PowerShell 스크립트는 자동으로 백그라운드에서 실행되면서 결국, Cobalt Strike 클라이언트를 다운로드하여 대상 컴퓨터에 설치하게 된다.[9]

이 과정은 다운로드 및 실행되는 여러 단계의 스크립트를 사용하여 주요 악성코드 페이로드를 가져온다. 익스플로잇이 트리거 되면, 난독화된 자바스크립트가 다운로드 되고, Microsoft HTML 응용 프로그램 호스트를 통해 HTML 응용 프로그램이 실행된다. PowerShell 스크립트 페이로드에는 개발자가 호출할 때 인코딩된 Cobalt Strike 32 비트 및 64 비트 클라이언트 DLL 또는 '비컨'이 포함되어 PowerShell의 메모리에서 직접 실행된다. 이 때, 공격자는 피해자의 시스템을 제어하고 다양한 명령을 실행하여 네트워크에서 양쪽으로 데이터를 움직이는 등 시스템을 제어할 수 있다.[10] 공식적으로 Cobalt Strike는 침투 테스트에  많이 사용되는 도구이므로 이런 기능이 크게 놀랄만한 일은 아니지만, 이 경우는 좀 다르지 않은가,

정리하자면, 해당 취약점은 MS Office의 고질적인 메모리 취약점으로 인해 생겨났다. 또한, MS Office의 발빠른 대처로 나름 공개되고 얼마되지 않아 보안패치도 적용되었다. 하지만 문제는 그럼에도 해커에게 공격할 수 있는 포인트로 악용된다는 것이다. 그들은 이 취약점이 공개되고, 패치된 거와 상관없이 새로운 취약점, 기존에 있었던 취약점 모두 그들의 공격 루트로 사용된다. 실제로 공격패턴을 보면 몇 달 또는 몇 년 동안 패치되었던 취약점을 악용하는 악성코드를 배포하는 사례를 많이 볼 수 있다. 이는 소프트웨어 업데이트를 심각하게 받아들이지 않는 사용자가 여전히 많다는 얘기밖에 나오지 않는다. 그리고 이런 일은 드물지 않는다는 것은 매우 안타까운 일이지 않는가.

유성경 yuopboy@grayhash.com