## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-WACK0-CVE-2022-21894
# baton drop (CVE-2022-21894): ๋ณด์ ๋ถํ
๋ณด์ ๊ธฐ๋ฅ ์ฐํ ์ทจ์ฝ์
Windows ๋ถํธ ์ ํ๋ฆฌ์ผ์ด์
์ `truncatememory` ์ค์ ์ ์ฌ์ฉํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋งต์์ ์ง๋ ฌํ๋ ๋ฐ์ดํฐ์ "์๊ตฌ" ๋ฒ์๋ฅผ ํฌํจํ๋ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ ์ ๊ฑฐํ์ฌ ๋ณด์ ๋ถํ
์ฐํ๋ฅผ ์ด๋ํฉ๋๋ค.
* `truncatememory` BCD ์์๋ ์ง์ ๋ ๋ฌผ๋ฆฌ์ ์ฃผ์ ์์ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฉ๋ชจ๋ฆฌ ๋งต์์ ์ ๊ฑฐํฉ๋๋ค.
* ์ด๋ ๊ฐ ๋ถํธ ์ ํ๋ฆฌ์ผ์ด์
์ด๊ธฐํ ์ค, ๋ฉ๋ชจ๋ฆฌ์์ ์ง๋ ฌํ๋ ๋ณด์ ๋ถํ
์ ์ฑ
์ ์ฝ๊ธฐ ์ ์ ์ํ๋ฉ๋๋ค.
* ๋ฐ๋ผ์ ์ด๋ฌํ ์์๋ฅผ ์ฌ์ฉํ์ฌ ์ง๋ ฌํ๋ ๋ณด์ ๋ถํ
์ ์ฑ
์ ๋ฉ๋ชจ๋ฆฌ ๋งต์์ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
* ์ด๋ก ์ธํด ๋ถํธ ์ ํ๋ฆฌ์ผ์ด์
์์ ์ํํ ์ค์ (`bootdebug`, `testsigning`, `nointegritychecks`)์ ์ฌ์ฉํ ์ ์๊ฒ ๋์ด ๋ณด์ ๋ถํ
์ด ๋ฌด๋ ฅํ๋ฉ๋๋ค.
์ด ๋ฌธ์ ๋ ๋ ๊ฐ์ง ๋ณ๊ฒฝ ์ฌํญ์ผ๋ก ์์ ๋์์ต๋๋ค:
* ์ง๋ ฌํ๋ ๋ณด์ ๋ถํ
์ ์ฑ
๋ก๋๋ฅผ ์๋ํ ํ, ์ ์ฑ
์ด ๋ก๋๋์ง ์์๊ณ , ๋ณด์ ๋ถํ
์ด ํ์ฑํ๋์ด ์์ผ๋ฉฐ, ๋ถํธ ์ ํ๋ฆฌ์ผ์ด์
์ด UEFI ํ์จ์ด์ ์ํด ์ง์ ๋ก๋๋์ง ์์๊ณ , ๋ถํธ ์ ํ๋ฆฌ์ผ์ด์
์ด `bootmgr`์ด ์๋ ๊ฒฝ์ฐ ๋ถํธ ์ ํ๋ฆฌ์ผ์ด์
์ด๊ธฐํ๊ฐ ์คํจํฉ๋๋ค.
* ๋ถํธ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ก๋ํ ๋, `OriginalFilename`์ ํฌํจํ๋ `VERSIONINFO` ๋ฆฌ์์ค๊ฐ ์๊ณ , ํด๋น ํ์ผ ์ด๋ฆ์ด ์ฐจ๋จ ๋ชฉ๋ก(`bootmgr.exe` ๋ฐ `hvloader.exe` ํฌํจ; Nickel์์๋ `hvloader.efi`๊ฐ ์ถ๊ฐ๋์์ง๋ง ๋ฐฑํฌํธ๋์ง ์์)์ ํฌํจ๋ ๊ฒฝ์ฐ ๋ก๋๊ฐ ์คํจํฉ๋๋ค.
* Windows 8 ๋ฐ Windows 8.1์์๋ `hvloader.exe`๊ฐ `winload`์ ์ฐจ๋จ ๋ชฉ๋ก์ ํฌํจ๋์ง ์์ต๋๋ค. ์๋๋ ํฌํจ๋์ด ์์ด Hyper-V ๋ก๋ฉ์ด ์ค๋จ๋์์ต๋๋ค!
* Windows 10 ๋ฒ์ 1809๋ถํฐ ํน์ ํ๋๊ทธ ๋นํธ๊ฐ ์ค์ ๋ ๊ฒฝ์ฐ(๋์คํฌ์์ `bootmgr`์ ๋ก๋ํ๊ธฐ ์ํด `flightedbootmgr` ์์์ ํจ๊ป ์ฌ์ฉ๋จ), `OriginalFilename`์ **ํ์์ ์ผ๋ก** `bootmgr.exe`์ฌ์ผ ํฉ๋๋ค.
## ์
์ฉ
๊ณต๊ฒฉ์๋ ์ง๋ ฌํ๋ ๋ณด์ ๋ถํ
์ ์ฑ
์ด ์๋ ค์ง ๋ฌผ๋ฆฌ์ ์ฃผ์ ์์ ํ ๋น๋๋๋ก ํด์ผ ํฉ๋๋ค.
* ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ๋ฅํ ๊ฐ์ฅ ๋ฎ์ ์ฃผ์์ ํ ๋น๋ฉ๋๋ค.
* ์๋ ์ง๋ ฌํ๋ ๋ณด์ ๋ถํ
์ ์ฑ
์ ๋ก๋๋ ํ, BCD์์ ๋ก๋๋ ๊ตฌ์ฑ์ ์ฌ์ฉํ๊ธฐ ์ ์ ํ ๋น๋ฉ๋๋ค.
* RS1๋ถํฐ ์ง๋ ฌํ๋ ๋ณด์ ๋ถํ
์ ์ฑ
์ ๋ถํธ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ก๋ํ ๋ ํ ๋น๋ฉ๋๋ค.
* RS2๋ถํฐ ๋ณด์ ๋ถํ
์ ์ฑ
์ ์ง๋ ฌํํ ๋ ๊ธฐ์กด ์ง๋ ฌํ๋ ๋ณด์ ๋ถํ
์ ์ฑ
์ด ํด์ ๋ฉ๋๋ค.
* ๋ถํธ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ก๋ํ ๋ BCD ํญ๋ชฉ์ `osdevice`๊ฐ TPM์ ์ฌ์ฉํ์ฌ VMK๊ฐ ๋์ถ๋ BitLocker ์ํธํ ํํฐ์
์ธ ๊ฒฝ์ฐ ์ง๋ ฌํ๋ ๋ณด์ ๋ถํ
์ ์ฑ
์ด ๋ค์ ํ ๋น๋ฉ๋๋ค.
* ์ด๋ TPM ์ธ์ค๋ง ์ฑ๊ณต ํ ํค ํ๋๊ทธ์ ๋นํธ 0์ ์ค์ ํ์ฌ ์์กฐํ ์ ์์ต๋๋ค. ์ด ๋นํธ๋ BitLocker ๋ฉํ๋ฐ์ดํฐ์์ ์๋์ผ๋ก ์ค์ ํ ์ ์์ผ๋ฉฐ, ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฆ์ ๋ณด์ ๋ถํ
์ด ์ฌ์ฉ๋จ์ ์ง์ ํ๋ ์ถ๊ฐ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
`avoidlowmemory` ์์๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด ์ง์ ๋ ๋ฌผ๋ฆฌ์ ์ฃผ์ ์์ ์๋๋ก ํ ์ ์์ต๋๋ค:
* Windows 10๋ถํฐ VBS๊ฐ ํ์ฑํ๋ ๊ฒฝ์ฐ ์ด ์์๋ ํ์ฉ๋์ง ์์ง๋ง, ๋ถํธ ์ ํ๋ฆฌ์ผ์ด์
์ด๊ธฐํ ์ค ๋ฉ๋ชจ๋ฆฌ์์ ์ง๋ ฌํ๋ ๋ณด์ ๋ถํ
์ ์ฑ
์ ์ฝ๊ธฐ ์ ์ ์ฌ์ฉ๋๋ฏ๋ก `bootmgr`์ ๋ก๋ํ๊ณ ์ฌ์ฉ์ ์ง์ BCD ๊ฒฝ๋ก๋ฅผ ์ง์ ํ๋ฉด(`bcdfilepath` ์์, ์ผ๋ช
`custom:22000023` ์ฌ์ฉ) ์ด๋ฅผ ์ฐํํ ์ ์์ต๋๋ค.
* OS ๋ณผ๋ฅจ์ BitLocker๊ฐ ์๊ฑฐ๋ ๋์ ์์คํ
์ด TH1 ๋๋ TH2๋ฅผ ์คํ ์ค์ธ ๊ฒฝ์ฐ ์ด ๋ฐฉ๋ฒ์ ์คํจํฉ๋๋ค. ๋ฐ๋ผ์ Windows 8.x `bootmgr`์ ์ฌ์ฉํ์ฌ ๊ณต๊ฒฉ์ ํ ๋ฒ ์คํํ์ฌ VBS๋ฅผ ๋นํ์ฑํํ ํ ์๋ ๋ถํธ๋ก๋๋ก ๋ค์ ์ ํํ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค.
* Windows 10์ ๋ชจ๋ TPM PCR์ ํ ๋ฒ์ ์บกํ๋๋ก ๋ถํธ ์ ํ๋ฆฌ์ผ์ด์
์ด๊ธฐํ๋ฅผ ๋ณ๊ฒฝํ์ผ๋ฏ๋ก Windows 8.x `bootmgr`์ Windows 10+ ์์คํ
์์ VMK๋ฅผ ์ธ์ค๋งํ๋ ๋ฐ ์คํจํฉ๋๋ค.
`hvloader.efi`๋ `nointegritychecks` ์์์ ํจ๊ป ๋ก๋๋์ด ์์ฒด ์๋ช
๋ `mcupdate.dll`์ ๋ก๋ํ ์ ์์ผ๋ฉฐ, ํด๋น ์ง์
์ ์ `ExitBootServices` ์ ์ ํธ์ถ๋ฉ๋๋ค.
๋๋ AMD64 ์ด์ธ์ ์์คํ
์์๋ TH2 ์ด์ ์ `winload.efi`๋ฅผ `testsigning` ์์์ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ์ธ์ฆ์์ `szOID_NT5_CRYPTO` EKU๊ฐ ์๋ ์์ฒด ์๋ช
๋ ๋ฐ์ด๋๋ฆฌ๋ฅผ ํ์ฉํฉ๋๋ค.
ARMv7 ์์คํ
์์๋ `mcupdate.dll`์ ๋ํ ์ํฌํธ๊ฐ ํฌํจ๋ ํจ์น๋ ์์ฒด ์๋ช
`hal.dll`์ ๋ก๋ํด์ผ ์ฝ๋ ์คํ์ด ๊ฐ๋ฅํฉ๋๋ค.
x86 ๋ฐ AMD64 ์์คํ
์์๋ `mcupdate.dll`๋ก ๋ก๋๋๋ ํ์ผ์ ์ด๋ฆ์ด `mcupdate_*.dll`์ด์ด์ผ ํ๋ฉฐ, ์ฌ๊ธฐ์ `*`๋ CPUID ์ ์กฐ์
์ฒด ๋ฌธ์์ด(`GenuineIntel`, `AuthenticAMD` ๋ฑ)์
๋๋ค.
ARM64 ์์คํ
์์๋ ๊ฐ์ฅ ์ด๋ฅธ ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋ก๋์
์๋ช
๋น๋๊ฐ RS2์ WinPE์ด๋ฏ๋ก ์ด ๊ธฐ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ํ์ฌ๋ `bootdebug`๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ๋ ์ฝ๋ ์คํ๋ง ๊ฐ๋ฅํฉ๋๋ค.
## ํฌํจ ํ์ผ
์ด ์ ์ฅ์์๋ ๋ค์ ํ์ผ์ด ํฌํจ๋์ด ์์ต๋๋ค:
* ๊ฐ๋จํ ํ์ด๋ก๋์ ์์ค ์ฝ๋๊ฐ ์ ๊ณต๋ฉ๋๋ค. ์ด ํ์ด๋ก๋๋ ํธ์ถ ๋ถํธ ์ ํ๋ฆฌ์ผ์ด์
์์ ํฅ๋ฏธ๋ก์ด ํจ์์ ๋ณ์๋ฅผ ์ฐพ์ง ๋ชปํ๋ฉด ๋ค๋ฅธ ์์
์ ์ํํ ์ ์์ผ๋ฏ๋ก ๋ฌดํํ ์ธํฐ๋ฝํธ๋ฅผ ๊ธฐ๋ค๋ฆฝ๋๋ค.
* `mcupdate.dll`์ด ํ์ด์ง์ด ํ์ฑํ๋ ๊ฐ์ ์ฃผ์์์ ์คํ๋๋ฏ๋ก EFI ํจ์๋ฅผ ์ง์ ํธ์ถํ ์ ์์ต๋๋ค(EFI ํจ์๋ฅผ ํธ์ถํ๋ ค๋ฉด ํ์ด์ง์ ๋นํ์ฑํํด์ผ ํ๋ฉฐ, ํ์ด์ง์ด ๊บผ์ง ์ํ์์ ๊ฐ์ ์ฃผ์๋ก ๋์๊ฐ๋ฉด ์ข์ง ์์ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํฉ๋๋ค).
* EFI ํจ์๋ฅผ ํธ์ถํ๋ ค๋ฉด ํ์ด๋ก๋๊ฐ ํ๋๊ทธ์ ๋นํธ 0์ ์ค์ ํ์ฌ `BlImgLoadPEImageEx` ๋๋ `BlImgLoadPEImageFromSourceBuffer`๋ฅผ ํธ์ถํ์ฌ 1:1 ๋ฌผ๋ฆฌ์ ์ฃผ์-๊ฐ์ ์ฃผ์ ๋งคํ์์ ์ถ๊ฐ ํ์ด๋ก๋๋ฅผ ๋ก๋ํด์ผ ํฉ๋๋ค.
* ๋๋ ๋์ผํ ๋นํธ๋ฅผ ์ค์ ํ์ฌ `BlImgAllocateImageBuffer`๋ฅผ ํธ์ถํ์ฌ 1:1 ๋ฌผ๋ฆฌ์ ์ฃผ์-๊ฐ์ ์ฃผ์ ๋งคํ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ ๋ค์ ํ์ด๋ก๋ ์์ฒด๋ฅผ ๋ก๋ํ๊ฑฐ๋(๋๋ ๊ฑฐ๊ธฐ์ ์์ฒด๋ฅผ ๋ค์ ๋งคํ) ํ ์ ์์ต๋๋ค.
* Windows 8 RTM์ `bootmgfw`์ TH1 RTM์ `hvloader`๋ฅผ ์ฌ์ฉํ์ฌ AMD64์์ ์ด ๋ฌธ์ ๋ฅผ ์
์ฉํ๋ ISO์
๋๋ค.
* ์ฌ๊ธฐ์ ์ฌ์ฉ๋ ํ์ด๋ก๋๋ ์คํ์
์ผ๋ก ์ป์ `hvloader`์ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ฉด์ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ ๋ค์ ๋ฌดํ ๋ฃจํ๋ฅผ ๋๋๋ค.
* RS1์ `bootmgr`๊ณผ TH1 RTM์ `hvloader`๋ฅผ ์ฌ์ฉํ์ฌ AMD64์์ ์ด ๋ฌธ์ ๋ฅผ ์
์ฉํ๋ ISO์
๋๋ค.
* ๋ฒ์ 19041.1081์ `bootmgr`๊ณผ TH1 RTM์ `hvloader`๋ฅผ ์ฌ์ฉํ์ฌ AMD64์์ ์ด ๋ฌธ์ ๋ฅผ ์
์ฉํ๋ ISO์
๋๋ค.
## ์ถ์
์ด ๋ฌธ์ ๋ BitLocker ํค๋ฅผ ๋คํํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค(๋ณด์ ๋ถํ
์ด ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฆ์ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ).
* ๊ฐ๋ฅํ์ง๋ง, ๋ฉ๋ชจ๋ฆฌ์์ ์์์ ๋ณผ๋ฅจ์ ๋ํ ๋์ถ๋ BitLocker ํค๋ก ์ฝ๋ ์คํ์ ์ป๋ ์ ํํ ๋ฐฉ๋ฒ์ ๊ณต๊ฐ๋์ง ์์ต๋๋ค.
์ด ๋ฌธ์ ์ ๋ํ ์์ ์ CVE๊ฐ ์๋ ๋ค๋ฅธ ๋ฌธ์ ๋ ์์ ํ์ต๋๋ค.
* `bootmgr`์ ์ด๋ฏธ ๋ฉ๋ชจ๋ฆฌ์ ์๋ BitLocker ํคํ
์ด๋ธ์ ๋ฌด์ํ๊ณ ๊ธฐ์กด ํคํ
์ด๋ธ์ ์ง์ฐ์ง ์๊ณ ์ ํคํ
์ด๋ธ์ ํ ๋นํฉ๋๋ค.
* ๋ฐ๋ผ์ ๊ณต๊ฒฉ์๋ `bootmgr`์์ RS2+ `bootmgr`์ ๋ก๋ํ๊ณ (๋ณด์ ๋ถํ
์ด ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฆ์ ์ฌ์ฉ๋๋ ์์์ `osdevice` ์ง์ ), WinPE๋ก ๋ถํ
ํ๊ณ , ์๋ ค์ง ์ทจ์ฝํ ๋๋ผ์ด๋ฒ๋ฅผ ๋ก๋ํ ํ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ์์ ๊ธฐ์กด BitLocker ํคํ
์ด๋ธ์ ๊ฒ์ํ๊ณ ๋คํํ ์ ์์ต๋๋ค.
์๋ ค์ง ์ทจ์ฝํ ๋ถํธ ์ ํ๋ฆฌ์ผ์ด์
์ ์์ง ํด์ง๋์ง ์์์ต๋๋ค.
* ํด์ง๊ฐ ๋ฐ์ํ ๋๊น์ง ๊ณต๊ฒฉ์๋ ์์ ์ ์ทจ์ฝํ ๋ถํธ๋ก๋๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
* ํด์ง๋ ๋ชจ๋ ๊ธฐ์กด Windows ์ค์น/๋ณต๊ตฌ ๋ฏธ๋์ด์ ์ด์ ๋ฐฑ์
์ด ๋ถํ
์ ์คํจํ๊ฒ ๋ง๋ญ๋๋ค.
* ๋ณด์ ๋ถํ
์ด ๋นํ์ฑํ๋ ๊ฒฝ์ฐ์๋ `bootmgr`์ด ์์ฒด ์๋ช
์ ํ์ธํ๊ธฐ ๋๋ฌธ์ ๋ถํ
์คํจ๊ฐ ๋ฐ์ํฉ๋๋ค.
## ์
๋ฐ์ดํธ (2023-05-10)
๋ถ์์ ํ ํด์ง๊ฐ ๋ฐ์ํ์ผ๋ฉฐ, ๋ ๋ค๋ฅธ CVE(CVE-2023-24932)๊ฐ ์์ต๋๋ค. ์ฌ์ ํ ํด์ง๋์ง ์์ ์ทจ์ฝํ `bootmgfw` ํ์ผ๊ณผ `bootmgr`์ด `bootmgr`์ ๋ก๋ํ๋ ๊ฒฝ์ฐ๋ง ์์ ํ๋ ์ถ๊ฐ ํจ์น๊ฐ ์์ต๋๋ค. MS๊ฐ ํ๋์ ์ทจํ๊ฒ ํ ๊ฒ์ ๋ถ์ฌ๋ฃ๊ธฐ ๋ถํธํท๋ฟ์ด์์ต๋๋ค ;)
์ถฉ๋ถํ ์ฐฝ์์ ์ด๋ผ๋ฉด 2000๊ฐ ์ด์์ `bootmgfw` ํ์ผ ํด์ง๋ฅผ ์ฐํํ ๋ฐฉ๋ฒ์ ์ฐพ์ ์ ์์ ๊ฒ์
๋๋ค ;)