- 5월 30일, 마이크로소프트에서 Follina (CVE-2022-30190) 로 명명된 제로데이 취약점을 발표 - Microsoft Support Diagnostic Tool (MSDT) 프로그램이 URL 프로토콜을 통해 호출될 때 발생 가능 - MSDT를 호출한 프로그램의 권한으로 임의의 코드를 원격으로 실행
* MSDT를 이용해 파워쉘 스크립트를 로드하여 익스플로잇
이때, MSDT를 호출하기 위해 원래 있었던 기능인 원격 웹 서버의 HTML을 호출하는 기능을 악용
=> 한문장으로 정리하면 워드 원격 템플릿 기능을 악용하여 원격 서버에서 HTML 파일을 검색한 다음 MSDT를 악용해 악의적인 코드 또는 파워쉘 스크립트를 로드
2. 취약점 동작과정
Follina 취약점이 포함된 문서를 공격자가 유포
사용자가 해당 문서를 열람
취약점 실행
1) Follina 익스플로잇 코드
- 코드 중 <script> location.href = ... </srcipt>를 이용해 msdt를 호출하여 익스플로잇 시도
* 해당 script문은 원격 웹 서버의 HTML을 호출하는 기능
2) 피해자가 해당 문서 실행 시
- 피해자가 해당 문서를 실행하면 스크립트가 실행되면서 공격자의 PC에 연결 및 공격자가 쉘을 획득하는 등 행위 발생
- FromBase64String 부분을 디코딩해보면 다음과 같은 흐름으로 이루어져있음.
1. cmd.exe를 실행하여
2. msdt.exe가 실행된 경우 종료(?)
3. rar 파일을 1.rar로 복사 -> 1.rar 파일의 일부분을 1.t 파일로 출력리다이렉션 -> 1.t를 인코딩하여 1.c로 저장 -> 1.c 파일 현제 디렉터리에 압축해제 -> rgb.exe 실행
4. 해당 스크립트 구문이 실행되면서 공격자가 쉘을 획득하거나 임의의 명령을 실행할 수 있음
* [캡쳐 2] 전후로 공격코드에 아무의미 없는 주석문이 포함되어 있는데, 이는 Follina 취약점이 크기가 4096byte 이상의 파일이어야 공격코드가 실행되기때문에 임의의 값으로 패딩하여 크기를 맞춰주기 위함.
3. 대응방안
1. MSDT URL 프로토콜을 비활성화 - 명령 프롬프트(cmd.exe)를 관리자로 실행 - 레지스트리 키를 백업하기위해 “reg export HKEY_CLASSES_ROOT\ms-msdt filename ” 명령 실행 - “reg delete HKEY_CLASSES_ROOT\ms-msdt /f” 명령 실행
MSDT URL 프로토콜 레지스트리 복구 - 관리자 권한으로 명령어 프롬프트 실행. - "reg import [백업 파일명]" 명령어를 실행하여 레지스트리 복구
2. 최신 패치 제공
* 이번 폴리나 패치는 코드 주입 공격 자체는 막을 수 있지만, 익스플로잇 코드를 통한 msdt.exe를 실행은 여전히 가능함
3. Endpoint 장비 사용
- 워드, 엑셀, 파워포인트 등의 문서에서 msdt를 포함한 명령줄 실행이 확인될 경우 탐지되도록 룰 설정
4. 안티바이러스 제품 사용
5. 사용자측에서 주의 필요
- 출처가 불분명한 파일 주의&바이러스 토탈 이용 등 방안
4. 특이점
- 문서파일에 악성코드를 삽입하여 유포하는 방법은 지속적으로 발생하는 공격 유형이며,
기존에는 매크로를 이용해 악성코드를 삽입하는 유형이 다수.
- 하지만, 이번 Follina 취약점은 매크로를 사용하지 않고 msdt를 사용했다는 차이점이 있는데,
이는 사용자의 개입을 줄어들었다는 특징이있음.
- 매크로를 이용한 악성코드의 경우 사용자가 "콘텐츠 사용" 등 매크롤를 사용하기위한 추가적인 동작이 필요하나
Follina 취약점의 경우 문서가 실행되기만 하면 익스플로잇이 발생함.
- 또한, 특정 버전만이 영향 받는것이 아닌 ms 오피스의 모든 제품에서 취약점이 발생 가능함.
- 3. 대응방안에 따른 대응 및 조치가 가능하나 해당 취약점을 이용한 여러가지 공격 변형이 발생할 수 있으므로 주의 필요.
직접 취약점을 실행하여 확인해보려 했으나 능력의 부족으로 그러지 못하였습니다.
다음번 취약점 분석을 할 경우 충분하고 철저히 준비해 계획한대로 수행하도록 노력하겠습니다.