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 :
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:
- Jeden z pełnym dostępem administratora i
- Drugi „token filtrowany” ze standardowym dostępem użytkownika
Jak pokazano tutaj, proces ten różni się od standardowego logowania użytkownika:
Trwa lsass.exe
proces 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:
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.exe
i 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:
- Kontrola konta użytkownika nie jest zaimplementowana w jednym pliku binarnym.
- 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.