Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2021-40444 — CVE-2021-40444 - 완전 무장된 Microsoft Office Word RCE 익스플로잇 | Kitploit
도구/GitHubGitHub/klezvirus/cve-2021-40444
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationMalware AnalysisCommand and ControlLearning & Education
GitHubklezvirus/cve-2021-40444

CVE-2021-40444

CVE-2021-40444 - 완전 무장된 Microsoft Office Word RCE 익스플로잇

저장소 보기
832164222년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

완전 무장된 CVE-2021-40444

CVE-2021-40444 (Microsoft Office Word 원격 코드 실행)를 악용하는 악성 docx 생성기, 임의의 DLL 파일과 함께 작동합니다.

2022-05-31 업데이트 - CVE-2022-30190 - Follina

이제 생성기는 "Follina" 공격(ms-msdt 활용)을 악용하는 데 필요한 문서도 생성할 수 있습니다.

배경

이미 많은 PoC가 인터넷에 돌아다니고 있지만, 이 취약점을 무장화하는 데 도전해보기로 했습니다. 제가 찾은 자료들은 공유할 가치가 있는 중요한 정보가 부족했기 때문입니다. 또한 Microsoft는 이미 이 취약점에 대한 패치를 출시했습니다.

지금까지 완전히 작동하는 생성기를 만드는 데 도움이 된 유일한 가치 있는 자료는 다음과 같습니다:

  • Ret2Pwn 블로그
  • j00sean의 트윗
  • wdormann의 트윗

위 자료들은 전체 체인을 만드는 데 필요한 많은 요구 사항을 설명합니다. 불필요한 정보를 너무 많이 반복하지 않기 위해 관련 세부 사항만 요약하겠습니다.

공격 체인

  1. Docx 열림
  2. document.xml.rels에 저장된 관계가 악성 HTML을 가리킴
  3. IE 미리보기가 실행되어 HTML 링크를 염
  4. HTML 내의 JScript에 CAB 파일을 가리키는 객체와 INF 파일을 가리키는 iframe이 포함됨. ".cpl:" 지시어가 접두사로 붙음
  5. cab 파일이 열리고 INF 파일이 %TEMP%\Low 디렉터리에 저장됨
  6. CAB의 경로 탐색(ZipSlip) 취약점으로 인해 INF를 %TEMP%에 저장할 수 있음
  7. 그런 다음 INF 파일이 ".cpl:" 지시어로 열리면서 rundll32를 통해 INF 파일이 사이드로드됨(DLL인 경우)

간과된 요구 사항

이 익스플로잇이 작동하기 위해 간과된 요구 사항이 꽤 많았으며, 이로 인해 lockedbyte의 PoC와 같은 좋은 PoC조차 제대로 작동하지 못했습니다.

아무도 명시적으로 "공개"하지 않은 이유는 취약점이 더 많이 악용되는 것을 막기 위해서일 수 있습니다. 하지만 이제 패치되었으므로 세부 사항을 공개해도 큰 문제가 되지는 않을 것입니다.

HTML 파일

Will Dormann의 이 트윗에 따르면, MS Word 내에서 "미리보기"를 트리거하려면 HTML이 최소 4096바이트 크기여야 합니다.

CAB 파일

추출 오류를 피하고 ZipSlip을 달성하려면 CAB 파일을 바이트 패치해야 합니다:

  • filename.inf는 ../filename.inf가 되어야 함
  • filename.inf 정확히 <12자>.inf여야 함 사실이 아님, 중요한 것은 coffCabStart를 수정하는 것
  • CFFOLDER.typeCompress 0(압축되지 않음)이어야 함
  • CFFOLDER.coffCabStart는 '../'가 추가되었으므로 3만큼 증가해야 함
  • CFFOLDER.cCfData 2여야 함
  • CFFILE.cbFile은 CFHEADER.cbCabinet 전체보다 커야 함
  • CFDATA.csum 재계산(또는 0으로 설정)되어야 함 [선택 사항]

