# 저렴한 로직 분석기를 통해 Bitlocker 우회하기

> Clean Markdown view of GeekNews topic #10528. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=10528](https://news.hada.io/topic?id=10528)
- GeekNews Markdown: [https://news.hada.io/topic/10528.md](https://news.hada.io/topic/10528.md)
- Type: news
- Author: [kuroneko](https://news.hada.io/@kuroneko)
- Published: 2023-08-25T09:10:44+09:00
- Updated: 2023-08-25T09:10:44+09:00
- Original source: [errno.fr](https://www.errno.fr/BypassingBitlocker.html)
- Points: 6
- Comments: 1

## Topic Body

- 저렴한 로직 분석기를 이용하면 별도의 TPM 칩이 탑재된 컴퓨터에서 Bitlocker의 전체 디스크 암호화를 우회할 수 있음.  
- Bitlocker는 FVEK(전체 볼륨 암호화 키)를 먼저 생성하고, VMK(볼륨 마스터 키)를 사용하여 이를 암호화한 뒤 하드 디스크에 저장함.  
  - TPM을 활성화한 경우 VMK는 TPM 안에 저장되며, 부팅 시 TPM으로부터 VMK를 받아 하드 디스크를 해독하게 됨.  
  - 하지만 VMK를 받아오는 과정에서 평문으로 메시지가 전송되고 있음.  
- 이를 해독하기 위해서는 로직 분석기를 통해 CPU와 TPM 칩 사이에 오가는 SPI 명령어를 캡처해야 함.  
  - TPM 칩 자체는 로직 분석기를 달기에 매우 어려우므로, TPM과 SPI 버스를 공유하는 다른 칩에 연결하여 신호를 캡처 시작.  
  - 먼저 알기 쉬운 SPI 요청을 캡처하고, TPM 인터페이스 사양으로 통신을 의미하는 TIS를 해독해야 함.  
  - TIS를 해독하는 쉬운 방법이 없어, 수동으로 해독하여 TPM 신호의 시작 바이트를 알 수 있었음.  
  - 이제 TPM 2.0 사양에 명시된 TPM2_Unseal 명령어를 캡처하여 암호를 알아낼 순서임.  
  - TIS에서 알아낸 바이트로 TPM 2.0 명령을 찾고, 응답을 분리한 다음 tpmstream-web 같은 도구를 사용해 TPM 응답에서 버퍼를 분리함.  
- 키를 알아냈으면 이제 하드 디스크의 데이터에 접근할 수 있음.  
  - 하드 디스크를 분리하여 다른 시스템에 연결한 후, dislocker와 같은 도구를 사용해 암호화된 파일 시스템을 탐색함.  
  - 전통적인 방법인 특정 프로그램을 cmd.exe로 바꾸는 방법을 통해 로그인 화면에서 쓸 수 있는 시스템 셸을 만듦.  
  - 관리자 권한이 있는 cmd를 얻었으므로, 무엇이든 할 수 있음.  
- 결국 물리적인 TPM이 있으면 Bitlocker가 매우 취약해지므로, CPU에 완전히 통합되어 이러한 공격이 불가능한 fTPM이 권장됨.  
- 만약 물리적인 TPM이 있는 시스템에서 안전하게 Bitlocker를 사용하기 위해서는 PIN이나 암호를 설정해야 함.

## Comments



### Comment 18593

- Author: kuroneko
- Created: 2023-08-25T09:15:34+09:00
- Points: 2

- [도난당한 노트북에서 회사 네트워크 내부까지](https://dolosgroup.io/blog/2021/7/9/from-stolen-laptop-to-inside-the-company-network)  
  
동일한 주제로 한 다른 게시글입니다.  
  
Bitlocker만 이상하게 TPM이 이런 중간자 공격을 방지하기 위해 만들어둔 암호화된 세션을 이용하지 않아 이런 문제가 발생한다네요.  
systemd는 TPM과 LUKS 암호화를 사용할 때 이런 문제가 없다고 합니다.  
  
제 생각보다 Bitlocker가 특정 상황에서는 굉장히 취약했네요.  
무려 이름에 Trusted가 들어가는 보안 모듈이라 이런 문제가 없을 줄 알았는데...
