Wyobraźcie sobie tylną furtkę, która może być instalowania zdalnie, aktywowana na żądanie, daje dostęp do konta root, jest nie do wykrycia podczas analizy systemu plików i przetrwa pełną reinstalację systemu operacyjnego. Science fiction? Nie.
Bardzo ciekawą koncepcję tylnej furtki, ukrytej w pamięci flash dysku twardego serwera, przedstawił w swoim artykule Jeroen Domburg, twórca serwisu SpritesMods.com. Najważniejsze jednak jest to, że nie poprzestał na koncepcji, tylko udowodnił, że można ją także wdrożyć.
Jeroen poważnie potraktował zadanie stworzenia idealnej tylnej furtki. Zaczął od zgromadzenia sterty starych dysków twardych. Rozebrał je, przeanalizował układy scalone obecne w obudowie i skoncentrował się na kontrolerze dysku. Co prawda producenci kontrolerów nie udostępniają ich dokumentacji, ale od czego jest Google i potęga internetu. Na jednym z forów znalazł informację, że kontroler posiada działający port szeregowy, port JTAG (interfejs diagnostyczny) oraz poznał ich konfigurację. Podłączył się do obu portów i znalazł w kontrolerze swojego dysku trzy rdzenie ARM – dwa Feroceony i jednego Cortex-M3.
Kolejnym krokiem analizy było ustalenie, w jaki sposób można zmodyfikować w locie treść odczytywaną z dysku. Co prawda CPU nie bierze udziału w odczycie danych z dysku, jednak testy wykazały, że posiada dostęp do pamięci cache, przez którą przekazywane są dane do interfejsu SATA. Aby nie musieć przeszukiwać całych 64MB RAMu za każdym razem, kiedy chce coś zmodyfikować, Jeroen przeanalizował fragment oprogramowania odpowiedzialny za zarządzanie pamięcią cache. Po odkryciu tablicy indeksującej zawartość pamięci napisał krótki fragment kodu, podmieniający wybrany ciąg po jego zapisaniu co cache, a przed przesłaniem do interfejsu SATA.
Kolejnym etapem było już „tylko” napisanie narzędzia służącego do modyfikacji zawartości pamięci flash oraz wykorzystanie fragmentów znanych wcześniej narzędzi, by umożliwić zapisywanie nowego oprogramowania bezpośrednio w pamięci flash dysku podłączonego do danego komputera. Jak wyglądał efekt końcowy jego eksperymentów?
Jeroen wprowadził następujące modyfikacje do pamięci flash dysku twardego. Po pierwsze, dysk analizuje treść, która jest na nim zapisywana, w poszukiwaniu tajnego ciągu aktywującego ukrytą funkcjonalność. Funkcja ta umożliwia np. zdalne aktywowanie tylnej furtki poprzez wywołanie na serwerze adresu www, zawierającego tajne hasło (które zostanie zapisane w logach httpd). Po aktywacji furtki, dysk czeka na próbę odczytu pliku /etc/shadow i podmienia w locie hasz hasła konta root, umożliwiając atakującemu zalogowanie się własnym hasłem (nie zmieniając jednocześnie na stałe oryginalnego hasła). Po zalogowaniu wystarczy, że atakujący wyłączy furtkę a stare hasło roota znowu będzie działało prawidłowo. Jedyną trudnością (oprócz oczywiście stworzenia samej tylnej furtki) jest zmuszenie dysku do ponownego odczytania pliku /etc/shadow, który może znajdować się w pamięci cache – wystarczy w tym celu albo poczekać, albo zmusić dysk do intensywniejszej pracy przez kilka sekund.
Jeroenowi udało się także inaczej wykorzystać architekturę ARM – uruchomił na niej odpowiednio skompilowanego Linuxa. Niestety z braku interfejsów użytkownika (oprócz portu szeregowego) nie dało się z niego korzystać, ale może teraz twierdzić, że odpalił Linuxa na samym dysku. Opublikował również kod źródłowy opisanej powyżej tylnej furtki – wyciął z niej jedynie ze względów etycznych fragment podmieniający zawartość /etc/shadow.
Trzeba przyznać, że zarówno koncepcja jak i jej implementacja wyglądają niepokojąco – ile jest na świecie firm i instytucji, które nie tylko potrafią przeanalizować wbudowane oprogramowanie dysku twardego, ale także wpadną na pomysł, by to zrobić, albo przynajmniej regularnie sprawdzać sumy kontrolne?
Komentarze
Ja sprawdzam.
Powiesz nam coś więcej? Jakimi narzędziami, jak często, co jeszcze oprócz HDD?
Pewnie numery seryjne ;)
Jeszcze trochę i komputery (zwykłe laptopy albo inne workstacje) będą potrzebowały certyfikatu bezpieczeństwa. Dobry artykuł. Czytałem go wcześniej i nie za wiele zrozumiałem (po angielsku), a teraz raczej wszystko jasne. Dobra robota !
O masz, pierwsze słyszę. Houston mamy problem. Jestem ciekaw ile administratorów sprawdza sumy kontrolne? 0,01%?
Co z dyskami SSD ? :)
Pewnie nie ma różnicy, tak samo posiadają kontroler, który da się zaprogramować.
Autor artykułu zapomniał tylko napisać że pamięć flash dysku została zmieniona przez interfejs JTAG, co wymaga dostępu fizycznego do dysku. Po tej zmianie dopiero dysk zaczął obsługiwać backdoor.
Niemniej czytało się przyjemnie. Miło poczytać o ludziach którzy myślą nietuzinkowo, miło poczytać artykuł który zachęca żeby samemu zrobić coś ciekawego.
Dziękuję.
Nie zapomniał – w pierwszym etapie Jeroen modyfikował pamięć korzystając z JTAG, a potem napisał narzędzie, które umożliwia zapisywanie pamięci flash z poziomu komputera, bezpośrednio korzystając z interfejsu dysku.
No tak, rzeczywiście. Jakoś tak nie rzuciło mi się w oczy.
to mam pytanie,skro popsuł mi się dysk (walneła elektronika) ta płytka gdzie są te kabelki podpięte na głównym zdjęciu to da się to jakoś obejść tanim kosztem i odzyskać dane?
Jeśli padł kontroler, to wystarczy przełożyć dobry z innego, takiego samego dysku
To może z 10 lat temu tak było można.
Nie tak szybko kolego. Gostek mial uszkodzona elektronike w dysku WD, przelozyl z identycznego modelu i klapa. Okazalo sie ze dwa identyczne modele ale w obydwu inne uklady kontrolera. Poszukaj na forum elektrody…
Ciekawi mnie jak się zachowa taka furtka w macierzy RAID 1 w której zhackowany byłby tylko jeden z dysków. Pozostałe odmiany RAID są raczej odporne na taki atak ze względu na sposób zapisu danych.
Tak czy inaczej, zagrożenie realnie istnieje. Nie spodziewałbym się jednak ataku domorosłego hackera amatora. Już prędzej spodziewałbym się, że producenci dysków sami umieszczają lub umieszczaliby takie furtki w produkowanych dyskach.
Nie wiem, czy w świetle obecnych dowodów, klienci są w stanie zmusić producentów dysków do udostępnienia źródeł firmware dysków, ale nawet jeśli będzie inaczej, to można się spodziewać, że na taką furtkę programiści linuxa znajdą jakąś łatę.
Ja już mam w głowie jedno roziązanie, ale trochę dużo byłoby do pisania, a w końcu to tylko teoretyczne rozważania, bo dla przeciętnego zjadacza chleba całe to zagrożenie to abstrakcja.
Wystarczy szyfrować dysk. Jesli kontroler nie zna hasła to co prawda może podmienić dane ale przy próbie rozszyfrowania dostaniemy błąd
Myślę, że producenci sprzętu komputerowego wpadli na ten pomysł wcześniej…