Integrity Levels
Last updated
Last updated
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
W systemach Windows Vista i nowszych wszystkie chronione elementy mają etykietę poziomu integralności. Ta konfiguracja zazwyczaj przypisuje "średni" poziom integralności plikom i kluczom rejestru, z wyjątkiem niektórych folderów i plików, do których Internet Explorer 7 może zapisywać na niskim poziomie integralności. Domyślne zachowanie polega na tym, że procesy inicjowane przez standardowych użytkowników mają średni poziom integralności, podczas gdy usługi zazwyczaj działają na poziomie integralności systemu. Etykieta wysokiej integralności chroni katalog główny.
Kluczową zasadą jest to, że obiekty nie mogą być modyfikowane przez procesy o niższym poziomie integralności niż poziom obiektu. Poziomy integralności to:
Nieufny: Ten poziom jest przeznaczony dla procesów z anonimowymi logowaniami. %%%Przykład: Chrome%%%
Niski: Głównie dla interakcji internetowych, szczególnie w trybie chronionym Internet Explorera, wpływając na powiązane pliki i procesy oraz niektóre foldery, takie jak Folder tymczasowy Internetu. Procesy o niskiej integralności napotykają znaczne ograniczenia, w tym brak dostępu do zapisu w rejestrze i ograniczony dostęp do zapisu w profilu użytkownika.
Średni: Domyślny poziom dla większości działań, przypisany do standardowych użytkowników i obiektów bez określonych poziomów integralności. Nawet członkowie grupy Administratorzy działają na tym poziomie domyślnie.
Wysoki: Zarezerwowany dla administratorów, pozwalający im modyfikować obiekty na niższych poziomach integralności, w tym te na samym wysokim poziomie.
System: Najwyższy poziom operacyjny dla jądra Windows i podstawowych usług, niedostępny nawet dla administratorów, zapewniający ochronę kluczowych funkcji systemu.
Instalator: Unikalny poziom, który stoi ponad wszystkimi innymi, umożliwiający obiektom na tym poziomie odinstalowanie dowolnego innego obiektu.
Możesz uzyskać poziom integralności procesu za pomocą Process Explorer z Sysinternals, uzyskując dostęp do właściwości procesu i przeglądając zakładkę "Zabezpieczenia":
Możesz również uzyskać swój aktualny poziom integralności używając whoami /groups
Obiekt w systemie plików może wymagać minimalnego poziomu integralności, a jeśli proces nie ma tego poziomu integralności, nie będzie mógł z nim współdziałać. Na przykład, stwórzmy plik z konsoli zwykłego użytkownika i sprawdźmy uprawnienia:
Teraz przypiszmy minimalny poziom integralności Wysoki do pliku. Musisz to zrobić z konsoli uruchomionej jako administrator, ponieważ zwykła konsola będzie działać na poziomie integralności Średnim i nie będzie mogła przypisać poziomu integralności Wysokiemu obiektowi:
To jest miejsce, w którym sprawy stają się interesujące. Możesz zobaczyć, że użytkownik DESKTOP-IDJHTKP\user
ma PEŁNE uprawnienia do pliku (w rzeczywistości to był użytkownik, który stworzył plik), jednak z powodu minimalnego poziomu integralności wdrożonego nie będzie mógł już modyfikować pliku, chyba że działa w ramach Wysokiego Poziomu Integralności (zauważ, że będzie mógł go odczytać):
Dlatego, gdy plik ma minimalny poziom integralności, aby go zmodyfikować, musisz działać przynajmniej na tym poziomie integralności.
Zrobiłem kopię cmd.exe
w C:\Windows\System32\cmd-low.exe
i ustawiłem mu poziom integralności niski z konsoli administratora:
Teraz, gdy uruchamiam cmd-low.exe
, będzie działać na niskim poziomie integralności zamiast na średnim:
Dla ciekawskich, jeśli przypiszesz wysoki poziom integralności do binarnego pliku (icacls C:\Windows\System32\cmd-high.exe /setintegritylevel high
), nie uruchomi się on automatycznie z wysokim poziomem integralności (jeśli wywołasz go z poziomu średniej integralności -- domyślnie -- będzie działać na średnim poziomie integralności).
Nie wszystkie pliki i foldery mają minimalny poziom integralności, ale wszystkie procesy działają na poziomie integralności. I podobnie jak w przypadku systemu plików, jeśli proces chce zapisać w innym procesie, musi mieć przynajmniej ten sam poziom integralności. Oznacza to, że proces o niskim poziomie integralności nie może otworzyć uchwytu z pełnym dostępem do procesu o średnim poziomie integralności.
Z powodu ograniczeń omówionych w tej i poprzedniej sekcji, z punktu widzenia bezpieczeństwa, zawsze zaleca się uruchamianie procesu na jak najniższym poziomie integralności.