이러한 제약 조건의 이유는 많으며, 모두 깊이 이해하는 데 충분한 시간을 투자하지는 않았지만, 가장 중요한 것을 살펴보겠습니다:

  • TypeCompress: CAB가 압축된 경우, 객체 파일 내에서 열어 INF 쓰기를 트리거하는 트릭이 실패합니다 거짓, MSZIP 압축 샘플로 동일한 결과를 얻을 수 있었습니다.
  • CoffCabStart: CoffCabStart는 첫 번째 CFDATA 구조의 절대 위치를 제공합니다. '../'를 추가했으므로 파일을 가리키도록 이 값을 3만큼 늘려야 합니다(추측에 가깝습니다).
  • cCfData: 파일이 하나만 있으므로 CFDATA도 하나만 있어야 합니다. 왜 2로 설정해야 하는지 잘 모르겠습니다 실제로는 1로 남겨둘 수 있습니다.
  • cbFile: 흥미롭게도 CAB 추출이 오류 없이 완료되면 INF 파일이 WORD에 의해 삭제 표시되어 익스플로잇이 망가집니다. 이를 방지하는 유일한 방법은 WORD가 추출에 실패했다고 믿게 하는 것입니다. cbFile 값이 캐비닛 파일 자체보다 크게 정의되면 추출기가 cbFile에 정의된 모든 바이트를 읽기 전에 EOF에 도달하여 추출 오류가 발생합니다.
  • [선택 사항] 이 값은 MS Word에서 확인되지 않는 것으로 보입니다. 어쨌든 올바른 CAB를 갖기 위해서는 csum 값을 재계산해야 합니다. 다행히 j00sean이 지적하고 MS 문서에 따르면, 이 값은 0이 될 수 있습니다.

참고1: Defender는 이제 _IMAGE_DOS_HEADER.e_magic 값을 시그니처로 사용하여 CAB 파일에 PE가 포함되어 있는지 감지합니다. 이로 인해 PE 파일이 CAB에 포함되지 못할 수 있습니다. 이 시그니처를 우회할 수 있을까요? 확실하지 않지만, 앞서 언급했듯이 이는 패치된 취약점이므로 더 이상 많은 시간을 투자할 계획은 없습니다. 호기심 많은 독자가 추가로 개발해 보시기 바랍니다.

참고2: Microsoft 패치는 블랙리스트 방식을 사용하여 임의의 URI 체계를 차단합니다(이는 추측일 뿐입니다).

DLL 공격

CVE-2021-40444와 관련된 주요 공격 체인은 .cpl URI 체계를 통해 로드되는 DLL 공격입니다. 이를 악용하려면 공격자는 특별히 조작된 DLL을 생성해야 합니다. 테스트해보고 싶다면 evildll-gen 스크립트를 사용해 보세요.

JScript, VBScript, Javaw, MSIexec, ...

Max Maluin이 지적했듯이, IE 및 관련 파일 확장자 기반 URI를 남용하여 여러 파일 형식과 상호 작용할 수 있습니다. 이는 IE를 악용하는 좋은 방법일 수 있지만 한계가 있습니다.

실제로 익스플로잇에서 파일을 다운로드하는 데 사용되는 방법은 ActiveX 컨트롤 업데이트를 기반으로 하며, 임의의 파일을 다운로드하는 데는 사용할 수 없습니다. Microsoft 문서에 따르면 codebase 태그는 OCX, INF, CAB의 몇 가지 파일 형식만 가리킬 수 있습니다.

OCX 또는 INF 파일을 직접 다운로드할 수 있더라도 시스템 내 올바른 위치에 파일을 다운로드할 수 있다고 확신할 수 없습니다. cab 익스플로잇을 사용하면 경로 탐색을 통해 .inf 파일을 잘 알려진 경로로 이동할 수 있지만, 다른 경우에는 파일이 임의의 디렉터리에 저장되어 참조하기가 사실상 불가능합니다.

현재까지 CAB 파일 없이 다운로드와 실행을 연결하는 방법을 찾지 못했습니다.

참고: IE 단독으로 이야기하자면, HTML 스머글링이 취약점을 악용하는 가능한 시나리오가 될 수 있습니다.

하이브리드 RAR 파일을 사용한 CAB 없는 파일 공격

이 기술은 Eduardo Braun이 트위터에서 처음 공개했으며 이 문서에서 추가로 설명되었습니다.

이 기술을 사용하면 공격 체인이 약간 다릅니다. 이 공격은 사용자가 유효한 WSF 스크립트와 유효한 RAR 파일을 연결하여 얻은 특별히 조작된 RAR 파일을 다운로드해야 합니다. 열리면 RAR에는 HTML을 참조하는 DOCX가 포함되어 있으며, HTML은 다시 RAR 파일을 WSF 스크립트로 로드하려고 시도합니다.

요약하면:

  1. 특별히 조작된 RAR 파일이 다운로드됩니다(아마도 다운로드 폴더).
  2. DOCX가 추출되어 열립니다.
  3. document.xml.rels에 저장된 관계가 악성 HTML을 가리킵니다.
  4. IE 미리보기가 실행되어 HTML 링크를 엽니다.
  5. HTML 내의 JScript에 ".wsf:" URI 체계가 접두사로 붙은 RAR 파일을 가리키는 script/iframe이 포함됩니다.
  6. RAR이 동시에 유효한 RAR이자 유효한 WSF 스크립트가 되도록 설계되었으므로 스크립트가 실행됩니다.

