Wins blog

글로벌 정보보안 파트너! Global Security  No.1 윈스는 국가대표 정보보안 기업에서 글로벌 강소기업으로 도약합니다.

보안 정보

앞 내용 보기 다음 내용 보기
취약점 정보[CVE-2017-0199] Microsoft Word RTF OLE2Link RCE
작성일 2017-04-20 조회 345

1. 개요

MS 0-day 공격으로 이슈가 되었던 CVE-2017-0199 취약점은 OLE2link 오브젝트를 포함한 워드파일을 열기만 하면 임의의 코드가 실행되는 취약점이다. 이와 관련된 취약점은 MS 4월 정기 보안 업데이트를 통해 패치가 진행 되었다.

 

해당 취약점은 지난 한 달 동안 공격자들의 활발한 Exploit 대상이었던 것으로 밝혀졌으며, Dridex라는 뱅킹 악성코드가 이 취약점을 활발히 활용했던 것으로 밝혀졌다. 해당 취약점은 MS 워드의 모든 버전이 영향을 받을 수 있어 주의가 필요하다.

 

o 취약한 버전: Microsoft Word 모든 버전

 

 

2. 공격 시나리오

해당 취약점이 처음 발견된 공격 시나리오는 다음과 같다.

1) 공격자가 OLE2 link object를 포함한 MS Word 문서를 사용자게에 메일로 보냄

2) 사용자가 문서를 열어 악의적인 HTA 파일을 다운로드함

3) 악의적인 HTA 파일을 통해 악성코드를 다운로드 하고 실행하게 됨

 

 

 

3. 취약점 분석

해당 취약점은 objautlink를 포함한 RTF 파일에서 취약점이 발생하는 것으로, URL moniker COM(79eac9e0-baf9-11ce-8c82-00aa004ba90b)을 사용하여 악성코드를 다운로드하게 된다. moniker는 COM 객체로 시스템에서 제공하는 moniker 클래스를 통해 URL을 생성하고 이를 통해 네트워크 연결을 시도하게 된다. 

 

이제 실제 샘플을 분석해보도록 하겠다. 먼저 분석 한 샘플의 정보는 아래와 같다.

o 분석 샘플 정보
- RTF(CVE-2017-0199) 파일
MD5: c10b1c9a34d3d09a720aacecd55f704fc42e1267

 

- 다운로드 된 파일
MD5: 3c01c4d68ddcf1e4ecd1fa1ca3024c54

 

해당 샘플을 분석하기 위해 rtfdump.py과 를 사용하여 샘플 내용을 확인했다. 

 

1) RTF 파일 OLE1.0 객체 확인 하기(-f O 옵션)


[그림1] OLE1.0 객체 확인 하기

 

rtfdump.py 을 사용하여 해당 샘플을 파싱해서 본 결과, OLE 파일이 2개가 존재한다는 것을 확인 할 수 있다. 여기에서 제일 첫번째 OLE 객체(153)에 어떤 값들이 들어 있는 자세히 살펴보기 위해 -s옵션을 사용하여 내용을 확인 해봤다. 여기서 중요한 것은 153, 249와 같은 숫자 값은 rtfdump에서 파생된 숫자 값이다.(RTF 코드의 일부가 아님)

 

2) OLE 객체 자세히 살펴보기(-s -H 옵션)


[그림2] OLE 객체 내용 살펴보기(153)

 

위 [그림2]에 존재하는 01050000 02000000 값을 통해 OLE 1.0 객체라는 것을 확인 할 수 있다. 그리고, 두번째 라인에 존재하는 d0cf11e0 를 통해 OLE 파일을 포함하고 있다는 것을 확인 할 수 있다. 다음으로 포함 된 객체 정보를 좀 더 자세히 확인 해보도록 하자.

 

3) 포함되어 있는 객체 정보 확인(-i 옵션)


[그림3] 포함 된 객체 정보 확인

위 과정을 통해 OLE 객체(153)는 임베디드 OLE 파일인 것을 확인 할 수 있다. 이제 -E 옵션을 사용하여 해당 임베디드 OLE 객체를 추출하여 해당 OLE 파일 안에 들어 있는 내용을 확인 해보겠다.

 

4) OLE 객체 추출 (-E 옵션)


[그림4] OLE 파일 추출

 

OLE 파일은 기본적으로 Header와 Sector로 이루어져 있다. Header에는 OLE 파일의 전반적인 설정(Sector 사이즈, SAT 위치 등)의 값이 저장되어 있고 각각의 Sector에는 데이터가 저장되어 있다. 그러므로 우리는 해당 OLE 파일에 들어 있는 데이터 정보를 확인 하기 위해선 OLE 파일을 파싱해서 봐야 한다. oledump.py를 사용하여 OLE 파일 안의 내용을 확인 해보록 하겠다. 

 

5) OLE 파일 덤프 (-d 옵션, | oledump.py)


[그림5] OLE 파일 덤프

 

OLE 파일에는 2개의 스트림이 포함되어 있는 것을 확인 할 수 있다. 여기에서 사이즈가 더 큰 첫번째 스트림을 확인 해보도록 하자.

 

6) 스트림 확인


[그림6] 스트림 확인 

 

스트림 확인을 통해, OLE 파일에 들어 있는 URL을 확인 할 수 있다. URL Moniker COM을 포함한 취약점 파일을 실행하게 되면, 위 [그림6]에서 확인한 URL로 접속하여 파일을 다운로드 한다.

 


[그림7] HTTP 응답 패킷 정보

 

URL Moniker에 의해 다운로드가 실행됨으로, moniker는 content-type 헤더 값을 인지하여 HTA 파일을 실행시키기 위해 Microsoft의 HTA 엔진으로 다운로드 한 파일을 실행시키게 된다.다운로드된 HTA 파일은 RTF 파일처럼 보이지만, 파일 안에는 VBS 스크립트가 존재하고 HTA 파서는 VBS 스크립트를 발견하여 해당 부분을 실행시키게 된다. 그 결과, 악성코드를 다운로드 하고 실행시킨다. 

 


[그림8] VBS 스크립트 확인

 

 

 

4. 정리

 

이처럼 해당 취약점은 URL OLE2 link object(objautlink)를 포함한 RTF 파일에서 취약점이 발생하며, URL moniker COM(79eac9e0-baf9-11ce-8c82-00aa004ba90b)을 사용하여 악성코드를 다운로드 하는 것을 확인 할 수 있다.

 

이 취약점은 MS Word의 모든 버전에서 취약점 실행이 가능하다는 점, 매크로를 활성화시키거나 할 필요가 없다는 점, 원격에서 임의의 코드 실행이 가능하다는 점에서 굉장한 주의가 필요한 취약점이다.

 

그러므로 아래 대응방안을 참고하여 해당 공격으로부터 시스템을 보호할 것을 권고한다.

 

 

5. 대응 방안

1) MS 4월 보안 업데이트를 진행한다.

 

2) Sniper IPS에서는 아래와 같은 패턴으로 대응 가능하다.

[IPS 패턴 블럭] : 3470, MS Word rtf OLE2Link RCE
[UTM 패턴]: 838861159, MS Word rtf OLE2Link RCE

 


6. 참고

https://nvd.nist.gov/vuln/detail/CVE-2017-0199

http://securityaffairs.co/wordpress/58077/breaking-news/cve-2017-0199-exploitation-poc.html

https://blog.nviso.be/2017/04/12/analysis-of-a-cve-2017-0199-malicious-rtf-document/

 

첨부파일 첨부파일이 없습니다.
태그 0-day  CVE-2017-0199  RTF  OLE2Link  RCE