Czy istnieje jeden plik binarny UAC?

27

Czy w folderze System32 znajduje się plik binarny (.exe) odpowiedzialny za funkcje UAC systemu Windows? (np uac.exe.). Co by się stało, gdyby ten plik został usunięty z użyciem siły? Czy system Windows zepsuje się lub nie uruchomi?

Tutaj nie ma problemu z XY; Jestem ciekawy, co by się stało, gdyby UAC został siłą usunięty z komputera.

Kathy
źródło
1
Możesz łatwo wyłączyć UAC. UAC jest funkcją jądra. To, czego chcesz, nie jest możliwe
Ramhound
Istnieje plik win32k.sys technicze.net/... i najwyraźniej ten plik w wstępnie załatanym systemie Windows można modyfikować / zmieniać .. w celu wyłączenia kontroli konta użytkownika . Alternatywnie można wyłączyć UAC w normalny sposób, chociaż nie jest to plik EXE
barlop
Możesz wyłączyć UAC przy użyciu różnych metod, na przykład superuser.com/questions/1013702/… . Myślę, że jeśli usuniesz go w inny sposób hackerski, uzyskasz głównie ten sam efekt, choć z błędami w odpowiedziach poniżej na temat brakujących plików binarnych.
YetAnotherRandomUser
@barlop, win32k.sys to tylko jądro podsystemu Windows. Innymi słowy, podstawowy kod używany przez wszystko. Nie zalecałbym próby zmiany. pasotech.altervista.org/windows_internals/Win32KSYS.pdf
Dark Falcon
@DarkFalcon Prawdopodobnie „po stronie jądra podsystemu Windows” jest coś więcej. I nie radziłem, żeby ktoś „zmienił”! Jak myślisz, co ktoś zrobi? Otworzyć w notatniku? Nigdy nie sugerowałem czegoś takiego! Czy otworzyć edytor szesnastkowy? lepiej, ale ja też tego nie sugerowałem! I nikt tego nie zrobiłby i niczego nie zmieniłby, gdyby nie miał pojęcia, co chce zmienić, co wymagałoby pewnego poziomu umiejętności!
barlop

Odpowiedzi:

56

UAC jest architekturą wieloskładnikową implementowaną przez wiele plików binarnych

Kontrola konta użytkownika (UAC) odnosi się do kilku składników, które razem tworzą architekturę UAC . Krótko przejrzę niektóre z nich wraz z plikami binarnymi odpowiedzialnymi za ich implementację, ale najpierw oto przegląd architektury UAC z artykułu Microsoft Docs Jak działa Kontrola konta użytkownika :

wprowadź opis zdjęcia tutaj

Urząd ds. Bezpieczeństwa lokalnego (LSA) / Token filtrowany

Koncepcyjnie „pierwszy” składnik UAC jest implementowany przez podsystem Local Security Authority, który obsługuje tworzenie tokena dostępu użytkownika podczas procesu logowania. Począwszy od systemu Windows Vista proces logowania został zmodyfikowany w taki sposób, że gdy administrator loguje się z włączonym UAC, podsystem LSA generuje dwa oddzielne tokeny dostępu dla użytkownika:

  1. Jeden z pełnym dostępem administratora i
  2. Drugi „token filtrowany” ze standardowym dostępem użytkownika

Jak pokazano tutaj, proces ten różni się od standardowego logowania użytkownika:

wprowadź opis zdjęcia tutaj

Trwa lsass.exeproces obsługi podsystemu LSA .

Wirtualizacja

Dodana w Windows 7 wirtualizacja plików i rejestrów jest składnikiem UAC, który tłumi starsze aplikacje, które nie są zgodne z UAC, ale wymagają jedynie uprawnień administracyjnych w celu uzyskania dostępu do niektórych chronionych obszarów systemu plików lub rejestru:

Gdy aplikacja administracyjna, która nie jest zgodna z UAC, próbuje zapisać do chronionego katalogu, takiego jak Program Files, UAC daje aplikacji własny zwirtualizowany widok zasobu, który próbuje zmienić. Zwirtualizowana kopia jest przechowywana w profilu użytkownika.

