W dzisiejszym artykule pokażemy, jak na przykładzie załatanego wcześniej przez Microsoft błędu w sterowniku Wi-Fi systemu Windows można było przeprowadzić analizę kodu i zbudować eksploit nadający się do wykorzystania w atakach na komputery.
Przy okazji tego artykułu polecamy nasz wcześniejszy, o atakowaniu Wi-Fi.
Na początek trochę historii… Wi-Fi Od samego początku ery komputerów ludzie pragnęli łączyć się z innymi komputerami. Stwarzało to nowe możliwości i otwierało na świat. Istnieją także opinie, iż „boom” na komputery rozpoczął się właśnie od możliwości ich łączenia się i korzyści, jakie z tego tytułu można było uzyskać. Pisaliśmy o tym przy okazji omawiania podatności w VPN.
Już w pierwszej komercyjnej wersji Windows, czyli 1.01 z 1985 r., Microsoft dodał na dyskietce opisanej jako „APPS” aplikację „Terminal”, służącą do łączenia się po porcie szeregowym RS232 (COM1 i COM2) z innymi komputerami. Ale nie była to jeszcze funkcjonalność bezprzewodowego łączenia się. Ta pojawiła się dopiero 12 lat później.
W 1997 r. Instytut Inżynierów, Elektryków i Elektroników opracował pierwszy standard Wi-Fi, od którego pochodzi nazwa IEEE 802.11. Standard ten umożliwiał przesyłanie danych z prędkością 1 Mb/s i otworzył szersze możliwości wykorzystania komputerów.
Może być to dla Was zaskoczeniem, ale natywne wsparcie w Windows dla Wi-Fi (sieci bezprzewodowych) po raz pierwszy pojawiło się dopiero w systemie Windows XP, który został wydany w 2001 roku, zaś pierwszym laptopem z obsługą Wi-Fi był zaprezentowany w 1999 roku Apple iBook. Na poniższym filmie można zobaczyć prezentację, podczas której Steve Jobs niczym David Copperfield kręci hula-hoopem wokół laptopa w celu udowodnienia całej koncepcji zdalnego łączenia się jego nowego cacka :).
W świecie Microsoft Windows XP wprowadził natywną obsługę sieci bezprzewodowych, co oznaczało, iż użytkownicy mogli łatwo konfigurować i łączyć się z sieciami Wi-Fi bez potrzeby instalowania dodatkowych sterowników lub aplikacji od zewnętrznych producentów. Interfejs zarządzania sieciami bezprzewodowymi w Windows XP umożliwiał skanowanie dostępnych sieci, zapisywanie preferowanych sieci oraz automatyczne łączenie z nimi. Dzięki temu korzystanie z Wi-Fi stało się dla przeciętnego użytkownika znacznie prostsze i bardziej dostępne.
W późniejszych latach powstawały kolejne wersje/standardy Wi-Fi, wprowadzające liczne udoskonalenia, w tym coraz większą szybkość przesyłu danych. Ostatnia wersja – Wi-Fi 7, która ma zadebiutować w tym roku, budzi duże zainteresowanie w branży. Nowy standard ma oferować prędkości od 30 do 40 Gb/s, wspierając przyszłe technologie, takie jak metawersum, VR, AR czy robotykę dzięki możliwości bezprzewodowego strumieniowania nieskompresowanego wideo 4K. Wi-Fi 7 ma także zapewnić wysoką wydajność dla gier w chmurze i aplikacji społecznościowych. Na razie jest w fazie projektu, ale jego certyfikacja przez IEEE planowana jest na obecny rok.
Jak to w świecie bezpieczeństwa, najlepsze ataki to te, które mogą odbywać się zdalnie i bez jakiejkolwiek ingerencji lub zaangażowania użytkownika. Bez wątpienia komunikacja Wi-Fi to jedno z medium przeprowadzania ataku, stąd podatności w niej są tak bardzo pożądane przez środowisko cyberatakujących. Tak też jest w przypadku opisywanej dzisiaj luki.
Luka CVE-2024-30078 w Wi-Fi
Jest to chyba jedna z najbardziej interesujących podatności w ostatnim czasie, ponieważ do jej wykorzystania wystarczy jedynie laptop/urządzenie (komputer atakującego), znajdujące się w zasięgu radiowym innych komputerów (ofiar) z Windows, posiadających moduł Wi-Fi. A jak wiadomo, skuteczność jej wykorzystania może być bardzo duża (jeśli nie stuprocentowa), ponieważ trudno dzisiaj znaleźć komputer nieposiadający Wi-Fi.
Mowa tutaj o błędzie CVE-2024-30078 w sterowniku Wi-Fi systemu Windows, który umożliwia atakującemu przejęcie kontroli nad systemem poprzez zdalne wykonanie kodu (RCE).
Podczas czerwcowego Patch Tuesday Microsoft wydał poprawkę dla luki CVE-2024-30078, klasyfikowanej jako ważna ze względu na możliwość zdalnego wykonania kodu (RCE). Po przeczytaniu biuletynu Microsoftu badacze Crowdfense zainteresowali się tą luką. Wydała się im ona szczególnie intrygująca, ponieważ pozwalała nieautoryzowanemu atakującemu wysłać złośliwy pakiet do systemu znajdującego się w pobliżu, co może prowadzić do zdalnego wykonania kodu. Choć wymaga to fizycznej bliskości celu, możliwość ataku over-the-air okazała się zbyt interesująca, by ją zignorować.
W czym tkwi problem? Funkcja Dot11Translate80211ToEthernetNdisPacket() odpowiedzialna za konwersję pakietów 802.11 zawiera błąd zarządzania pamięcią, prowadzący do przepełnienia bufora. Crowdfense przeprowadziło szczegółową analizę, używając technik fuzzingowych i debugowania sterowników, aby zidentyfikować i zrozumieć wewnętrzne działanie tej luki.
Funkcja Dot11Translate80211ToEthernetNdisPacket() odczytuje nagłówek pakietu LLC, aby zrozumieć, co znajduje się na kolejnej warstwie pakietu. Zanim jednak przeczyta nagłówek LLC, sprawdza, czy bufor pakietu zawiera wystarczającą ilość danych. Rozmiar nagłówka LLC wynosi 8 bajtów.
Podczas analizy wykazano, iż atakujący może skonstruować specjalny pakiet 802.11, aby przekroczyć limity pamięci, co skutkuje uszkodzeniem sterownika „nwifi.sys”.
Podczas badania luki użyto technik dynamicznej i statycznej analizy kodu. Crowdfense wykorzystało narzędzia do analizy binarnej oraz specjalistyczne oprogramowanie do debugowania, aby śledzić ścieżki wykonania funkcji w sterowniku. W trakcie analizy zidentyfikowano, iż brak odpowiednich zabezpieczeń na poziomie sterownika prowadzi do możliwości ataku przez przepełnienie bufora. Ostatecznie badanie wykazało, iż możliwe jest stworzenie ataku zdalnego, jednak pełne jego przeprowadzenie wymaga znajomości środowiska docelowego i umiejętności technicznych.
Proof-of-Concept (PoC)
W swoim proof-of-concept (PoC) Crowdfense zaprezentowało dokładny sposób, w jaki złośliwy pakiet może przełamać zabezpieczenia sterownika, umożliwiając atakującemu przejęcie pełnej kontroli nad systemem. Pakiet PoC opracowany przez badaczy pokazuje, jak dane z pakietu 802.11 mogą spowodować przepełnienie bufora, nadpisując dane pamięci krytyczne dla działania systemu operacyjnego.
Aby móc wysyłać surowe pakiety przez Wi-Fi, najpierw naukowcy stworzyli fałszywy punkt dostępowy dzięki Pythona i biblioteki scary. Konfiguracja obejmowała dwie maszyny wirtualne: Windows 11 23H2 i Kali Linux. Obie były wyposażone w adaptery Wi-Fi USB AC1200.
„Po nawiązaniu połączenia stacja żąda informacji o sieci dzięki protokołów DHCP, ARP i innych. Te pakiety są przesyłane jako pakiety danych. Nasze dane również muszą być wysłane jako pakiet danych, aby mogły dotrzeć do docelowej funkcji” – tłumaczą naukowcy.
Pokazany został także kod Payload – Pakiety z danymi (ładunki) można wygenerować dzięki poniższego fragmentu kodu w Python:
Co na to Microsoft?
Microsoft, po zgłoszeniu luki, wydał w sierpniu 2024 roku poprawkę zabezpieczającą, która eliminuje problem poprzez lepsze zarządzanie buforami i poprawioną walidację wejściowych danych. Użytkownikom zaleca się natychmiastowe zaktualizowanie systemu Windows, zwłaszcza jeżeli urządzenia są używane w publicznych sieciach Wi-Fi.
Podsumowanie Badanie przeprowadzone przez naukowców z Crowdfense wydaje się bardzo interesującym wektorem eksploitacji. Ciekawostką jest, iż ten rodzaj ataku otwiera nowe pole do badań nad bezpieczeństwem w sieciach bezprzewodowych, szczególnie w kontekście nowych technologii łączności, gdzie ataki na interfejsy radiowe mogą stanowić realne zagrożenie. O takich atakach pisaliśmy tutaj.
Artykuł podkreśla także znaczącą rolę procesu aktualizowania systemów operacyjnych (i nie tylko) w środowiskach informatycznych. Częste aktualizacje zabezpieczają nas przed tego typu atakiem na nasz komputer w sieci. Więcej szczegółów technicznych i pełną analizę luki można znaleźć na stronie Crowdfense.