Niedawno zostałem poproszony o pomoc w diagnozie dziwnie zachowującego się komputera z Windows 7 64bit. Oprócz wyświetlania reklam i blokowania pracy narzędzi antywirusowych komputer zdawał się funkcjonować poprawnie. Uruchomienie narzędzi analizy ruchu na interfejsie sieciowym pokazało, że zainicjowano 3 połączenia wychodzące szyfrowane za pomocą TLS/SSL – a nie przypominałem sobie, by Windows 7 samoczynnie inicjował akurat takie połączenia. Nie dało się wyśledzić procesów, które te połączenia inicjowały – a to oznacza tylko jedno: system był zarażony jakimś złośliwym oprogramowaniem, prawdopodobnie rootkitem. Uruchomiłem komputer z pendrive’a z Ubuntu Live i przyjrzałem się nieco temu, co było na dysku. Po krótkiej analizie okazało się, że system był zarażony bootkitem. Złośliwe oprogramowanie (prawdopodobnie jakiś klon popularnego TDSS) startował i uruchamiał Windows 7 w kontrolowanym środowisku. Przy okazji sprawdziłem, że mechanizm kontroli podpisania sterowników Windows 7 64 bit został wyłączony i dało się załadować każdy sterownik do jądra systemu.

Reinstalacja jest jedynym ratunkiem
Jestem przekonany, że duża część prywatnych komputerów z Windows XP/Vista/7 jest zainfekowana podobnym złośliwym oprogramowaniem, które jest solą w oku specjalistów do spraw bezpieczeństwa (i Microsoftu też). Niestety bootkity są niemal niewidoczne z poziomu systemu operacyjnego, a jedynym pewnym sposobem usunięcia jest nadpisanie dysku za pomocą niskopoziomowego narzędzia, takiego jak dd, a następnie instalacji systemu z czystego obrazu. Mam wątpliwości, czy nawet opcja odświeżenia systemu Windows 8 umożliwi pozbycie się takiego bootkita (czy ktoś, kto dokładnie analizował działanie Win8 refresh, może mi to potwierdzić?). Instrukcja usuwania bootkita podana na stronach Kaspersky’ego skutkuje odświeżeniem rekordów startowych, ale nie jestem przekonany, czy reszta zainfekowanego systemu także zostanie wyczyszczona. Bootkit jest przecież tylko jednym z elementów infekcji. Złośliwe oprogramowanie tak mocno ingeruje w Windows, że jedynym sposobem na wyczyszczenie komputera jest zupełna reinstalacja z nadpisaniem głównego sektora startowego i tablicy partycji włącznie.

UEFI secure boot pomoże
Wprowadzenie secure boot bardzo poważnie utrudni instalację śmieci takich jak TDSS czy Sinowal, które kontrolują proces startu Windows i dokonują zmian w samym jądrze tego systemu. Biorąc pod uwagę to, jak często zdarzają się infekcje firmowych komputerów bootkitami, uważam, że opcja UEFI secure boot jest niezbędna, by zmniejszyć ryzyko takich infekcji. Gdyby loader systemu operacyjnego został zainfekowany, sprzęt odmówi uruchomienia i powiadomi użytkownika o niezgodności kodu.

Czy secure boot jest problemem dla środowiska open source?
Nie sądzę. Są już dwa gotowe rozwiązania – podpisanie narzędzi startowych oraz jądra systemu kluczem Microsoftu (tak robi to RedHat w projekcie Fedora) oraz opracowanie prostego podpisanego loadera do uruchomienia systemu w prawie normalny sposób (tę drogę wybiera Canonical). Obecnie Ubuntu 12.10 startuje bez problemu na komputerach z włączonym secure boot i ta opcja jest zalecana przez Canonical, będzie także wprowadzona do starszego wydania 12.04 LTS (12.04.2). Canonical utrzymuje także swoją bazę kluczy i wymusza secure boot na tych platformach, które tę możliwość obsługują – moim zdaniem bardzo dobry ruch, minimalizuje ryzyko infekcji złośliwym oprogramowaniem.
Secure boot może ograniczać systemy takie jak na przykład FreeBSD czy OpenBSD, ale w przypadku pecetów na platformie x86 będzie można tę opcję wyłączyć.
Tym, którzy uważają, że secure boot uchroni konsole czy tablety przed modyfikacją, należy przypomnieć historię iPhone’ów, konsol Playstation oraz Xbox 360. Ze złamaniem i ujawnieniem klucza szyfrującego dla konsoli Playstation 3 włącznie.