Źródło

Poprzez przekierowanie tych prób dostępu do obszarów, które nie wymagają uprawnień administratora, aplikacje te nadal działają pomimo włączonego UAC w systemie.

Ta wirtualizacja jest zaimplementowana w jądrze .

Usługa informacji o aplikacji

Usługa informacji o aplikacji (AIS) odczytuje manifest aplikacji i współpracuje z monitem o zgodę UAC w celu ustalenia, czy aplikacja może wykonywać z podwyższonymi prawami (tj. Uruchamiać w kontekście niefiltrowanego tokena dostępu na poziomie administracyjnym utworzonego podczas logowania) . Ten post na blogu zawiera dobry przegląd jego roli w procesie UAC:

AIS Ułatwia uruchamianie interaktywnych aplikacji z dodatkowymi uprawnieniami administracyjnymi. Jeśli ta usługa zostanie zatrzymana, użytkownicy nie będą mogli uruchamiać aplikacji z dodatkowymi uprawnieniami administracyjnymi, których mogą wymagać ... Powłoka sprawdza tę usługę podczas uruchamiania aplikacji. AIS to ten, który czyta manifest i sekcję xml „trustInfo”, która ma wymagania dla „RequestExecutionLevel” ...

Oto grafika zgodna z powyższym cytatem, szczegółowo opisująca rolę AIS w procesie Monit o zgodę UAC:

wprowadź opis zdjęcia tutaj

AIS jest zaimplementowany w bibliotece DLL,appinfo.dll która jest wykonywana przez svchost.exe.

Zgoda na monit

Odpowiedź BenN wyjaśnia kluczową rolę (nie) słynnego monitu o zgodę UAC. Jest to realizowane consent.exei jest odpowiedzialne za uzyskanie zgody użytkownika lub poświadczeń administratora w celu umożliwienia uruchomienia aplikacji wymagającej uprawnień administratora.

Bezpieczny pulpit

Bezpieczny pulpit to miejsce, w którym domyślnie wyświetla się monit o zgodę UAC. UACBlog firmy Microsoft mówi nam, co jest wyjątkowego w tym pulpicie w porównaniu do pulpitu użytkownika:

Najczęściej wchodzisz w interakcję z [Bezpiecznym pulpitem] podczas logowania do systemu Windows, ponieważ interfejs logowania działa na Bezpiecznym pulpicie. Podstawowa różnica w Bezpiecznym pulpicie od Pulpitu użytkownika polega na tym, że można tu uruchamiać tylko zaufane procesy działające jako SYSTEM (tzn. Nic nie działa jako poziom uprawnień użytkownika), a ścieżka dostępu do Bezpiecznego pulpitu z Pulpitu użytkownika musi być również zaufana poprzez cały łańcuch.

Pomysł korzystania z niego przy pytaniu użytkownika o zgodę na uruchomienie aplikacji z podwyższonymi uprawnieniami polega na tym, że złośliwe oprogramowanie nie może naśladować Bezpiecznego pulpitu, chyba że ma już uprawnienia administracyjne, w którym to przypadku nakłanianie użytkownika do przyznania go jest dyskusyjne.


Wniosek: UAC to nie tylko jeden plik binarny. To tkanina przeplecionych podsystemów.

Istnieją jeszcze inne aspekty architektury UAC, które nie zostały tu omówione, ale powinno to dostarczyć wystarczających dowodów na fakty, które:

  1. Kontrola konta użytkownika nie jest zaimplementowana w jednym pliku binarnym.
  2. Po włączeniu jest to integralna część wykonywania zadań administracyjnych.

Od czasu wprowadzenia w systemie Windows Vista został głęboko zintegrowany z kluczowymi częściami systemu operacyjnego, dzięki czemu niemożliwe jest usunięcie całego kodu odpowiedzialnego za kontrolę konta użytkownika bez niszczenia innych rzeczy (takich jak możliwość logowania!)