도구에 구현된 익스플로잇 PoC

생성기 유틸리티는 현재 다음 공격을 재현할 수 있습니다:

1 일부 환경에서 CAB가 제대로 다운로드되지 않음

2 사용자가 IE에서 "저장"을 클릭하여 파일을 다운로드해야 함

3 모든 Windows/MS Word 버전에서 실제로 작동하지는 않음

CAB 파일 파서

cab_parser.py 유틸리티를 사용하여 익스플로잇 파일의 헤더를 볼 수 있지만 완전한 파서로 간주하지 마십시오. 무슨 일이 일어나고 있는지 이해하기 위해 개발한 매우 빠르고 지저분한 CAB 헤더 뷰어입니다.

설치

생성기는 Windows에서 작동하도록 설계되었으며 makecab 유틸리티를 사용합니다. 사용하기 전에 필수 종속성을 설치해야 합니다:

  • Virtualenv 사용
root@kitploit:~
git clone https://github.com/klezVirus/CVE-2021-40444
cd CVE-2021-40444
pip install virtualenv
python -m virtualenv venv
venv\Scripts\activate.bat 
pip install -r requirements
  • Virtualenv 없이
root@kitploit:~
git clone https://github.com/klezVirus/CVE-2021-40444
cd CVE-2021-40444
pip install -r requirements

사용법

생성기는 사용하기 간단하며 다양한 페이로드와 Windows 버전에서 테스트되었지만 완벽한 것은 아닙니다. Windows 빌드에 따라 다른 동작이 발생하고 있습니다. 공유할 더 자세한 정보가 생기면 여기에 게시하겠습니다.

root@kitploit:~
usage: generator.py [-h] -P PAYLOAD -u URL [-o OUTPUT] [--host] [-c COPY_TO] [-nc] [-t]

[%] CVE-2021-40444 - MS Office Word RCE Exploit [%]

optional arguments:
  -h, --help            show this help message and exit
  -P PAYLOAD, --payload PAYLOAD
                        DLL payload to use for the exploit
  -u URL, --url URL     Server URL for malicious references (CAB->INF)
  -o OUTPUT, --output OUTPUT
                        Output files basename (no extension)
  --host                If set, will host the payload after creation
  -c COPY_TO, --copy-to COPY_TO
                        Copy payload to an alternate path
  -nc, --no-cab         Use the CAB-less version of the exploit
  -t, --test            Open IExplorer to test the final HTML file

예제

  • 원본 익스플로잇 생성 및 로컬 테스트
root@kitploit:~
python generator.py -u http://127.0.0.1 -P test\calc.dll --host 

참고: 포트는 URL에 의해 선택되며, 페이로드 파일 확장자에 따라 익스플로잇이 생성됩니다.

  • RAR을 사용한 CABless 익스플로잇 생성 및 IE를 통한 로컬 테스트
root@kitploit:~
python generator.py -u http://127.0.0.1 -P test\job-jscript.wsf --no-cab --host -t 
  • HTML 스머글링을 사용한 CABless 익스플로잇(IE 전용) 생성 및 IE를 통한 로컬 테스트
root@kitploit:~
python generator.py -u http://127.0.0.1 -P test\calc.js --no-cab --host -t 
  • MS-MSDT(Follina 공격)를 활용한 CABless 익스플로잇 생성, DOCX 및 RTF 문서 모두
root@kitploit:~
python generator.py -u http://127.0.0.1 -P test\calc.ps1 --no-cab --host --convert

크레딧

  • RET2_pwn - 훌륭한 블로그
  • j00sean - 좋은 힌트
  • lockedbyte - 최초의 괜찮은 PoC
  • Max_Mal - 대체 URI 체계에 대한 힌트
  • wdormann - HTML 파일 크기 제한에 대한 힌트
  • Edu_Braun_0day - 멋진 CABless 버전의 익스플로잇
  • Kevin Beaumont - CVE-2022-30190 (Follina) 연구
도구 다운로드
공격HTML 템플릿대상전달 방식실행 방식작동 여부
공격 원본 버전cab-orig-*WORDDOCXCAB + DLL예
j00sean의 IE 전용 공격cab-orig-j00sanIEHTMLCAB + DLL예
내 DLL 없는 버전cab-uri-*WORDDOCXCAB + JS/VBS아니요1
Eduardo B.의 RAR을 사용한 "CABless" 공격cabless-rar-*WORDRARWSF예
HTML 스머글링을 사용한 수정된 j00sean 공격cabless-smuggling-*IEHTMLJS/VBS예2
Follina 공격cabless-msdt-*WORDDOCX/RTFMSDT + PS예3