r   e   k   l   a   m   a
r   e   k   l   a   m   a

Linux zainstalowany na twardym dysku – firmware pomieści też malware

Strona główna AktualnościBEZPIECZEŃSTWO

Linuksa można zainstalować dziś niemal wszędzie, widzieliśmy już ten system działający na PlayStation 4, Wielkim Zderzaczu Hadronów i dojarkach do krów. Czy jednak można zainstalować Linuksa na twardym dysku? To podstępne pytanie znalazło ciekawą odpowiedź dzięki pracy Jeroena Domburga, autora bloga Spritesmods.com. Tak, to możliwe. Linux może działać też na twardym dysku, przy okazji ujawniając nowe, poważne cyberzagrożenie, o którym wcześniej nikt chyba nie myślał. Nie jest to nowa praca, ale na tyle nas zaciekawiła, że postanowiliśmy ją Wam przybliżyć.

Zastanówmy się, czym jest twardy dysk. Wirujące talerze, nad nimi głowica przeprowadzająca operacje zapisu i odczytu, od strony logicznej to wszystko podzielone na sektory o rosnącej numeracji, tworzące logiczne bloki adresowe. Nad tym wszystkim abstrakcja systemu plików. Sterowanie wydawałoby się jest proste. W środku jakiś mikrokontroler, który obsługuje ruch i zachowanie głowicy, rozpędzanie dysków, komunikację z komputerem,

Tak może i było kiedyś. Dzisiaj twarde dyski robią jednak znacznie więcej, oferują zarządzanie uszkodzonymi blokami, raportowanie SMART, niekiedy obsługują szyfrowanie, a i sam wykorzystywany dziś interfejs SATA taki prosty nie jest. Jeroen Domburg postanowił przyjrzeć się temu aspektowi elektroniki sterującej twardego dysku bliżej. Czy można ją zhakować?

r   e   k   l   a   m   a

Jeszcze jak. Na płytce z czipami znajdziemy naprawdę niezłą moc obliczeniową. W analizowanym przez badacza dysku Western Digital znalazła się kość pamięci DRAM (czego można się spodziewać – to przecież cache twardego dysku, niekiedy całe 64 MB), mikrokontroler zajmujący się sterowaniem motoru dysku, kość pamięci flash NAND z firmware, oraz co najciekawsze – sam układ kontrolera. Co w nim jest?

Dłubanie w krzemie

Od producentów tego się nie dowiecie. Robione przez Marvella, ST i kilka innych firm układy praktycznie pozbawione są jakiejkolwiek dokumentacji, nikt się raczej nie powinien nimi interesować, prawda? A jednak… ktoś się zainteresował i odkrył rozkład pinów złącza JTAG, dającego bezpośredni dostęp do kontrolera. To był obiecujący początek – w ten sposób można modyfikować pamięć, ustawiać breakpointy, resetować i restartować. Wystarczy płytka interfejsu do JTAG-a, a potem pozostaje tylko uruchomić na komputerze OpenOCD – otwarty debugger, który radzi sobie z mnóstwem różnych czipów.

Podłączenie tego do kontrolera dysku twardego ujawniło jego ciekawą zawartość. W środku są aż trzy rdzenie ARM, w tym dwa mocne (Feroceons/arm9) i jeden taki sobie mikrokontrolerowy, Cortex-A9. Pierwszy mocny rdzeń obsługuje fizyczny odczyt i zapis z talerzy dysku, drugi zaś interfejs SATA, cache oraz translację adresów LBA na CHS.

Potem już sporo dłubaniny cierpliwego hobbysty, który odtworzył mapę pamięci kontrolera i zdisassemblował firmware, przy okazji odkrywając coś zaskakującego. O ile w normalnych operacjach rdzenie ARM nie wpływają oczywiście na dane sczytywane i zapisywane na dysk, to jednak można przechwycić operacje dyskowe, zanim trafią do interfejsu SATA – i zrobić z nimi wszystko. Pierwszy udany hack pokazał, że to całkowicie możliwe, po nadpisaniu własnego kodu sterującego drugim z rdzeni Feroceons, na początku każdego odczytywanego z dysku sektora pojawiała się liczba podana do bufora, liczba której fizycznie na dysku nie było!

Kontrola i złośliwość

