Dokładny sposób przeprowadzenia czynności wspomnianej w tytule przedstawiono w tym tekście. Badacze w praktyce zaprezentowali metodę z 2019 roku autorstwa Denisa Andzakovica, o której napisano również na Sekuraku.
BitLocker nie jest całkowicie bezpieczny, jak każde inne rozwiązanie, i można dostać się do zaszyfrowanych danych na różne sposoby, np. poprzez aktualizację systemu Windows czy stosując podejście podobne do opisanego. Wymaga to fizycznego dostępu do urządzenia, natomiast szyfrowanie dysku jest dobrą praktyką, powszechnie stosowaną i obowiązkową w wielu firmach. Sposoby przechwycenia komunikacji TPM są czasochłonne, ale atakujący zapewne będzie zdeterminowany.
Jeśli dysk jest zaszyfrowany mocnym algorytmem, musimy znać hasło, aby uzyskać dostęp do danych. W sytuacji, gdy hasła zapomnimy, BitLocker zapewnia klucz odzyskiwania generowany w trakcie konfiguracji tej funkcji, który przechowujemy na osobnym dysku. Natomiast atakujący niekoniecznie musi znać hasło czy dysponować tym kluczem, dlatego warto zastosować inne podejście, bardziej skupiając się na aspektach związanych ze sprzętem.
Badacze wykorzystali laptop Lenovo ThinkPad L440. Podstawową czynnością jest odnalezienie modułu TPM na płycie głównej, co w tym przypadku wiązało się z zakupem schematu z Western Union, ponieważ diagram znaleziony w Internecie nie dostarczał bardziej szczegółowych danych technicznych. Na początku zdecydowano się jednak na zwykłe „oględziny” płyty głównej.
Układ TPM nazywał się P24JPVSP, w rzeczywistości jednak jego oficjalna nazwa to ST33TPM12LPC. Został oparty na interfejsie LPC, którego prototyp powstał w 1998 roku (autorstwa firmy Intel). Częściowo wyparł go SPI, mimo to wciąż znajduje zastosowanie, właśnie m.in. w modułach TPM.
Należało przeprowadzić analizę sześciu ramek: LAD0, LAD1, LAD2, LAD3, LFRAME i LRESET. Dysponując niezbędnymi narzędziami i mając umiejętności lutowania mikroelementów, można wykonać to poprzez podłączenie pinów, co jest bardzo skomplikowane:
Now, if (1) you have the correct equipment and (2) you’re confident in your micro-soldering skills, you can solder wires directly on these pins to attach the probes, but the space between each pin is only 0.65 millimeters (for our metrically impaired readers, this is 0.4 millionths of a mile).
Wystarczy jednak odnaleźć inne miejsca na płycie głównej połączone odpowiednimi dla ramek pinami:
Sygnał LCLK „przebiegał” w dolnej części płyty, pod modułem Wi-Fi, który był zakryty czarną taśmą. Po jej odklejeniu okazało się, że ukrywała pady służące do debugowania LPC. Nie jest to oczywiście regułą, ale akurat w tym laptopie do ataku wystarczy zdemontować dolną część. Przy użyciu zwykłego miernika ustalono pinouty dla wymienionych padów – oprócz tego odpowiedzialnego za sygnał LCLK i jednego wyglądającego na niepodłączony. Na tym etapie konieczny był zakup pełnego schematu płyty głównej. „Usługa” ta kosztowała 20 USD, badacze uznali ją za próbę scamu, niemniej jednak po 20 minutach od zakupu otrzymali wiadomość z adresu w domenie gmail.com z kilkoma załącznikami w formacie RAR. Zawierały one pliki programu BoardView, jak również oprogramowanie służące do ich odczytu. Tutaj cytat, który zdecydowanie nie prezentuje dobrych praktyk bezpieczeństwa:
Naturally, we opened the archives and ran the software on our production domain controller, and it was actually legit!
Wyglądający na niepodłączony pad okazał się tym poszukiwanym. Wystarczyło jeszcze utworzyć mostek pomiędzy modułem a padem służącym do debugowania. Kolejny krok to już podłączenie przewodów i podsłuchiwanie komunikacji:
Ekstrakcja istotnych danych wiązała się z użyciem zmodyfikowanej wersji LPC Sniffer:
After flashing the device, the read_serial.py python script can be used to retrieve the LPC frames. The following command is executed on the sniffing computer, then the target laptop was turned on in order to let the TPM check PCR registers, release the VMK and transmit it over the LPC bus.
Do wyodrębnienia Volume Master Key, służącego do odszyfrowania, z zebranych danych użyto polecenia:
cut -f 2 -d\’ log6 | grep ’24..00$’ | perl -pe ‘s/.{8}(..)..\n/$1/’ | grep -Po „2c0000000100000003200000(..){32}”
Kluczowe odczytywane wartości nie były jednakowe, co mogło być spowodowane nie do końca idealnym połączeniem. Wystarczyło przeprowadzić porównanie danych z różnych sekwencji uruchamiania, aby znaleźć wszystkie błędy i ostatecznie otrzymać w pełni poprawny zapis. Posiadając Volume Master Key, na tym etapie należało użyć dislockera:
$ hexdump -C vmk
00000000 5a f9 49 09 16 01 3a 0b c1 27 b3 30 1d 41 50 8c
00000010 4a f8 ab b8 58 3d e5 e4 c6 0b bb ab cf ad 8a 3a
$ sudo dislocker -v -V /dev/sdb3 –vmk vmk — /media/bl
$ sudo mount -o ro,loop /media/bl/dislocker-file /media/blm
$ ls /media/blm
’$RECYCLE.BIN’ ESD pagefile.sys ‘Program Files (x86)’ Users
’$SysReset’ hiberfil.sys PerfLogs Recovery Windows
Chocolatey install ProgramData swapfile.sys
’Documents and Settings’ Intel ‘Program Files’ ‘System Volume Information’
Oczom badaczy ukazała się zawartość głównego dysku systemowego Windows.
W celu uniknięcia tego typu ataku zaleca się ustawienie PIN-u, który należałoby wpisać przed uruchomieniem. Poza tym Windows 11 wymaga modułu TPM 2.0, używającego zaszyfrowanej komunikacji, więc być może warto rozważyć zakup nowego urządzenia. BitLocker ma tę „przewagę”, że jest w pełni zintegrowany z Windowsem, tzn. w przypadku aktualizacji teoretycznie nie powinny wystąpić żadne błędy związane z uszkodzeniem danych. Na przykład VeraCrypt nie może tego zagwarantować (dlatego polecam wykonywać regularne backupy i odszyfrowywać dysk przed aktualizacją), ale w żadnym stopniu nie wykorzystuje TPM.
Myślę, że każdy musi samodzielnie przeprowadzić analizę ryzyka, dokonując wyboru tego typu sprzętu. Osobiście BitLocker stosowałbym w sytuacji, kiedy dany użytkownik nie jest zaawansowany technicznie, a istotne jest zapewnienie bezpieczeństwa bez utraty wygody korzystania. Warto zadbać też o bezpieczeństwo fizyczne, starać się nie pozostawiać urządzeń bez opieki; można ponadto zainwestować w Kensington Lock.