GN⁺: 윈도우 11에서 BitLocker 우회를 위한 메모리 덤프 방법
(noinitrd.github.io)-
소개
- 이 글에서는 Windows 11(버전 24H2)에서 BitLocker 암호화를 우회하는 방법을 설명함. 이는 메모리에서 전체 볼륨 암호화 키(FVEK)를 추출하여 이루어짐.
-
배경
- 공격자가 물리적으로 장치에 접근할 수 있다면, 컴퓨터를 갑자기 재시작하고 최근 실행된 Windows 인스턴스의 RAM을 덤프하여 민감한 정보를 얻을 수 있음.
- RAM의 내용은 전원이 차단되면 빠르게 손상되므로, 이를 방지하기 위해 RAM을 물리적으로 냉각하거나 외부 전원 공급원을 사용하는 등의 방법이 있음.
- 보안 부팅은 장치 시작 시 실행할 수 있는 것을 제한하는 보안 표준이지만, 우회할 수 있는 방법이 존재함.
-
단계 1: 부팅 가능한 USB 장치 생성
- 대상 시스템의 RAM보다 큰 USB 저장 장치를 준비해야 함.
-
flashimage.sh
스크립트를 사용하여 부팅 가능한 애플리케이션을 생성하고 사용함.
-
단계 2: 대상 시스템 갑작스러운 재시작
- 컴퓨터가 완전히 전원이 꺼지는 시간을 최소화하는 것이 목표임.
- Windows가 로딩되는 동안, 로그인 화면이 나타나기 전에 시스템을 재시작하는 것이 효과적임.
-
단계 3: USB 장치에서 부팅
- USB 장치에서 Memory-Dump-UEFI로 즉시 부팅하여 UEFI 셸에 도달함.
-
app.efi
를 실행하여 메모리 덤프를 생성함.
-
단계 4: 덤프 분석
- FAT32 파일 시스템의 4GB 파일 크기 제한으로 인해 여러 덤프가 생성될 수 있음.
-
concatDumps
프로그램을 사용하여 여러 덤프를 하나로 결합할 수 있음. -
searchMem
프로그램을 사용하여 덤프 내에서 특정 패턴을 검색할 수 있음.
-
풀 태그
- 풀 태그는 Windows 커널 메모리 풀의 위치를 나타내는 4자 식별자임.
-
pooltag.txt
파일에 다양한 풀 태그와 그 목적이 포함되어 있음.
-
FVEK 키 복구
-
dFVE
풀 태그 아래에서 FVEK 키를 찾을 수 있으며, 이는 BitLocker 드라이브 암호화의 전체 볼륨 암호화 충돌 덤프 필터와 관련됨. -
None
태그 아래에서도 키를 찾을 수 있음.
-
-
다음 단계
- 얻은 키에 사용된 알고리듬을 추가해야 함.
-
dislocker
도구를 사용하여 드라이브를 잠금 해제할 수 있음.
-
최종 노트
- BitLocker의 구현을 이해하려면 커널 수준 디버깅을 수행하는 것이 가장 좋음.
- Microsoft는 키를 파괴하려고 노력하지만, 모든 키를 파괴하지는 못함.
Hacker News 의견
-
BitLocker는 TPM(PCR 7+11)과 PIN을 함께 사용할 때 가장 큰 이점을 제공함. PIN 없이 FVEK를 읽을 수 없으며, 잘못된 PIN 입력이 많을 경우 TPM이 사전 공격 잠금 모드로 전환됨
- Linux에서 비슷한 설정을 시도 중이며, systemd-cryptsetup/cryptenroll은 LUKS 전용이라 fscrypt로 민감한 디렉토리를 암호화하려고 함
- TPM은 기본적인 것 이상을 구현할 때 매우 어려움
- 개인 프로젝트로 진행 중이며, 완료되면 작성할 예정임
-
BitLocker의 보안 모델을 이해하지 못함. 대부분의 설치에서는 전원 버튼을 눌러 Windows로 부팅됨
- 암호화된 하드 드라이브를 가진 기계를 도난당하면 그냥 켜면 되는 것인지 의문임
- SPI 버스의 트래픽이 암호화되어 있어야 한다고 가정하지만, 기계가 쉽게 키를 제공할 것 같음
- LUKS는 드라이브 잠금을 해제하기 위한 비밀번호 프롬프트가 있음
-
특정 공격은 PC 클라이언트 작업 그룹 플랫폼 재설정 공격 완화 사양으로 완전히 방어됨
- 운영 체제가 깨끗하게 종료되지 않으면 펌웨어가 RAM을 지우고 다음 부팅 전에 멈춤
- Windows가 이를 사용하지 않는지, 테스트된 시스템이 구현하지 않았는지 궁금함
-
기사 작성자임. 질문이 있으면 메시지 보내달라고 함. 작업이 재미있었고 참여에 감사함
-
Windows 11 BitLocker 우회에 관한 38C3 관련 토크가 있음
-
물리적 접근이 가능한 임의의 적이 외부에서 "갑작스러운 재시작"을 할 수 없는 "엔터프라이즈" 기계가 있음
- 대중적으로 사용되는 OEM이 여전히 "갑작스러운 재시작"을 쉽게 허용하는 것이 아쉬움
-
BitLocker는 컴퓨터가 꺼져 있을 때만 보호하며, 부팅 비밀번호를 요구하도록 구성해야 함
-
Windows는 메모리 암호화 옵션과 메모리 압축을 제안함
- Intel과 AMD는 이를 CPU에 내장하려고 작업 중이며, 대상은 노트북이 아닌 다중 VM을 가진 서버임
-
대상 기계의 메모리 덤프를 읽는 익스플로잇에 대해 물리적 접근이 가능할 때 "인터포저" 장치가 데이터를 복사하거나 수정하는 것이 가능한지 궁금함
- Gameboy의 "Action Replay" 장치처럼 메모리를 수정하는 것이 가능한지 의문임
- RAM과 마더보드 사이에 장치를 삽입하여 메모리 상태를 캡처할 수 있는지 궁금함
- 전기공학자가 아니어서 제안이 비현실적일 수 있지만, 물리적 공간과 대역폭 제한이 있을 것 같음
-
BitLocker 암호화 디스크를 가진 Surface 5 Pro가 부팅 중 BSOD로 빠르게 전환됨
- 이 상황에서 작동할 수 있을지 궁금하며, 디스크에서 사진을 추출하기 위한 익스플로잇을 기다리고 있음