stats

Ataki AIR-FI

RAM jako nadajnik radiowy

Grafika przedstawiająca naziemne anteny radarowe

Szyny danych w pamięciach RAM współczesnych komputerów osiągnęły takie częstotliwości pracy, że możliwe jest używanie ich w roli nadajników radiowych, a co za tym idzie wykorzystywanie do wykradania danych, nawet wtedy, gdy komputer jest odłączony od sieci!

Dr. Mordechai Guri, badacz zagadnień związanych z bezpieczeństwem z Uniwersytetu Ben Guriona w Izraelu, opublikował pracę, w której udowadnia, że możliwe jest jednokierunkowe przesyłanie danych z komputerów wyposażonych w układy pamięci o dostępie swobodnym (ang. random-access memory, skr. RAM), które mogą działać jak nadajniki radiowe.

Izolacja

Środowiska izolowane (ang. air-gapped environments) to sposób oddzielania jednego lub większej liczby komputerów od medium transmisyjnego (najczęściej sieci komputerowej), aby zwiększyć poziom bezpieczeństwa przechowywanych i przetwarzanych informacji. Środek ten bywa stosowany w przypadku danych o dużym poziomie tajności, aby upewnić się, że nawet w razie pojawienia się usterek w oprogramowaniu sieciowym potencjalny intruz nie będzie mógł uzyskać dostępu do takiego systemu, a jeżeli uzyskałby go inną drogą, nie uda mu się wyprowadzić danych.

Ataki bocznokanałowe

Okazuje się, że całkowite odcięcie komputera od sieci w izolowanym środowisku nie gwarantuje, że nie będzie można wysyłać z niego danych, nawet pozbawiono go adaptera Wi-Fi, modemu i konwencjonalnej karty Ethernet.

Ten wektor ataku nie jest nowy, ponieważ zjawisko ulotu elektromagnetycznego wykorzystywano już wcześniej, na przykład do odczytywania zawartości monitorów, których kable i podzespoły emitują fale radiowe odpowiadające przesyłanym obrazom.

W istocie mamy tu do czynienia z szerszą rodziną ataków, które nazywamy bocznokanałowymi (ang. side-channel), ponieważ wykorzystuje się w nich dodatkowe, nieprzewidziane w trakcie opracowywania zabezpieczeń, kanały transmisji danych.

Do współczesnych przykładów możemy zaliczyć np. wspomniany w podcaście random:press #18 atak, który polega na eksfiltracji danych z użyciem diod na klawiaturach, a także opublikowany w roku 2016 sposób wykradania kluczy szyfrujących przez analizę fal radiowych emitowanych przez podzespoły komputera.

Szkodliwe oprogramowanie umieszczone w systemie może wykorzystać przeróżne media, aby wyprowadzać dane nieprzewidzianym kanałem, m.in.:

  • światło wskaźników LED podłączonych urządzeń;
  • światło ekranu monitora;
  • sygnał wysyłany do monitora (a właściwie harmoniczne powstające w kablu);
  • dźwięki wydawane przez podłączone głośniki lub tzw. beeper;
  • zmiany pola magnetycznego lub dźwięki napędów dyskietek;
  • dołączone drukarki;
  • emisje elektromagnetyczne z USB;
  • zmienność drgań wentylatorów chłodzących podzespoły.

Opisany przez badacza sposób cechuje powszechność użytego urządzenia transmisyjnego. Każdy komputer jest przecież wyposażony w pamięć operacyjną. Istotna będzie również powszechność odbiornika, ale o tym później.

Wymogi

Do przeprowadzenia skutecznej ekfiltracji danych potrzebny jest komputer wyposażony w synchroniczną, dynamiczną pamięć o dostępie swobodnym (ang. synchronous dynamic random-access memory, skr. synchronous dynamic RAM, skr. SDRAM) o podwójnej szybkości transmisji (ang. double data rate, skr. DDR). Mimo zagmatwanych, pełnych nazw pamięci SDRAM DDR są całkiem popularne.

Istotne jest również to, że kod dokonujący transmisji nie tylko nie potrzebuje dostępu do żadnych dodatkowych urządzeń (np. adaptera Wi-Fi), ale też nie wymaga rozszerzonych uprawnień (można go uruchamiać z uprawnieniami nieuprzywilejowanego użytkownika systemu).

Dowiedziono również, że nie ma szczególnych wymogów odnośnie architektury sprzętowo-systemowej. Przykładowy program był skuteczny zarówno w systemie działającym na fizycznym sprzęcie, jak również w maszynie wirtualnej.

Nadajnik