Co najważniejsze, te wszystkie zmiany można utrwalić. Dostanie się do kości pamięci flash z firmware było łatwiejsze, niż do kontrolera. Kod co prawda był skompresowany nieznanym algorytmem, ale badacz dopisał po prostu swoje polecenia (tworząc poręczne narzędzie do zapisu i odczytu), modyfikując adres, od którego firmware było wywoływane. Coś takiego zresztą oferują często producenci, tj. narzędzia do aktualizacji firmware urządzenia, są też ich opensource’owe odpowiedniki.

Na tym etapie nie było już trudno zrobić najbardziej złośliwą rzecz na świecie. Chwila fizycznego dostępu do komputera pozwala sflashować firmware dysku twardego. Nawet jeśli administrator odkryje, że ktoś uzyskał nieupoważniony dostęp i w imię bezpieczeństwa wyzeruje dysk, instalując na nim system na nowo, nic mu to nie pomoże. Zmodyfikowane firmware czeka na sygnał, a gdy sygnał (np. określony ciąg danych zaszyty w pliku) zostanie zapisany na dysku, to nagle malware odczyta sobie zawartość pliku z hasłami (/etc/shadow) i na bieżąco zmodyfikuje jego zawartość, tak by pojawiły się tam wartości wcześniej przygotowane przez napastnika. Potem tylko zdalny login i root już jest – w końcu kontroler dopilnował, by hasło zostało porównane ze zmodyfikowaną wartością.

Linux ante portas

Proste malware jest proste, ale potencjał kontrolera twardego dysku jest znacznie większy. Domburg zdołał zainstalować na nim całego Linuksa. Działa to w minimalnym stopniu, obsługuje jedynie port szeregowy, nie działa nic z przestrzeni użytkownika (kontroler nie ma jednostki zarządzania pamięcią, więc trzeba specjalnie mu przygotować taką przestrzeń) – ale sztuka jest: kernel i system inicjalizacji zostały podzielone na paczki o rozmiarach jednego sektora – odczytanie pliku wypełnia cache dysku, podanie magicznego ciągu znaków zmusza zmodyfikowane firmware do przeszukania bufora, złączenia obrazu kernela i uruchomienia go.

To oczywiście tylko ciekawostka, ale badacz wskazał zarazem inne, bardziej praktyczne, obronne zastosowanie. Odpowiednio zmodyfikowane firmware twardego dysku mogłoby rozpoznawać sposób dostępu do jego zawartości – czy jest raczej losowy, tak jak w wypadku normalnego działania systemu operacyjnego, czy też sekwencyjny, jak robiłoby to narzędzie do klonowania dysków. Taki dysk mógłby wszystkim narzędziom wykorzystywanym w informatyce śledczej zwracać same śmieci, a przy tym normalnie by pracował.

Zainteresowani Czytelnicy zapytają się pewnie teraz, a co z dyskami półprzewodnikowymi (SSD)? No cóż, tam dopiero jest możliwa impreza: wiele takich pamięci masowych ma dziś czterordzeniowe kontrolery ARM, taktowane zegarami 800 MHz i więcej, z buforami 256 MB i więcej. Faktem jest, że ich producenci szyfrują dziś swoje firmware… ale wydaje się, że w rękach doświadczonych, dysponujących dużymi zasobami napastników nie jest to problem.

Historia ta zarazem pokazuje, jak bardzo konieczne jest dla elementarnego bezpieczeństwa całodyskowe szyfrowanie, i to nie za pomocą funkcji kryptograficznych wbudowanych w kontroler, ale na poziomie systemu operacyjnego, za pomocą narzędzi takich jak np. VeraCrypt. Tylko w ten sposób możemy zabezpieczyć się przed malware tkwiącym w firmware.

Artykuł pana Domburga znajdziecie na blogu Spritesmods.com, gdzie opisano też hakowanie wielu innych ciekawych urządzeń.

© dobreprogramy
r   e   k   l   a   m   a
r   e   k   l   a   m   a

Komentarze

r   e   k   l   a   m   a
r   e   k   l   a   m   a
Czy wiesz, że używamy cookies (ciasteczek)? Dowiedz się więcej o celu ich używania i zmianach ustawień.
Korzystając ze strony i asystenta pobierania wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.