- Có thể vượt qua mã hóa toàn bộ ổ đĩa của BitLocker trên các máy tính có chip TPM rời bằng cách dùng một máy phân tích logic giá rẻ.
- BitLocker trước tiên tạo FVEK (khóa mã hóa toàn bộ volume), sau đó mã hóa khóa này bằng VMK (khóa chủ của volume) rồi lưu vào ổ cứng.
- Khi TPM được bật, VMK được lưu trong TPM và trong lúc khởi động, hệ thống sẽ nhận VMK từ TPM để giải mã ổ cứng.
- Tuy nhiên, trong quá trình nhận VMK, các thông điệp lại được truyền ở dạng văn bản thuần.
- Để giải mã việc này, cần dùng máy phân tích logic để bắt các lệnh SPI đi qua giữa CPU và chip TPM.
- Do rất khó gắn máy phân tích logic trực tiếp vào chính chip TPM, nên có thể kết nối vào một chip khác dùng chung bus SPI với TPM để bắt đầu thu tín hiệu.
- Trước hết cần bắt các yêu cầu SPI dễ nhận biết, rồi giải mã TIS, thứ biểu thị ý nghĩa của giao tiếp theo đặc tả giao diện TPM.
- Vì không có cách dễ dàng để giải mã TIS, nên phải giải mã thủ công để xác định byte bắt đầu của tín hiệu TPM.
- Sau đó là bước bắt lệnh
TPM2_Unseal được nêu trong đặc tả TPM 2.0 để lấy khóa.
- Dùng các byte đã tìm ra từ TIS để xác định lệnh TPM 2.0, tách phần phản hồi, rồi dùng công cụ như
tpmstream-web để tách buffer từ phản hồi TPM.
- Khi đã lấy được khóa, giờ có thể truy cập dữ liệu trên ổ cứng.
- Tháo ổ cứng ra và gắn sang hệ thống khác, sau đó dùng công cụ như
dislocker để duyệt hệ thống tệp đã mã hóa.
- Dùng cách truyền thống là thay một chương trình nhất định bằng
cmd.exe để tạo một shell hệ thống có thể dùng ngay tại màn hình đăng nhập.
- Khi đã có
cmd với quyền quản trị, có thể làm bất cứ điều gì.
- Kết luận là nếu dùng TPM vật lý thì BitLocker trở nên khá mong manh, vì vậy nên dùng fTPM được tích hợp hoàn toàn vào CPU để kiểu tấn công này không thể thực hiện.
- Nếu muốn dùng BitLocker an toàn trên hệ thống có TPM vật lý, cần thiết lập PIN hoặc mật khẩu.
1 bình luận
Đây là một bài đăng khác về cùng chủ đề.
Có vẻ như vấn đề này xảy ra vì riêng BitLocker lại không sử dụng phiên được mã hóa mà TPM tạo ra để ngăn chặn các cuộc tấn công trung gian kiểu này.
Nghe nói systemd không gặp vấn đề này khi dùng TPM và mã hóa LUKS.
BitLocker hóa ra dễ bị tổn thương hơn tôi nghĩ rất nhiều trong một số tình huống.
Vì đây là mô-đun bảo mật mà ngay trong tên còn có chữ Trusted, tôi đã nghĩ sẽ không có kiểu vấn đề như thế này...