Od zwykłego użytkownika do SYSTEM. Gdzie naprawdę kończą się granice bezpieczeństwa Windows 11?
Od zwykłego użytkownika do SYSTEM. Gdzie naprawdę kończą się granice bezpieczeństwa Windows 11?
Windows 11 nie ma jednej granicy bezpieczeństwa.
To nie jest:
USER
↓
ADMIN
↓
SYSTEM
↓
KONIEC
Rzeczywisty model jest znacznie bardziej skomplikowany.
Proces ma token. Token ma SID-y, grupy i przywileje. Proces ma poziom integralności. Obiekty Windows mają własne deskryptory bezpieczeństwa i ACL. Aplikacja może działać w AppContainer. Niektóre procesy mają dodatkową ochronę PPL. Kod przechodzący do kernela napotyka kolejną granicę, a VBS/HVCI dokłada warstwę opartą o hypervisor.
Microsoft sam opisuje współczesny Windows poprzez wiele granic bezpieczeństwa: m.in. user mode → kernel mode, process boundary oraz AppContainer boundary. Jednocześnie zaznacza bardzo istotny szczegół: administrator → kernel nie jest traktowane jako pełna granica bezpieczeństwa.
To właśnie dlatego współczesna eskalacja uprawnień nie polega wyłącznie na znalezieniu sposobu na „zostanie administratorem”.
Atakujący szuka następnej granicy.
Internet
│
▼
Browser / Document / Application
│
▼
User Process
│
▼
Medium Integrity
│
├── UAC / Token abuse
│
▼
High Integrity / Administrator
│
├── Service / IPC / Driver
│
▼
SYSTEM
│
├── PPL
├── VBS
├── HVCI
└── Kernel
│
▼
Ring 0
Im niżej schodzi atakujący, tym bardziej zmienia się charakter ataku.
1. Najpierw trzeba zrozumieć token
W Windows proces nie jest po prostu „uruchomiony jako Marek” albo „uruchomiony jako Administrator”.
Proces posiada access token.
Microsoft definiuje token jako obiekt opisujący kontekst bezpieczeństwa procesu lub wątku. Zawiera m.in. SID użytkownika, SID-y grup, przywileje, informacje o sesji, DACL i inne elementy potrzebne do podejmowania decyzji bezpieczeństwa.
Uproszczony model:
ACCESS TOKEN
├── User SID
├── Group SIDs
├── Privileges
├── Logon SID
├── Owner
├── Default DACL
├── Token type
└── Impersonation information
Kiedy proces próbuje otworzyć chroniony obiekt, Windows nie pyta wyłącznie:
„Czy użytkownik jest administratorem?”
Sprawdza kontekst bezpieczeństwa i uprawnienia do konkretnego obiektu.
To fundamentalna różnica.
Process
│
▼
Access Token
│
├── SID
├── Groups
├── Privileges
└── Restrictions
│
▼
Security Descriptor
│
▼
ACCESS?
Dlatego dwa procesy uruchomione przez tego samego użytkownika nie muszą mieć identycznych możliwości.
2. Administrator nie zawsze działa z pełnym tokenem
Tutaj pojawia się UAC.
Domyślnie konto administratora nie uruchamia wszystkich aplikacji z pełnym administracyjnym kontekstem. Microsoft opisuje mechanizm, w którym administrator otrzymuje dwa tokeny: standardowy oraz administracyjny. Zwykłe aplikacje działają z ograniczonym kontekstem, a pełny token jest używany dopiero po odpowiednim podniesieniu uprawnień.
Schemat:
Administrator logs in
│
├───────────────┐
│ │
▼ ▼
Standard token Admin token
Medium IL High IL
│ │
▼ ▼
Normal apps Elevated apps
To właśnie dlatego:
Administrator account
≠
Every process runs elevated
I dlatego kompromitacja procesu użytkownika nie powinna automatycznie oznaczać kompromitacji całego systemu.
Problem zaczyna się wtedy, gdy atakujący znajdzie drogę przez kolejną granicę.
3. Integrity Level: Windows mówi procesowi „jak wysoko może sięgać”
Windows wykorzystuje Mandatory Integrity Control.
W uproszczeniu występują poziomy:
Untrusted
↓
Low
↓
Medium
↓
High
↓
System
Microsoft opisuje cztery podstawowe poziomy: Low, Medium, High i System. Typowe aplikacje użytkownika działają na Medium, procesy uruchomione z podniesionymi uprawnieniami mogą działać na High, a usługi systemowe mogą działać na System.
Najważniejsza zasada:
niższy poziom integralności nie powinien móc dowolnie modyfikować obiektów należących do wyższego poziomu.
Przykład:
Low Integrity
│
X
│
Medium Integrity
│
X
│
High Integrity
│
X
│
System
To oczywiście uproszczenie, ponieważ rzeczywiste decyzje zależą również od ACL, tokenów, capabilities i innych mechanizmów.
Ale jako model threat modelu działa bardzo dobrze.
4. Dlaczego przeglądarka nie powinna być administratorem
Wyobraź sobie podatność w rendererze przeglądarki.
Atakujący uzyskuje:
remote code execution
To jeszcze nie musi oznaczać:
SYSTEM
Jeżeli renderer działa z ograniczeniami, pierwsza faza ataku może wyglądać tak:
Malicious Web Content
│
▼
Browser vulnerability
│
▼
Renderer compromise
│
▼
Sandbox / AppContainer
│
X
│
▼
Host resources
To właśnie sens izolacji aplikacji.
Microsoft opisuje AppContainer jako granicę izolującą aplikację od niepotrzebnych zasobów, innych aplikacji, urządzeń, plików, sieci i danych uwierzytelniających.
Jeżeli więc aplikacja zostanie przejęta, atakujący nie powinien automatycznie dostać dostępu do wszystkiego, co posiada użytkownik.
Granica musi zostać przełamana ponownie.
5. AppContainer to nie tylko „niski użytkownik”
AppContainer ma własny model tożsamości.
Token procesu może zawierać:
User SID
Package SID
Capability SIDs
Integrity Level
Privileges
Dostęp do zasobu może więc zależeć od kombinacji tych elementów.
Microsoft opisuje ten mechanizm jako model oparty na tożsamości pakietu oraz capabilities. Aplikacja otrzymuje dostęp tylko do zasobów, które zostały jej odpowiednio przyznane.
Schemat:
Resource
│
Security Check
│
┌──────────┴──────────┐
│ │
User/Group SID AppContainer SID
│ │
└──────────┬──────────┘
│
Capability
│
▼
ACCESS
To jest znacznie bardziej precyzyjne niż klasyczne:
user has permission
Windows sprawdza również w jakim rodzaju procesu działa kod.
6. I właśnie tutaj zaczyna się prawdziwa eskalacja
Załóżmy, że atakujący uzyskał wykonanie kodu jako zwykły użytkownik.
Nie ma:
SYSTEM
SeDebugPrivilege
pełnego dostępu do usług
dostępu do kernela
Ma za to:
process
token
filesystem access
network access
IPC
user data
Pierwszym celem jest znalezienie kolejnej granicy.
Typowe klasy dróg obejmują:
1. Token abuse
2. UAC boundary
3. Vulnerable service
4. Weak ACL
5. IPC / RPC / COM
6. Named pipe
7. Scheduled task
8. Service configuration
9. Vulnerable driver
10. Kernel vulnerability
Nie każda z tych technik jest podatnością Windows.
Część problemów wynika z błędnej konfiguracji aplikacji lub usługi.
To ważne, bo w praktyce privilege escalation bardzo często jest kombinacją:
vulnerability
+
misconfiguration
+
excessive privilege
7. Usługa SYSTEM jest atrakcyjniejsza niż konto Administrator
Windows posiada ogromną liczbę usług działających w różnych kontekstach.
Przykładowy model:
User Process
│
▼
Service Interface
│
▼
Windows Service
│
▼
SYSTEM
Jeżeli usługa przyjmuje dane od użytkownika, a następnie wykonuje uprzywilejowaną operację, powstaje trust boundary.
Microsoft zwraca uwagę na ten problem również w dokumentacji bezpieczeństwa sterowników: każda ścieżka, która przenosi dane lub wykonanie z niższego poziomu zaufania do wyższego, powinna być traktowana jako granica zaufania, a dane przekraczające tę granicę należy traktować jako niezaufane.
To samo można zastosować do usług.
Low privilege
│
│ untrusted input
▼
+----------------+
| Privileged svc |
+----------------+
│
▼
SYSTEM operation
Jeżeli walidacja jest błędna, proces uprzywilejowany może stać się proxy dla atakującego.
8. IPC jest częścią powierzchni ataku
Windows posiada wiele mechanizmów komunikacji między procesami:
- RPC,
- COM,
- ALPC,
- named pipes,
- shared memory,
- Windows messages,
- usługi systemowe,
- różnego rodzaju brokerów.
Dla administratora może to wyglądać jak zwykła komunikacja między komponentami.
Dla atakującego wygląda inaczej:
Low privilege process
│
│ IPC request
▼
Privileged process
│
▼
Sensitive operation
Dlatego dobra analiza privilege escalation nie zaczyna się od:
„Który EXE jest podatny?”
Tylko:
„Jakie uprzywilejowane komponenty przyjmują dane od mniej uprzywilejowanych procesów?”
To znacznie lepszy threat model.
9. Prawdziwa granica zaczyna się dopiero przy kernelu
Windows ma klasyczną separację:
USER MODE
──────────────
Applications
Services
Browsers
Security software
──────────────
KERNEL MODE
──────────────
Kernel
Drivers
HAL
Kernel subsystems
──────────────
HARDWARE
Proces użytkownika nie powinien móc bezpośrednio manipulować pamięcią kernela.
To jedna z najważniejszych granic systemu.
Ale Microsoft zwraca uwagę na bardzo istotny wyjątek w modelu threat modelingu: administrator → kernel nie powinien być traktowany jako pełna granica bezpieczeństwa.
Dlaczego?
Bo administrator może posiadać bardzo szeroki zestaw możliwości operacyjnych.
Dlatego współczesny Windows potrzebuje dodatkowych mechanizmów ochrony:
VBS
HVCI
Secure Boot
PPL
Credential Guard
Driver Blocklist
WDAC
Nie chodzi o jeden „supermechanizm”.
Chodzi o to, aby kompromitacja jednej warstwy nie oznaczała automatycznego końca wszystkich pozostałych.
10. Sterownik jest jednym z najkrótszych mostów do Ring 0
Sterownik kernel-mode działa z ogromnymi możliwościami.
Jeżeli posiada błąd pozwalający użytkownikowi w trybie user mode sterować operacjami wykonywanymi w kernelu, powstaje bardzo niebezpieczna ścieżka:
User process
│
▼
Device / IOCTL
│
▼
Vulnerable driver
│
▼
Kernel
│
▼
SYSTEM / Ring 0
Microsoft wprost wskazuje podatne sterowniki jako atrakcyjny cel atakujących próbujących dostać się do kernela. Z tego powodu Windows posiada Microsoft Vulnerable Driver Blocklist.
Od Windows 11 2022 Update blocklista podatnych sterowników jest domyślnie włączona na urządzeniach, a jej aktualizacje są dostarczane również poprzez standardowy proces serwisowania Windows.
To jest bardzo ważna część współczesnego modelu:
Signed driver
≠
Trusted forever
Podpis mówi, kto wydał kod.
Nie gwarantuje, że kod nie ma błędów.
11. BYOVD: podpisany sterownik może być częścią ataku
Bring Your Own Vulnerable Driver wykorzystuje dokładnie tę słabość modelu zaufania.
Atakujący nie musi pisać własnego sterownika.
Może próbować wykorzystać legalny, podpisany komponent, który posiada znaną lub nieznaną wcześniej podatność.
Schemat:
Malware
│
▼
Signed vulnerable driver
│
▼
Kernel primitive
│
├── memory access
├── process manipulation
├── security tool termination
└── privilege escalation
Dlatego blokowanie podatnych sterowników ma znaczenie nawet wtedy, gdy:
Secure Boot = ON
Driver = digitally signed
Microsoft wskazuje właśnie podatne legalne sterowniki jako jeden z istotnych wektorów ataków do kernela.
12. PPL: co dzieje się po uzyskaniu SYSTEM?
Tutaj pojawia się interesująca zmiana.
Załóżmy, że atakujący uzyskał:
SYSTEM
Czy to oznacza, że może bez ograniczeń manipulować każdym procesem?
Nie.
Windows posiada Protected Process Light.
PPL dodaje dodatkowy poziom ochrony procesu. Microsoft udostępnia strukturę PROCESS_PROTECTION_LEVEL_INFORMATION, która pozwala określić poziom ochrony procesu; obejmuje ona m.in. poziomy LSA Light oraz Antimalware Light.
Schemat:
SYSTEM process
│
│ tries to access
▼
+----------------------+
| Protected Process |
| Light |
+----------------------+
│
X
restricted
Nie oznacza to, że PPL jest magicznym murem.
Oznacza natomiast, że Windows nie traktuje wszystkich procesów jako równych tylko dlatego, że działają w wysokim kontekście.
To zupełnie inny model bezpieczeństwa.
13. PPL pokazuje, jak zmieniła się architektura Windows
Starszy sposób myślenia:
User
↓
Admin
↓
SYSTEM
↓
Kernel
Nowoczesny:
User
↓
Token
↓
Integrity Level
↓
Application Isolation
↓
UAC
↓
Admin
↓
PPL / protected processes
↓
VBS / HVCI
↓
Kernel
↓
Hardware trust
Każda warstwa odpowiada na inny problem.
Nie można ich traktować jako zamienników.
14. VBS zmienia miejsce, w którym działa część zabezpieczeń
Virtualization-Based Security wykorzystuje hypervisor do odseparowania wybranych funkcji bezpieczeństwa od normalnego środowiska Windows.
W uproszczeniu:
Windows
│
├── Applications
├── Services
├── Kernel
│
└── VBS environment
│
├── security components
└── isolated secrets/code integrity
To ważne, ponieważ kompromitacja normalnego środowiska Windows nie powinna automatycznie oznaczać kompromitacji wszystkich mechanizmów działających w izolowanym środowisku.
Credential Guard jest dobrym przykładem takiego podejścia — izoluje wybrane dane uwierzytelniające przy wykorzystaniu VBS.
Na Netbe temat Credential Guard został już opisany szczegółowo, dlatego tutaj najważniejszy jest sam model granicy.
15. HVCI pilnuje kodu kernel-mode
Hypervisor-Protected Code Integrity dodaje kolejną warstwę kontroli kodu działającego w kernelu.
Model:
Driver
│
▼
Code Integrity
│
▼
HVCI / Hypervisor
│
▼
Kernel execution
W praktyce chodzi o ograniczenie możliwości uruchomienia niezatwierdzonego lub niezgodnego kodu kernel-mode.
Dlatego:
Exploit
↓
User mode
↓
Attempt to load malicious kernel code
↓
HVCI / Code Integrity
może zatrzymać część ścieżki.
Nie każdą.
Ale właśnie o to chodzi w defense in depth.
16. Dlaczego eskalacja uprawnień jest zwykle łańcuchem
Najbardziej realistyczny model ataku wygląda nie tak:
RCE → SYSTEM
ale raczej:
Initial Access
↓
Application RCE
↓
User Process
↓
Discovery
↓
Weak ACL / IPC / Service / Token
↓
High Integrity
↓
SYSTEM
↓
Credential Access
↓
Security Tool Tampering
↓
Driver / Kernel
Każdy etap ma inne wymagania.
Dlatego dobrze skonfigurowany Windows nie musi zapobiec pierwszemu kompromitowaniu aplikacji, żeby skutecznie ograniczyć skutki ataku.
To jest sedno security boundary.
17. Najważniejsza zasada: nie ufaj procesowi tylko dlatego, że jest „systemowy”
Proces może być:
Microsoft signed
SYSTEM
High integrity
a mimo tego przyjmować dane od:
Low privilege process
I właśnie ta relacja może być interesująca.
Dobre pytanie podczas audytu brzmi:
Które uprzywilejowane komponenty przyjmują dane od mniej uprzywilejowanych procesów?
Potem:
Czy dane są walidowane?
Czy caller jest uwierzytelniony?
Czy wymagane są capabilities?
Czy ACL jest poprawny?
Czy można podszyć się pod klienta?
Czy proces wykonuje operację w imieniu klienta?
Czy istnieje ścieżka impersonation?
To jest znacznie bardziej wartościowe niż zwykłe skanowanie listy procesów.
18. Praktyczny audyt granic bezpieczeństwa
Administrator Windows 11 powinien umieć odpowiedzieć na kilka podstawowych pytań.
Jakim tokenem działa proces?
PowerShell:
whoami /all
Daje szybki obraz:
User SID
Group memberships
Privileges
Integrity Level
To bardzo dobry punkt wyjścia.
Jaki jest poziom integralności?
Można wykorzystać:
whoami /groups
i sprawdzić wpis związany z Mandatory Label.
Jakie procesy działają wysoko?
Warto użyć:
Get-Process
oraz narzędzi Sysinternals, przede wszystkim Process Explorer, jeżeli potrzebujemy dokładniejszej analizy tokenów i procesów.
Jakie usługi działają jako SYSTEM?
Get-CimInstance Win32_Service |
Where-Object {$_.StartName -eq "LocalSystem"} |
Select-Object Name, State, StartMode, PathName
To nie oznacza automatycznie problemu.
Ale daje listę miejsc, które warto objąć threat modelingiem.
Jakie sterowniki są obecne?
driverquery
lub:
Get-CimInstance Win32_SystemDriver
Następnie warto sprawdzić:
producent
wersja
podpis
wiek
czy sterownik jest potrzebny
czy znajduje się na aktualnej blockliście
19. Nie zaczynaj hardeningu od wyłączania funkcji
Częsty błąd:
coś nie działa
↓
wyłącz UAC
↓
wyłącz Defendera
↓
wyłącz HVCI
↓
wyłącz politykę sterowników
To jest dokładnie odwrotna filozofia niż security boundary.
Lepszy model:
Security control
↓
co blokuje?
↓
dlaczego aplikacja go potrzebuje?
↓
czy można zmienić aplikację?
↓
czy można stworzyć wyjątek?
↓
czy wyjątek można ograniczyć?
Dopiero na końcu:
disable
20. Minimalny model hardeningu
Na współczesnym Windows 11 warto rozpatrywać przynajmniej:
Secure Boot
+
VBS
+
HVCI
+
LSA Protection
+
Credential Guard
+
Microsoft Vulnerable Driver Blocklist
+
WDAC / App Control
+
Defender
+
UAC
+
least privilege
Nie każdy komputer będzie miał identyczny zestaw.
Nie każda funkcja jest dostępna w każdej edycji i konfiguracji.
Microsoft prowadzi osobną macierz dostępności funkcji bezpieczeństwa dla różnych edycji Windows.
Dlatego „włącz wszystko” nie jest strategią.
Strategią jest:
threat model
↓
required boundary
↓
security control
↓
verification
↓
monitoring
21. Co naprawdę oznacza „pełna kontrola”?
W bezpieczeństwie Windows określenie:
„atakujący ma SYSTEM”
nie powinno automatycznie kończyć analizy.
Trzeba zadać kolejne pytania:
Czy może czytać LSASS?
Czy może manipulować PPL?
Czy może wyłączyć EDR?
Czy może załadować sterownik?
Czy sterownik jest blokowany?
Czy HVCI działa?
Czy VBS działa?
Czy może zmienić polityki Code Integrity?
Czy może zmienić boot chain?
Dopiero odpowiedzi pokazują rzeczywisty poziom kompromitacji.
To właśnie dlatego współczesny Windows nie może opierać całej ochrony na jednym założeniu:
SYSTEM = trusted
22. Security boundary jest ciekawszy niż lista funkcji
Można napisać artykuł:
Windows 11 ma UAC, VBS, HVCI, Defender i Credential Guard.
Tylko co z tego?
Znacznie bardziej interesujące jest pytanie:
co się dzieje,
gdy jedna warstwa zostanie przełamana?
Przykład:
Browser exploit
│
▼
User process compromised
│
X AppContainer
│
▼
Sandbox escape
│
▼
Medium IL
│
X UAC / token boundary
│
▼
High IL
│
X Service / ACL boundary
│
▼
SYSTEM
│
X PPL
│
▼
Security process
│
X VBS / HVCI
│
▼
Kernel
Jeżeli atakujący musi przejść przez pięć niezależnych mechanizmów, jego exploit chain staje się znacznie trudniejszy.
Nie niemożliwy.
Trudniejszy.
I dokładnie o to chodzi.
23. Windows 11 nie potrzebuje jednej idealnej bariery
Bezpieczeństwo systemu operacyjnego nie polega na stworzeniu jednego muru, którego nie da się przejść.
To nierealne.
Lepszy model to:
USER
│
┌─────▼─────┐
│ Token │
└─────┬─────┘
│
┌─────▼─────┐
│ Integrity │
└─────┬─────┘
│
┌─────▼─────┐
│AppContainer│
└─────┬─────┘
│
┌─────▼─────┐
│ UAC │
└─────┬─────┘
│
┌─────▼─────┐
│ SYSTEM │
└─────┬─────┘
│
┌─────▼─────┐
│ PPL │
└─────┬─────┘
│
┌─────▼─────┐
│ VBS/HVCI │
└─────┬─────┘
│
┌─────▼─────┐
│ Kernel │
└───────────┘
Każda kolejna warstwa ma ograniczać skutki kompromitacji poprzedniej.
To jest właściwy model Defense in Depth.
Audyt: 10 pytań dla administratora Windows 11
Jeżeli chcesz szybko ocenić rzeczywisty poziom izolacji systemu, zacznij od tych pytań:
[ ] Czy użytkownicy pracują bez stałych uprawnień administratora?
[ ] Czy UAC działa w odpowiedniej konfiguracji?
[ ] Czy krytyczne aplikacje wykorzystują AppContainer / sandbox?
[ ] Czy VBS jest aktywne?
[ ] Czy HVCI jest aktywne?
[ ] Czy LSA Protection jest aktywne?
[ ] Czy Credential Guard jest wymagany i skonfigurowany?
[ ] Czy Microsoft Vulnerable Driver Blocklist działa?
[ ] Czy WDAC / App Control ogranicza nieautoryzowany kod?
[ ] Czy monitorowane są ścieżki user mode → service → kernel?
Jeżeli na większość pytań odpowiedź brzmi:
„nie wiem”
to również jest wynik audytu.
System może być dobrze zabezpieczony.
Ale jeśli administrator nie potrafi powiedzieć gdzie znajdują się jego granice bezpieczeństwa, trudno traktować konfigurację jako świadomie zarządzaną.
Podsumowanie
Największy błąd w analizie bezpieczeństwa Windows polega na myśleniu:
user
↓
administrator
↓
SYSTEM
To za prosty model.
Współczesny Windows działa raczej tak:
Identity
↓
Access Token
↓
ACL / Security Descriptor
↓
Integrity Level
↓
AppContainer / Application Isolation
↓
UAC
↓
Privileged Services / IPC
↓
SYSTEM
↓
PPL
↓
VBS / HVCI
↓
Kernel
↓
Hardware-backed Security
Każda z tych granic odpowiada na inny rodzaj problemu.
I właśnie dlatego privilege escalation nie jest pojedynczym atakiem.
To przechodzenie przez kolejne strefy zaufania.
Atakujący może zacząć od przeglądarki, dokumentu albo podatnej aplikacji.
Potem może próbować wyjść z sandboxa.
Następnie szukać drogi z Medium do High.
Potem z High do SYSTEM.
A później interesować się procesami chronionymi, sterownikami i kernelem.
Windows 11 został zaprojektowany tak, aby każda z tych zmian poziomu zaufania napotykała kolejną kontrolę. Microsoft opisuje AppContainer, process boundary, kernel boundary i inne mechanizmy właśnie jako elementy wielowarstwowego modelu ochrony.
Najważniejsza lekcja jest więc prosta:
Nie pytaj tylko, czy Windows jest „zabezpieczony”. Pytaj, ile granic musi przełamać atakujący, zanim dostanie to, czego naprawdę chce.
To znacznie lepszy sposób projektowania i audytowania bezpieczeństwa Windows 11.
Źródła techniczne
- Microsoft Learn — Windows Security documentation.
- Microsoft Learn — Access Tokens.
- Microsoft Learn — Mandatory Integrity Control.
- Microsoft Learn — AppContainer isolation.
- Microsoft Learn — Windows security boundaries.
- Microsoft Learn — Windows security model for drivers.
- Microsoft Learn — Protected Process Light /
PROCESS_PROTECTION_LEVEL_INFORMATION. - Microsoft Learn — Microsoft Vulnerable Driver Blocklist.







