Jeśli nie pamiętacie naszej zabawy z wyskakującymi oknami Windows, notatnikiem i eskalacją uprawnień do konta SYSTEM, czyli procesem consent.exe i użyciem CFTTool.exe, to zajrzyjcie tutaj . Nieskromnie twierdzimy, że ten artykuł zaskoczy Was jeszcze bardziej.
Otóż mamy nową podatność, dzięki której będąc zalogowanym do systemu Windows jako użytkownik „gość” lub na zwykłe konto użytkownika możemy eskalować uprawnienia do konta użytkownika SYSTEM! W takiej sytuacji cóż nam więcej potrzeba…”tylko błękitnego nieba” – cytując Adama Wolskiego z Golden Life :). Poniżej znajdziecie szczegóły na temat podatności oraz film.


Na czym polega podatność?

Autorem odkrytej podatności jest Eduardo Brauna Prado, członek ZDI (Zero Day Initiative). Odkryty przez niego błąd występuje w mechanizmie kontroli konta użytkownika (UAC), a konkretnie w niepoprawnej izolacji funkcji związanej z kliknięciem na opcje wystawcy certyfikatu jakim została podpisana aplikacja. Jak większość z Was zapewne wie, domyślnie system Windows wyświetla wszystkie monity kontroli konta użytkownika (UAC) na osobnym pulpicie znanym jako „Bezpieczny pulpit” – słynne okno dialogowe wyskakujące w momencie, gdy chcemy coś zainstalować lub uruchomić i proszące użytkownika o podanie dodatkowych poświadczeń administracyjnych. Z technicznego punktu widzenia same monity dla użytkownika wyświetlane są przez plik wykonywalny o nazwie „consent.exe”, działający na uprawnieniach konta „NT AUTHORITY\SYSTEM” – użytkownika posiadającego najwyższe uprawnienia na poziomie integralności systemu. Ponieważ istnieje ryzyko, że zwykły użytkownik mógłby wejść w interakcję z interfejsem użytkownika SYSTEM („bezpiecznym pulpitem”), Microsoft mocno ograniczył wszelkiego typu możliwości klikania i otwierania z niego innych okien (wyizolował je). W przeciwnym wypadku użytkownik o niskich uprawnieniach mógłby być w stanie wykonywać operacje jako SYSTEM i ominąć swój lokalny interfejs.
Nawet pojedyncza funkcja interfejsu użytkownika na uprawnieniach SYSTEM, która wydaje się nieszkodliwa w fazie izolacji, może potencjalnie stanowić pierwszy krok w łańcuchu działań prowadzących do próby przejęcia kontroli nad systemem operacyjnym.


Jak wygląda proces ominięcia izolacji okien/pulpitów?

Klikając prawym przyciskiem myszy na dowolny plik wykonywalny i wybierając opcję „Uruchom jako administrator …” możemy wywołać monit UAC. Wygląda on następująco:

Rysunek1. Okno UAC uruchamiane w momencie prośby o wyższe uprawnienia.

Poza opcjami podania nazwy użytkownika i hasła, przyciskami zamknięcia okna oraz „TAK” i „NIE” w zasadzie nic nie możemy w nim wykonać/uruchomić.
Prado zauważył, że gdy podobną operację wykonamy na pliku podpisanym „specjalnym certyfikatem”, następnie klikniemy „Pokaz szczegóły”(lewy dolny róg okna), w oknie dialogowym pojawi się dodatkowy odnośnik „Show information about this publisher’s certificate” ( Pokaż informacje o certyfikacie tego wydawcy) otwierający dodatkowe okno dialogowe informujące o certyfikacie jakim został podpisany plik.

Rysunek 2. Link do szczegółów certyfikatu jakim została podpisana aplikacja.

Pamiętajmy, że główne okno dialogowe monitu poświadczeń jest uruchomione na uprawnieniach konta SYSTEM, tak więc wszystkie uruchamiane z niego okna pochodne też będą dziedziczyły te uprawnienia. Tak jest i w naszym przypadku, lecz nowo otwarte okno też nie daje nam zbyt wielu możliwości, bo gdyby tak było okno dialogowe certyfikatu systemu Windows umożliwiłoby nam eksportowanie wyświetlanego certyfikatu do pliku. To dałoby nam dostęp do standardowego okna dialogowego „Kopiuj do pliku”, otwierając bogactwo funkcji interfejsu użytkownika. Na szczęście wszystkie przyciski są zablokowane. Brawo Microsoft!

