저렴한 로직 분석기를 통해 Bitlocker 우회하기
(errno.fr)- 저렴한 로직 분석기를 이용하면 별도의 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이나 암호를 설정해야 함.
동일한 주제로 한 다른 게시글입니다.
Bitlocker만 이상하게 TPM이 이런 중간자 공격을 방지하기 위해 만들어둔 암호화된 세션을 이용하지 않아 이런 문제가 발생한다네요.
systemd는 TPM과 LUKS 암호화를 사용할 때 이런 문제가 없다고 합니다.
제 생각보다 Bitlocker가 특정 상황에서는 굉장히 취약했네요.
무려 이름에 Trusted가 들어가는 보안 모듈이라 이런 문제가 없을 줄 알았는데...