Mnóstwo miejsc:
Nowoczesny sprzęt ma szeroką gamę trwałych magazynów danych, zwykle używanych do oprogramowania układowego. Wysłanie złożonego urządzenia, takiego jak GPU lub karta sieciowa, i umieszczenie oprogramowania sprzętowego na pamięci ROM z maską, gdzie nie można go zaktualizować, jest o wiele za drogie, a następnie wystąpi błąd powodujący masowe odwołania. W związku z tym potrzebujesz dwóch rzeczy: zapisywalnej lokalizacji dla tego oprogramowania układowego i sposobu na umieszczenie nowego oprogramowania układowego. Oznacza to, że oprogramowanie systemu operacyjnego musi mieć możliwość zapisu w miejscu, w którym oprogramowanie układowe jest przechowywane w sprzęcie (zwykle w pamięci EEPROM).
Dobrym tego przykładem jest stan nowoczesnych narzędzi do aktualizacji BIOS / UEFI. Możesz pobrać obraz UEFI i plik wykonywalny działający w systemie operacyjnym (np. Windows), kliknąć przycisk i zaktualizować UEFI. Prosty! Jeśli przeprowadzisz inżynierię wsteczną, jak to działa (co zrobiłem kilka razy), jest to głównie przypadek ładowania sterownika trybu jądra, który pobiera dane strony z danego obrazu UEFI i rozmawia bezpośrednio z układem UEFI za pomocą out
, wysyłając odpowiednie polecenia odblokowania lampy błyskowej i rozpoczęcia procesu aktualizacji.
Oczywiście istnieją pewne zabezpieczenia. Większość obrazów BIOS / UEFI nie ładuje się, chyba że są podpisane przez dostawcę. Oczywiście wystarczająco zaawansowany napastnik może po prostu ukraść klucz do podpisywania od dostawcy, ale to przechodzi w teorie spiskowe i boskich aktorów zagrożenia, z którymi walka w prawie każdym scenariuszu nie jest realistyczna. Mechanizmy zarządzania, takie jak IME, mają mieć pewne zabezpieczenia, które uniemożliwiają dostęp do ich sekcji pamięci nawet przez kod ring0, ale badania wykazały, że istnieje wiele błędów i wiele słabych punktów.
Więc wszystko jest spieprzony, prawda? Cóż, tak i nie. Umieszczenie rootkitów w sprzęcie jest możliwe , ale jest to również niezwykle trudne. Każdy komputer ma tak duże różnice w wersjach sprzętu i oprogramowania układowego, że nie można zbudować ogólnego rootkita dla większości rzeczy. Nie możesz po prostu pobrać standardowego BIOS-u Asusa i sflashować go na dowolną płytę; zabijesz to. Konieczne byłoby utworzenie rootkita dla każdego oddzielnego typu tablicy, czasami aż do odpowiedniego zakresu wersji. Jest to również obszar bezpieczeństwa, który obejmuje ogromną ilość wiedzy międzydomenowej, sięgającej daleko w głąb sprzętu i niskopoziomowych aspektów operacyjnych nowoczesnych platform komputerowych, wraz z silnym bezpieczeństwem i wiedzą kryptograficzną, więc niewiele osób jest w stanie.
Czy prawdopodobnie będziesz celem? Nie.
Czy istnieje prawdopodobieństwo, że zostaniesz zainfekowany rootkitem rezydentnym BIOS / UEFI / SMM / GPU / NIC? Nie.
Złożoność i rozbieżności z tym związane są po prostu zbyt duże, aby przeciętny użytkownik mógł kiedykolwiek realistycznie się tym martwić. Nawet z ekonomicznego punktu widzenia tworzenie tych rzeczy wymaga ogromnej ilości umiejętności, wysiłku i pieniędzy, więc spalanie ich na szkodliwym oprogramowaniu konsumenckim jest idiotyczne. Tego rodzaju zagrożenia są tak ukierunkowane, że tak naprawdę należą tylko do modelu zagrożeń państwa narodowego.