Myślę, że można śmiało powiedzieć, że jeśli „wymusisz” UAC, złamiesz Windows.

Mówię: Przywróć Monikę
źródło
1
FWIW technicze.net/... na podstawie tego łącza wydaje się, że plik win32k.sys odgrywa rolę. Zauważam, że file.exe identyfikuje go jako „plik wykonywalny PE32 + (natywny) x86-64 dla MS Windows”
barlop,
win32k.sys jest - zasadniczo - dużą częścią jądra. Oczywiście odgrywa rolę w UAC. To jest Windows.
Roger Lipscombe
25

Jak doskonale wyjaśnił Twisty , istnieje wiele komponentów, które pomagają wdrożyć UAC. Część UAC, którą ludzie są najbardziej zaznajomieni, to okno dialogowe podniesienia uprawnień / zgody:

Zapewnia to consent.exe„Interfejs zgody dla aplikacji administracyjnych”. Próbowałem zmienić nazwę na maszynie wirtualnej i zobaczyć, co się stanie. Zgodnie z oczekiwaniami podczas używania polecenia „uruchom jako administrator” nie pojawiają się monity o podniesienie uprawnień - zamiast tego pojawia się błąd „nie znaleziono pliku”, który obwinia rzecz, którą próbujesz podwyższyć:

nie znaleziono

Próba użycia dowolnego elementu interfejsu użytkownika Panelu sterowania, który wymaga podniesienia uprawnień (tj. Ma ikonę tarczy), nawet jeśli jest zalogowany jako administrator, kończy się niepowodzeniem z podobnymi błędami. Próba uruchomienia czynności administracyjnych z menu Start powoduje nieco inny błąd:

żadna aplikacja nie jest powiązana

W zależności od zestawu ACL podczas zmiany nazwy, która zepsuła wszystko, naprawienie tego z poziomu systemu operacyjnego może być niemożliwe, ponieważ operacje na plikach mogą wymagać podniesienia uprawnień (nawet jeśli zwykle nie powodują wyświetlenia okna dialogowego zgody). Jednak działania typowe dla użytkownika nie wydają się być degradowane.

Ben N.
źródło
3
@muru, zgaduję, że zgoda.exe nie zwraca tylko prawdy lub fałszu, ale zamiast tego tokena do wykonania. Co oznacza, że ​​nie można przejść od zwykłego użytkownika do tokena administratora bez autentykacji jako administrator.
Joey
6
@muru Windows sprawdza i zastępuje wiele plików systemowych, nie jestem pewien, czy ten plik jest dołączony, czy nie. Z punktu widzenia bezpieczeństwa chodzi jednak o kwestię sporną - aby zastąpić zgodę.exe, potrzebne są przede wszystkim uprawnienia administratora, więc eskalacja uprawnień nie jest możliwa, nawet gdyby można było zastąpić to tak, jak to sobie wyobrażasz.
Luaan,
3
Wystarczy to uwzględnić, odkąd ta myśl przyszła mi do głowy. Nadal możesz uruchomić komputer w systemie Linux lub coś w celu zastąpienia pliku. Wymaga to jednak fizycznego dostępu do maszyny, co w zasadzie jest również dostępem administracyjnym. Więc nadal nie jest to
kwestia
1
@EricTowers Tak, ale ponieważ do zmiany wymagane są uprawnienia administracyjne consent.exe, osoba atakująca, która może to zrobić, znajduje się już po drugiej stronie szczelnego włazu i ma bardziej proste sposoby robienia złych rzeczy.
Ben N
1
@TwistyImpersonator Ciekawe pytanie! Wydaje się, że ciche podniesienie uprawnień wyzwala również uruchomienie zgody ( monitorowanie rozpoczęcia procesu ), gdy jest wykonywane na zwykłym koncie administratora. Wbudowane konto administratora nie podlega kontroli konta użytkownika, więc wszystkie jego programy są już podniesione, a zgoda się nie angażuje. Możesz zmienić to zachowanie za pomocą tych zasad bezpieczeństwa .
Ben N