Rysunek 3. Zakładka Ogólne certyfikatu.
Rysunek 4. Szczegóły certyfikatu z zablokowanymi opcjami edycji i kopiowania do pliku.

Diabeł tkwi w szczegółach 🙂 …

Jednak jak się poniżej okaże, nie w każdej sytuacji jest tak idealnie z zabezpieczeniami jakby mogło nam się wydawać.
Prado zauważył, że okno certyfikatu posiada zdefiniowany, niejasny i specyficzny dla Microsoft identyfikator obiektu (OID), mający wartość liczbową 1.3.6.1.4.1.311.2.1.10. Nagłówek WinTrust.h definiuje to jako SPC_SP_AGENCY_INFO_OBJID, a jeśli występuje, będzie wyświetlane na karcie Szczegóły jako SpcSpAgencyInfo.
Jeśli wartość identyfikatora OID będzie posiadała prawidłowe i poprawnie sformatowane dane, zostanie ona pokazana w polu „Wystawiony przez” na karcie „Ogólne” jako hiperłącze! Oznacza to, że będziemy mogli uruchomić z niego okno przeglądarki na uprawnieniach SYSTEM!


Testowanie podatności

W celu przeprowadzenia testu musieliśmy użyć archaicznego pliku instalacyjnego aplikacji Microsoft HTML ActiveX Control , który jest podpisany przez Microsoft następującym certyfikatem:

Rysunek 5. Widoczny link do certyfikatu wystawcy.

Kliknięcie hiperłącza przy polu „Wystawiony przez” spowodowało uruchomienie przeglądarki z pliku „.exe”. Przeglądarka uruchamia się jako „NT AUTHORITY \ SYSTEM” w powłoce użytkownika (musimy najpierw zamknąć okno dialogowe z bezpiecznej powłoki), następnie z niej możemy uruchomić wiersz poleceń i sprawdzić posiadane uprawnienia.

Rysunek 6. Uruchomiona powłoka (wiersz linii poleceń) „cmd.exe” na uprawnieniach konta SYSTEM.

Powyższa luka jest czymś wyjątkowym, jeśli zwrócimy uwagę na sam sposób działania 🙂

Poniższy film pokazuje cały proces, w tym ostatni krok, w którym uruchamiany jest wiersz poleceń na koncie użytkownika SYSTEM. Scenariusz działa także w sytuacji, kiedy jesteśmy zalogowani do systemu na konto „Gość”. Życzymy miłego oglądania.


Jak sobie radzić z problemem?

Pomimo, że problem dotyczy Windows 7 na szczęście Microsoft zdążył załatać tę lukę w listopadzie 2019 r. (CVE-2019-1388). Na Windows 10 1903 kliknięcie na link nie powoduje żadnej reakcji systemu. Z nieoficjalnego źródła wiemy, że niektóre wersje Windows 10 podobno też są podatne. Luki nie testowaliśmy na pozostałych wersjach systemów Windows, ale jak widać na podstawie powyższego przykładu zawsze znajdzie się sposób na ominięcie zabezpieczeń Windows. W takich przypadkach od strony systemu operacyjnego warto monitorować uruchomione procesy aplikacji i podnoszenie uprawnień użytkowników (eskalację) w systemie. Również uruchomienie powłoki „cmd.exe”, „powershell.exe” czy IE na uprawnieniach „NT AUTHORITY\SYSTEM” powinno być dla nas wskazówką, że dzieje się coś złego.

Jeśli pojawią się jakieś nowe i ciekawe luki bezpieczeństwa, będziemy Was o tym na pewno informować. Zachęcamy do podzielenie się z nami i innymi użytkownikami swoją opinią. Jesteśmy dostępni także w mediach społecznościowych na Facebook i LinkedIn.

Kapitan Hack