Rolę nadajnika pełni pamięć DDR, a dokładniej jedna z jej szyn danych (ang. data busses). Są to podzespoły elektroniczne, które pozwalają centralnej jednostce obliczeniowej (procesorowi) komunikować się z układami pamięciowymi. Szyna adresowa (ang. address bus) służy do wymiany adresów i poleceń dostępu pochodzących z kontrolera, a szyna danych (ang. data bus) pozwala wymieniać właściwą zawartość.

Obie szyny podczas pracy emitują promieniowanie elektromagnetyczne, którego częstotliwość falowa zależy od częstotliwości zegara taktującego. Zazwyczaj jest to okolica 2 gigaherców (w przypadku kości DDR4 2,4 GHz). Warto w tym miejscu zauważyć, że w podobnym paśmie pracują urządzenia sieci Wi-Fi (kanały 5–8).

W jaki sposób uruchomiony program może wpływać na generowane częstotliwości? Może kontrolować zawartość przesyłanych do pamięci danych, a także częstość takich operacji. Czy to wystarczy?

Pamięciowe szyny danych odpowiedzialne są za dwa rodzaje emisji:

  • ciągła – związana z działaniem kontrolera,
  • wywoławcza – zależna od operacji zapisu i odczytu danych.

Jak łatwo się domyślić właśnie ten drugi typ emisji ma potencjał do przenoszenia sygnałów, na które może mieć wpływ uruchomiony program.

Warto zauważyć, że wykorzystywanie RAM-u do transmisji sygnałów nie jest nowym pomysłem. Już 20 lat temu można było uruchamiać specjalne programy wykorzystujące szyny danych do odtwarzania muzyki, której dało się słuchać na umieszczonym blisko komputera radiu. Z kolei w roku 2018 zaprezentowano demonstracyjny program „System Bus Radio” służący do eksfiltracji danych z użyciem pasma AM, który można uruchamiać nawet w przeglądarce WWW (jego kod źródłowy znajduje się w serwisie GitHub).

Nowością w tym przypadku jest zastosowane pasmo, które pozwala na cyfrową transmisję z użyciem powszechnie dostępnych odbiorników Wi-Fi.

Modulacja

Podobnie jak w popularnym sporcie wodnym, windsurfingu, na fali nośnej o pewnej częstotliwości możemy transportować odpowiednio zakodowane sygnały w tak zwanym procesie modulowania. W technice analogowej polega to na zmianach fali w zakresie jej amplitudy, częstotliwości lub fazy. W technice cyfrowej (i falach prostokątnych) poza amplitudą zmieniana może być gęstość impulsów, ich aranżacja w czasie bądź szerokość. Warto pamiętać, że zaburzenie fali nośnej wywoływane w celu wyrażenia sygnału zawsze będzie miało od niej o wiele mniejszą częstotliwość.

Aby modulować sygnał wykorzystywana jest technika kluczowania dwustanowego (ang. on-off keying, skr. OOK). Przypomina to trochę nadawanie kodem Morse’a, gdzie dokonuje się włączania i wyłączania fali nośnej, aby wyrażać stan wysoki i niski. Przy okazji: dawniej rodzaje modulacji nazywało się właśnie sposobem kluczowania.

Wykres zmienności sił sygnałów przy modulacji OOK

Modulowanie sygnałów cyfrowych z użyciem OOK

Żeby wywołać stan wysoki odpowiednia funkcja programu dokonuje wielokrotnego kopiowania danych o wielkości 1 MB między jednym a drugim obszarem pamięci. Kiedy transmitowany ma być stan niski, algorytm usypia na jakiś czas. W ten sposób zbudowana jest podstawowa procedura emisji wartości 01. Aby wzmocnić sygnał można posłużyć się operacjami wykonywanymi równolegle przez kilka rdzeni procesorowych (ang. CPU cores).

W praktyce wykorzystywane są tu znane z systemów standardu POSIX funkcje:
memcpy do kopiowania obszarów pamięciowych,
sleep do wstrzymywania działania.

Kolejnym krokiem jest użycie wspomnianego generatora do transmisji danych zorganizowanych w pakiety (ang. packets). Każdy z takich pakietów będzie złożony z preambuły (wartość 0xAA), ładunku (danych) i sumy kontrolnej (wyliczonej algorytmem CRC-8, służącej do wykrywania błędów).

Dostrajanie

Problematyczne i wymagające większych uprawnień może być dostosowanie taktowania zegara, od którego zależy bazowa częstotliwość pamięciowej szyny. Jest to operacja wymagana, gdy zastana częstotliwość znacząco odbiega od pasma 2,4 GHz.

Oczywiście możliwe byłoby transmitowanie na każdej innej częstotliwości, jednak w takich przypadkach tracimy zdolność wykorzystywania popularnych odbiorników Wi-Fi do przekazywania danych dalej.

Odbiór

