W dzisiejszym artykule szczegółowo opisujemy, jak nieprawidłowe użycie funkcji „Repair” w instalatorze MSI może prowadzić do lokalnej eskalacji uprawnień do poziomu SYSTEM w systemie Windows (w skrócie LPE).
Kilka słów o instalatorze MSI i jego problemach
Instalator MSI to popularne narzędzie do instalacji aplikacji w systemach Windows, umożliwiające instalację, usuwanie i naprawę oprogramowania. Podczas gdy instalacja i usuwanie wymagają podwyższonych uprawnień, naprawa może być uruchamiana przez użytkowników z niższymi uprawnieniami, lecz odbywa się w kontekście NT AUTHORITY\SYSTEM, co zapewnia bardzo wysokie prawa dostępu. Daje to możliwość eskalacji uprawnień, jeśli atakujący zdoła zakłócić proces naprawy, co może prowadzić do przejęcia kontroli nad systemem.
Jak wygląda najnowszy atak na instalator MSI?
Autorem odkrycia jest badacz Michael Baer z SEC Consult. Przeprowadził on analizę techniczną mechanizmu naprawy MSI, wskazując luki w zabezpieczeniach, które mogą być wykorzystane przez atakujących. Stworzył exploit i wyjaśnił krok po kroku, jak działa oraz jakie mogą być jego konsekwencje.
„Główny nacisk kładziony jest na atak wykorzystujący krótko otwarte okno poleceń podczas uruchamiania instalatora MSI w interfejsie graficznym. Większość dostępnych badań publicznych skupia się na spowolnieniu działania systemu, aby uzyskać wystarczającą ilość czasu na przeprowadzenie ataku. W opisywanej technice zastosowano podejście pozwalające na całkowite wstrzymanie wykonywania programu, co upraszcza proces ataku i zwiększa jego niezawodność” – napisał badacz.
Wykorzystanie tej metody eliminuje potrzebę manipulacji czasem i zmniejsza ryzyko niepowodzenia, które może wynikać z różnorodnych czynników zewnętrznych wpływających na wydajność systemu. Zamiast polegać na niestabilnych warunkach, atak opiera się na kontrolowanym zatrzymaniu procesu, umożliwiając przeprowadzenie nieautoryzowanych działań w bardziej przewidywalny i stabilny sposób. Technika ta wyróżnia się prostotą i efektywnością w porównaniu do tradycyjnych metod, które są bardziej podatne na zakłócenia i wymagają większego nakładu pracy na synchronizację czasową.
Przeprowadzanie ataku w oparciu o pełne wstrzymanie wykonywania instalatora minimalizuje ryzyko wykrycia i zwiększa skuteczność działań, co czyni tę metodę bardziej praktyczną i preferowaną w kontekście eksploatacji krótko otwartych okien poleceń w systemach z GUI.
Kroki do wykonania exploitacji i eskalacji uprawnień na Windows
UWAGA! Autor exploita twierdzi, iż wymaga on dostępu do interfejsu graficznego (GUI) oraz obsługiwanej przeglądarki, takiej jak Firefox lub Chrome. Atak nie działa, jeśli używana jest najnowsza wersja przeglądarki Edge lub Internet Explorer. Ważne jest również, aby Edge lub IE nie były ustawione jako domyślne przeglądarki użytkownika systemu, a Firefox lub Chrome nie były otwarte przed próbą ataku. W przeciwnym razie proces uruchomi się z uprawnieniami użytkownika, a instalator zamiast uruchomić nowy proces z uprawnieniami SYSTEM, po prostu otworzy nową kartę w istniejącej przeglądarce.
W celu przeprowadzenia udanej eksploatacji musimy też znaleźć podatną aplikację w Windowsie (patrz akapit poniżej) lub skonstruować plik MSI, który będzie uruchamiał proces pochodny, np. konsolę. Autor udostępnił także na GitHub napisane w Python narzędzie (skrypt typu open source), o nazwie „msiscan”, dzięki któremu można spróbować dowiedzieć się więcej na temat instalatora mogącego pomóc w identyfikacji dalszych podatności.
Istnieje również metoda „ręcznej” identyfikacji takiej aplikacji za pomocą narzędzia „Procmon.exe” z pakietu SysInternals Microsoft.
Na powyższym ekranie widać, że proces instalatora uruchamia inny proces – „Schtasks.exe” oraz „conhost.exe” na użytkowniku SYSTEM.
Przed wykonaniem procesu eskalacji uprawnień warto sprawdzić posiadane uprawnienia w systemie (czy mamy uprawnienia zwykłego użytkownika).
Kroki potrzebne do wykonania eskalacji do uprawnień SYSTEM:
1. Zamknij przeglądarkę internetową, jeśli jest otwarta.
2. Rozpocznij proces naprawy jako użytkownik o niskich uprawnieniach. Można to zrobić, korzystając z normalnej funkcji GUI systemu Windows lub uruchamiając polecenie: msiexec.exe /fa <ścieżka/do/instalatora.msi>.
3. Gdy pojawi się czarne okno konsoli, szybko kliknij prawym przyciskiem myszy na pasek okna i wybierz opcję „Właściwości” lub zaznacz obszar wewnątrz okna. Spowoduje to zatrzymanie zamykania okna. Jeśli okno pojawia się i szybko znika możesz skorzystać z narzędzia o nazwie „SetOpLock.exe” napisanego w C++ przez Jamesa Forshawa, które spowolni cały proces (zblokuje go).
4. Zaznacz opcję „Tryb konsoli starszej wersji” (legacy console mode), co spowoduje otwarcie okna dialogowego z wyborem przeglądarki, jak pokazano poniżej:
5. Wybierz swoją przeglądarkę, najlepiej Firefox.
6. Naciśnij „Ctrl+O” w Firefox, aby otworzyć okno dialogowe wyboru pliku.
7. Wpisz „cmd.exe” w górnym pasku i naciśnij ENTER; powinno otworzyć się nowe okno poleceń. Dowód eskalacji LPE do SYSTEM poniżej:
Co na to Microsoft?
24 stycznia badacz skontaktował się z Microsoftem za pośrednictwem ich portalu badawczego w sprawie opisywanego problemu w ramach procesu CVD (skoordynowanego ujawniania luk w zabezpieczeniach). Dotyczył on zarówno samej luki, jak i publikacji wpisu na blogu oraz narzędzia.
Microsoft zdecydował się wdrożyć poprawkę, która została udostępniona po prawie ośmiu miesiącach w ramach aktualizacji 10 września 2024 r. Firma przyznała również nagrodę za pośrednictwem platformy Intigriti. Postanowiono przekazać ją na cele charytatywne związane ze społecznością zajmującą się bezpieczeństwem. Szczegóły CVE-2024-38014 (wynik CVSS 7,8) znajdziecie tutaj.
Inne warunki exploitacji podatnego MSI
Warto też wspomnieć, że exploitacja procesu naprawy MSI musi uruchamiać zewnętrzne konsole w celu uruchomienia operacji. Paka aplikacja musi spełniać jeden z poniższych warunków:
- Akcja niestandardowa wywołuje aplikację konsoli PE bezpośrednio lub pośrednio, co umożliwia wykorzystanie luki, ponieważ otwierane jest okno „conhost”. Wywołanie to może odbywać się na różne sposoby:
- Uruchomienie binarnego pliku dostarczonego przez instalator, który sam jest aplikacją konsoli.
- Uruchomienie binarnego pliku dostarczonego przez instalator, który następnie wywołuje aplikację konsoli.
- Uruchomienie aplikacji systemowych będących aplikacjami konsoli, np. certutil.exe <…> lub cmd /c del xyz.
- Wywołanie funkcji DLL, która uruchamia aplikację konsoli.
- Akcja niestandardowa uruchamia skrypty lub pliki wykonywalne, które są potencjalnie niebezpieczne.
Dodatkowo, chociaż oprogramowanie może być podatne na ataki, wykorzystanie luki nie zawsze jest możliwe. Aby exploit mógł zadziałać, w systemie musi być zainstalowana przeglądarka, którą można uruchomić z uprawnieniami użytkownika SYSTEM.
Co zrobić dalej?
Przede wszystkim tym, którzy nie zaktualizowali jeszcze systemu Windows o najnowsze łatki zalecamy, aby jak najszybciej to zrobili. Po aktualizacji systemu próba eksploitacji skończy się poniższym komunikatem Windows:
Przypominamy, że to nie pierwszy raz, gdy instalator systemu Windows posłużył do przeprowadzenia ataku. W artykule z listopada 2021 pokazaliśmy PoC i tym samym publicznie dostępny exploit, w którym inny badacz pokazywał, jak za pomocą specjalnie przygotowanego kodu wykonać lokalną eskalację uprawnień (LPE) ze zwykłego użytkownika do SYSTEM, czyli do najwyższych uprawnień na Windows.
Opisywany dzisiaj przypadek koncentruje się głównie na podatności krótko otwartego okna poleceń podczas uruchamiania instalatora MSI w interfejsie graficznym, jednak w wyniku niezabezpieczonego instalatora mogą powstać różne inne podatności.
Podsumowanie
Z pewnością powyższy przykład to tylko wierzchołek góry lodowej i uważamy, że jest jeszcze wiele do wydobycia z pakietów instalatora. Na przykład uprawnienia folderów i usług, które są instalowane, mogą szybko identyfikować więcej wektorów LPE. Zachęcamy wszystkich badaczy do dalszej analizy, a Was do odwiedzania Kapitana. Na pewno opiszemy jeszcze sporo tego typu odkryć w cyberbezpieczeństwie.