
개념 증명(PoC)으로, Linux 시스템에서 TPM에 바인딩된 LUKS 디스크 암호화를 우회하는 방법을 시연하며, 사용자 정의 루트 파일시스템 공격을 통해 볼륨 키를 추출합니다.
이 저장소에는 약 1년 전 https://oddlama.org/blog/bypassing-disk-encryption-with-tpm2-unlock/ 에서 처음 설명된 일반적인 약점을 악용하는 간단한 개념 증명 코드가 포함되어 있습니다. 구체적으로 IncusOS를 대상으로 하지만, 이 공격은 대부분의 최신 Linux 시스템에 대해 상당히 일반적으로 적용됩니다.
LUKS 암호화를 TPM에 바인딩하는 경우, TPM에 PIN도 반드시 설정하세요.
이것은 빠르고 대충 만든 PoC입니다. 완전히 다듬어지지 않았고, 몇 가지 거친 부분이 있습니다. 지원은 없으며, 추가 개발 계획도 없습니다.
저는 대부분의 사람들처럼 노트북의 TPM 칩에 바인딩된 LUKS 디스크 암호화를 설정하면 안전하고 공격자가 LUKS 볼륨 키(즉, 마스터 키)를 추출하는 것을 막을 수 있을 것이라고 가정했습니다. 알고 보니, 이는 거의 우울할 정도로 쉽게 수행할 수 있고 공격의 흔적을 남기지 않습니다.
맞습니다. 문제는 공격자가 사용자 지정 루트 파일 시스템을 제공할 수 있고, 시스템이 부팅된 후 TPM이 알려진 "양호한" 상태가 되어 LUKS 볼륨을 기꺼이 잠금 해제한다는 것입니다. 그러면 공격자는 원하는 모든 작업을 수행할 수 있고, 공격의 증거를 쉽게 숨길 수 있습니다.
하지만 준비된 공격자는 단 몇 분만 컴퓨터를 소유하면 당신은 해킹당합니다. 저녁 식사를 하러 나가면서 노트북을 호텔 방에 두고 가시나요? 보안 검색대에서 심문을 위해 따로 불려 나가는 상황은 어떨까요? 네, 이것은 좋지 않습니다.
./prepare.sh 스크립트는 대상 VM을 손상시키는 데 필요한 단계를 실행합니다. 동일한 단계는 일반 하우징에서 일시적으로 분리된 실제 하드 드라이브에 대해서도 쉽게 실행할 수 있습니다.
실제 "익스플로잇"은 원래 LUKS 볼륨 키를 추출하며, 이는 attack.service의 저널 로그를 통해 확인할 수 있습니다. 이 공격의 많은 변형이 가능합니다.
./restore.sh를 실행하여 피해자의 LUKS 볼륨 키를 가지고 떠나는 동안 모든 증거를 깨끗이 지우세요.