Emitowane w opisany wyżej sposób fale radiowe o częstotliwości fali nośnej 2,4 Ghz pokrywają się z pasmem, w którym działają urządzenia standardu Wi-Fi. W znakomitej większości urządzeń konsumenckich za komunikację w tym zakresie odpowiada specjalny układ scalony zwany procesorem radiowym pasma podstawowego (ang. baseband radio processor, skr. BBP, skr. BP). Jego zadaniem jest obsługa transmisji, a także warstwy fizycznej oraz łącza danych (w modelu ISO/OSI). Wyższe warstwy, włączając w to komunikację sieciową w obrębie Internetu, obsługiwane są już programowo przez systemy operacyjne i odpowiednie aplikacje.

Ponieważ transmiter DDR RAM jest jednokierunkowym sposobem nadawania danych, nie będziemy mieli do czynienia z typową komunikacją sieci bezprzewodowej, lecz z własnym, uproszczonym protokołem. W związku z tym, aby odbiornikiem mógł stać się np. smartfon czy laptop, należy uzyskać niskopoziomowy dostęp do sterowników warstwy fizycznej. Niektóre układy pozwolą na to, a w przypadku niektórych będzie wymagane wprowadzenie własnego oprogramowania układowego (ang. firmware). Gdy uda się to zrobić, potrzebny będzie dodatkowo sterownik działający w przestrzeni jądra systemowego, aby przekazywać zebrane dane do aplikacji dekodującej.

Zanim dojdzie do odbioru komunikatów oprogramowanie odbiorcze dokonuje skanowania wszystkich kanałów sieci bezprzewodowej, aby określić, w obrębie którego przebiega transmisja.

Zadaniem zmodyfikowanego firmware’u jest odczytywanie próbek i przetwarzanie ich z użyciem szybkiej transformaty Fouriera (ang. fast Fourier transform, skr. FFT), aby uzyskać wgląd w poziomy sygnałów kluczowanych w czasie dla danego kanału. Najpierw tworzony jest odpowiedni bufor, do którego następnie trafiają próbki o stałej szerokości zgromadzone w czasie. Dla każdej takiej sekwencji próbek algorytm szacuje widmową gęstość mocy metodą Welcha, aby w wynikowych danych wyszukiwać początki transmisji (wspomniane wartości 0xAA, binarnie 10101010). W tym momencie dochodzi również do oszacowania poziomów mocy dla sygnałów kodujących bity 01, a następnie do demodulacji i dekodowania sygnałów z pozostałej części bufora.

Tak zebrane dane przekazywane są z użyciem odpowiedniego drivera do oprogramowania działającego w przestrzeni użytkownika. Może ono składać dłuższe komunikaty w całość, a następnie transmitować je dalej, np. z użyciem sieci telefonii komórkowej lub Wi-Fi.

Model ataku

Żeby posłużyć się wspomnianym atakiem do wyprowadzania chronionych danych potencjalny napastnik musiałby uzyskać dostęp do izolowanego systemu i danych, na których mu zależy. W tym celu może użyć trojana bądź innego „szkodnika” umieszczonego np. na przenośnym dysku, który ktoś podłączy do komputera.

Kolejnym krokiem jest przekazanie danych, które można zrealizować z użyciem zdyskredytowanego urządzenia mobilnego, np. smartfona. Ważne: musi być to smartfon osoby, która znajduje się w bliskiej odległości od atakowanego systemu. Na urządzeniu tym powinien działać odbiornik transmisji i oprogramowanie, które przekaże intruzowi zebrane dane.

Ochrona

Na poziomie systemu operacyjnego metodą ochrony mogłoby być włączenie mechanizmów audytowych systemu operacyjnego w celu cyklicznej detekcji nadmiernej utylizacji przestrzeni pamięciowych, jednak taka forma zapobiegania atakom wiązałaby się ze zwiększonym zużyciem mocy obliczeniowej procesora. Podobnie też zadziałałyby sposoby aktywne, polegające na losowym wpisywaniu i pobieraniu danych, aby wprowadzić zakłócenia do pobocznego kanału.

Najbardziej efektywnymi sposobami zapobiegania atakom opisywanego rodzaju będą więc:

  • ochrona antywirusowa (zarówno proceduralna, jak i z użyciem odpowiedniego oprogramowania),

  • wydzielone pomieszczenie z ekranem elektromagnetycznym lub specjalna obudowa komputera (będąca tzw. klatką Faradaya).

Pierwszy sposób pozwoli uchronić system operacyjny przed wprowadzeniem nieproszonego gościa w postaci malware’u, a drugi będzie przeciwdziałał zagrożeniom z użyciem ochrony TEMPEST (z ang. Telecommunications Electronics Materials Protected from Emanating Spurious Transmissions).

Zobacz także

Źródło: arxiv.org
Jesteś w sekcji .
Tematyka:

Taksonomie: