Podatność opisana poniżej to nie pierwszy omawiany na Kapitanie przykład na przejęcie uprawnień SYSTEM. Jako bonus do dzisiejszego artykułu dodamy, że wkrótce przedstawimy jeszcze inną metodę.
Właśnie wykryto nową lukę (CVE-2023-35359) w usłudze historii plików systemu Windows umożliwiającą lokalnym użytkownikom uzyskanie podwyższonych uprawnień w systemie operacyjnym (LPE).
Osoba atakująca, której uda się wykorzystać opisywaną w tekście poniżej lukę, może uzyskać uprawnienia SYSTEMOWE!
Jednak aby atak mógł zostać przeprowadzony z sukcesem, atakujący musi uzyskać lokalny dostęp do docelowej maszyny i mieć możliwość tworzenia na niej folderów i śledzenia wydajności na komputerze z ograniczonymi uprawnieniami, które mają domyślnie zwykli użytkownicy.
Podatne są zarówno wersje systemów serwerowych, jak i desktopowych Windows.
Krótkie wprowadzenie do usługi historii plików dla systemu Windows
Usługa historii plików dla systemu Windows (File History Service) to funkcja tworzenia kopii zapasowych i przywracania, która automatycznie tworzy kopie danych przechowywanych w bibliotece, na pulpicie, w folderze „Ulubione” itp. Może także tworzyć kopie zapasowe danych na źródle zewnętrznym, takim jak USB, dysk flash lub dysk twardy.
Nowa podatność CVE-2023-35359
Lukę odkrył niezależny badacz bezpieczeństwa współpracujący z SSD Secure Disclosure. Ciekawostką jest, że znalazła się ona w gronie zwycięzców konkursu TyphoonPWN 2023 organizowanego przez TyphoonCon – w kategorii Windows PE.
Opisywana podatność należy do krytycznych, ponieważ dotyczy możliwości lokalnego podniesienia uprawnień (eskalacja) na Windows do najwyższych, czyli SYSTEM. Dzieje się tak, ponieważ podatna usługa historii plików działa na uprawnieniach systemowych, tak więc eksploatując ją, uzyskamy najwyższe uprawnienia.
Geneza podatności CVE-2023-35359
Badacze sprawdzili, że po uruchomieniu usługi historii plików ładowany do systemu jest podstawowy plik fhsvc.dll i wykonywana funkcja CManagerThread::QueueBackupForLoggedOnUser, która została uznana za podatną na ataki. Funkcja symuluje zalogowanego użytkownika i ładuje plik fhcfg.dll, który jest główną przyczyną tej luki.
Ponieważ usługa historii plików może zostać uruchomiona ręcznie przez zwykłego użytkownika, dodatkowo istnieje możliwość modyfikacji przez niego DosDevices. Co więcej, po załadowaniu pliku fhcfg.dll zawiera on także zasób manifestu, a plik wykonywalny csrss.exe (podsystem wykonawczy klienta/serwera) również podszywa się pod tożsamość zwykłego użytkownika.
Gdy zwykły użytkownik zmodyfikuje DosDevices i doda dowiązanie symboliczne „C:” wskazujące na fałszywy katalog (na taki jak „C:\Users\Public\test”), wówczas program „csrss.exe” będzie szukać „c:” jako „C:\Users\Public\test”, wskazując na plik manifestu.
Fałszywy katalog musi zawierać link do innej biblioteki DLL, która będzie używana do eskalacji uprawnień.
Jest exploit na podatność – PoC
Autorom exploita udało się przejąć za jego pomocą uprawnienia systemowe. Po uruchomieniu kodu i odczekaniu 30 sekund pojawia się systemowe polecenie cmd (na uprawnieniach NT AUTRHOITY\SYSTEM).
Aby przetestować podatność, należy umieścić plik wykonywalny exp.exe oraz bibliotekę „msasn1.dll” i pliki „test.manifest” oraz „manifest.manifest” w tym samym katalogu, a następnie uruchomić plik exp.exe.
Opis podatności oraz źródła do kodu exploita (plików „exp.cpp”, „msasn1dll.cpp”, „test.manifest” oraz „manifest.manifest”) można pobrać tutaj.
Na koniec dodamy, że dobrą wiadomością w tym wszystkim jest, iż problem został zgłoszony do Microsoft i opublikowano niezbędne poprawki naprawiające podatność.
Zatem aktualizujcie Windowsy i czekajcie na nasz kolejny artykuł, w którym pokażemy inny ciekawy przykład, za pomocą którego będzie można przejąć pełna kontrolę nad Windows.😊