the Power in Power Users
po raz pierwszy opublikowany w TechNet w maju 01, 2006
umieszczenie kont użytkowników systemu Windows w grupie Power Users security jest powszechnym podejściem, które organizacje przyjmują, aby zapewnić użytkownikom najmniej uprzywilejowane środowisko, unikając jednocześnie wielu problemów związanych z prawdziwym uruchomieniem jako ograniczony użytkownik. Grupa Power Users może instalować oprogramowanie, zarządzać ustawieniami zasilania i strefy czasowej oraz instalować kontrolki ActiveX, akcje, które ograniczeni użytkownicy są odrzucani.
wielu administratorów nie zdaje sobie jednak sprawy, że ta moc jest ceną prawdziwego bezpieczeństwa ograniczonego użytkownika. Wiele artykułów, w tym ten artykuł Microsoft Knowledge Base i ten post na blogu autorstwa specjalisty ds. bezpieczeństwa Microsoft Jespera Johansena, wskazuje, że użytkownik należący do grupy Power Users może łatwo awansować na w pełni uprzywilejowanych administratorów, ale nie byłem w stanie znaleźć szczegółowego opisu mechanizmów elewacji, do których się odnoszą. Dlatego postanowiłem zbadać sprawę.
zanim rozpocząłem śledztwo, musiałem zdefiniować problem. W przypadku braku luki bezpieczeństwa, takiej jak przepełnienie bufora, eskalacja uprawnień jest możliwa tylko wtedy, gdy konto może skonfigurować dowolny kod do wykonania w kontekście konta bardziej uprzywilejowanego. Konta domyślne, które mają więcej uprawnień niż zaawansowani użytkownicy, obejmują administratorów i lokalne konto systemowe, na którym działa kilka procesów usług systemu Windows. Tak więc, jeśli członek Power Users może zmodyfikować plik wykonywany przez jedno z tych kont, skonfigurować jeden z ich plików wykonywalnych, aby załadować dowolny plik DLL lub dodać wykonywalny automatyczny start do tych kont, może uzyskać pełne uprawnienia administracyjne.
moim pierwszym krokiem było sprawdzenie, jakie pliki i katalogi, do których Grupa Power Users ma dostęp do zapisu, ale ograniczeni użytkownicy nie mają. Systemy, które rozważałem, to standardowe Windows 2000 Professional SP4, Windows XP SP2 i Windows Vista. Nie będę się trudził przeglądaniem systemów serwerowych, ponieważ najczęstszy Scenariusz Power Users jest na stacji roboczej.
metoda brute force sprawdzania, jakie obiekty systemu plików mogą modyfikować użytkownicy, wymaga odwiedzenia KAŻDEGO pliku i katalogu i zbadania jego uprawnień, co najwyraźniej nie jest praktyczne. Narzędzie cacls wiersza poleceń, które zawiera System Windows, zrzeka deskryptory bezpieczeństwa, ale nigdy nie przeszkadzało mi uczenie się języka opisu deskryptora bezpieczeństwa (SDDL) i parsowanie wyjścia wymagałoby napisania skryptu. Narzędzie AccessEnum, które napisał Bryce, wydawało się obiecujące i może również patrzeć na bezpieczeństwo rejestru, ale ma na celu pokazanie potencjalnych słabości uprawnień, a nie dostępów dostępnych dla poszczególnych kont. Ponadto wiedziałem, że będę musiał również zbadać zabezpieczenia stosowane w usługach Windows.
doszedłem do wniosku, że muszę napisać nowe narzędzie do pracy, więc stworzyłem AccessChk . Przekazujesz AccessChk nazwę konta lub grupy oraz ścieżkę systemu plików, klucz rejestru lub nazwę usługi Windows, a następnie raportujesz efektywny dostęp do konta lub grupy dla obiektu, biorąc pod uwagę przynależność do grupy konta. Na przykład, jeśli konto Mark miało dostęp do pliku, ale Mark należy do grupy deweloperów, której wyraźnie odmówiono dostępu, AccessChk pokazałby, że Mark nie ma dostępu.
w celu ułatwienia odczytu danych wyjściowych AccessChk wypisuje ” W “obok nazwy obiektu, jeśli konto ma uprawnienia pozwalające na modyfikację obiektu, oraz “R”, jeśli konto może odczytać dane lub status obiektu. Różne przełączniki powodują, że AccessChk rekursuje się do podkatalogów lub podkluczy rejestru, a przełącznik-v zgłasza konkretne dostępy dostępne dla konta. Przełącznik, który dodałem specjalnie do wyszukiwania obiektów, dla których konto ma dostęp do zapisu, to-w.
uzbrojony w to nowe narzędzie byłem gotowy do rozpoczęcia badania. Moim pierwszym celem była instalacja VMware Windows XP SP2, która nie ma zainstalowanych aplikacji innych niż narzędzia VMWare. Pierwsze polecenie jakie wykonałem to:
accesschk-ws” power users ” c:\windows
to pokazuje wszystkie pliki i katalogi w katalogu \Windows, które Grupa Power Users może modyfikować. Oczywiście wiele plików pod \Windows jest częścią systemu operacyjnego lub usług Windows i dlatego wykonuje się je na lokalnym koncie systemowym. AccessChk poinformował, że zaawansowani użytkownicy mogą modyfikować większość katalogów pod \Windows, co pozwala użytkownikom członkowskim tworzyć pliki w tych katalogach. W ten sposób członek grupy Power Users może tworzyć pliki w katalogu \Windows i \Windows\System32, co jest częstym wymogiem źle napisanych starszych aplikacji. Ponadto zaawansowani użytkownicy muszą mieć możliwość tworzenia plików w katalogu \Windows\Downloaded Program Files, aby mogli zainstalować kontrolki ActiveX, ponieważ Internet Explorer zapisuje je w tym katalogu. Jednak samo utworzenie pliku w tych katalogach nie jest ścieżką do podniesienia uprawnień.
pomimo faktu, że zaawansowani użytkownicy mogą tworzyć pliki pod \Windows i większością jego podkatalogów, Windows konfiguruje domyślne uprawnienia bezpieczeństwa dla większości plików zawartych w tych katalogach, tak aby tylko członkowie grupy Administratorzy i lokalnego konta systemowego mieli dostęp do zapisu. Wyjątki obejmują pliki czcionek (.fon), wiele plików dziennika systemowego (.log), niektóre pliki pomocy (.chm), Zdjęcia i klipy audio (.jpg, .gif i …wmv) i pliki instalacyjne (.inf), ale żaden z tych plików nie może być modyfikowany lub zastępowany w celu uzyskania uprawnień administracyjnych. Sterowniki urządzeń w \Windows \ System32 \ Drivers umożliwiłyby łatwą eskalację, ale zaawansowani użytkownicy nie mają dostępu do zapisu do żadnego z nich.
widziałem kilkaexe i … dll jest na liście, więc sprawdziłem je pod kątem możliwych exploitów. Większość plików wykonywalnych, dla których zaawansowani użytkownicy mają dostęp do zapisu, to narzędzia interaktywne lub uruchamiane z ograniczonymi uprawnieniami. O ile nie uda się namówić administratora do interaktywnego logowania się do systemu, nie można ich użyć do podniesienia poziomu. Ale jest jeden rażący wyjątek: ntoskrnl.exe:
to prawda, zaawansowani użytkownicy mogą zastąpić lub zmodyfikować podstawowy plik systemu operacyjnego Windows. Jednak pięć sekund po modyfikacji pliku Windows File Protection (WFP) zastąpi go kopią zapasową, którą pobiera, w większości przypadków, z \Windows\System32\Dllcache. Zaawansowani użytkownicy nie mają dostępu do zapisu plików w Dllcache, więc nie może podważyć kopii zapasowej. Jednak członkowie grupy Power Users mogą obejść WFP, pisząc prosty program, który zastępuje plik, wyrzuca zmodyfikowane dane na dysk, a następnie uruchamia ponownie system, zanim WFP podejmie działania.
zweryfikowałem, że takie podejście działa, ale pozostało pytanie, w jaki sposób można wykorzystać tę lukę do podniesienia przywilejów. Odpowiedź jest tak prosta, jak użycie disassemblera do znalezienia funkcji używanej przez System Windows do sprawdzania uprawnień, SeSinglePrivilegeCheck i łatania punktu wejścia w obrazie na dysku , aby zawsze zwracał TRUE, czyli kod wynikowy, który wskazuje, że użytkownik ma sprawdzane uprawnienia. Gdy użytkownik działa na zmodyfikowanym w ten sposób jądrze, wydaje się, że ma wszystkie uprawnienia, w tym Sterownik ładowania, przejęcie własności i utworzenie Tokena, aby wymienić tylko kilka uprawnień, które może łatwo wykorzystać, aby przejąć pełną kontrolę administracyjną nad systemem. Chociaż 64-bitowy System Windows XP zapobiega ingerencji jądra w PatchGuard, niewiele przedsiębiorstw działa na 64-bitowym systemie Windows.
Zastąpienie Ntoksrnl.exe nie jest jednak jedynym sposobem na przejście do uprawnień administracyjnych za pośrednictwem katalogu \Windows. Co najmniej jeden z bibliotek DLL, dla których domyślne uprawnienia pozwalają na modyfikację przez zaawansowanego użytkownika, Schedsvc.dll, działa jako usługa Windows na lokalnym koncie systemowym. Schedesvc.dll jest DLL, który implementuje usługę Harmonogramu zadań systemu Windows. System Windows może działać z powodzeniem bez usługi, więc zaawansowani użytkownicy mogą zastąpić bibliotekę DLL dowolną biblioteką DLL, na przykład taką, która po prostu dodaje swoje konto do lokalnej grupy Administratorzy. Oczywiście WFP chroni również ten plik, więc jego zastąpienie wymaga użycia techniki WFP-bypass, którą opisałem.
zidentyfikowałem już kilka wektorów wysokości, ale kontynuowałem dochodzenie, patrząc na dostęp zaawansowanych użytkowników do katalogu \Program Files, gdzie znalazłem domyślne uprawnienia podobne do tych w katalogu \ Windows. Zaawansowani użytkownicy mogą tworzyć podkatalogi w katalogu \ Program Files, ale nie mogą modyfikować większości preinstalowanych komponentów systemu Windows. Ponownie, wyjątki, takie jak Windows Messenger (\Program Files\Messenger \ Msmgs.exe) i Windows Media Player (\Program Files\Windows Media Player\Wmplayer.exe) działa interaktywnie.
to nie znaczy, że \Program Files nie ma potencjalnych dziur. Kiedy zbadałem najnowszy wynik, zobaczyłem, że zaawansowani użytkownicy mogą modyfikować dowolny plik lub katalog utworzony w \Program Files po tych utworzonych podczas instalacji podstawowego systemu Windows. Na moim systemie testowym \Program Files\Vmware\VMware Tools\Vmwareservice.exe, plik obrazu dla usługi VMware Windows, który działa na lokalnym koncie systemowym, był taki plik. Innym nieco ironicznym przykładem jest Microsoft Windows Defender Beta 2, który instaluje swoją usługę wykonywalną w \Program Files \ Windows Defender z domyślnymi ustawieniami zabezpieczeń. Wymiana tych plików obrazów usług jest szybką ścieżką do uprawnień administratora i jest jeszcze łatwiejsza niż Wymiana plików w katalogu \Windows, ponieważ WFP nie miesza się z zamiennikami.
następnie zwróciłem uwagę na Rejestr, uruchamiając to polecenie:
accesschk-swk” power users ” hklm
lista wyjściowa była ogromna, ponieważ zaawansowani użytkownicy mają dostęp do zapisu do zdecydowanej większości klucza Programowego HKLM\. Pierwszym obszarem, który badałem pod kątem możliwych elewacji, był klucz HKLM\System, ponieważ zapis dostępu do wielu ustawień pod nim, takich jak klucze konfiguracji usługi Windows i sterowników w HKLM\System\CurrentControlSet\Services, pozwoliłby na trywialną dywersję lokalnego konta systemowego. Analiza wykazała, że zaawansowani użytkownicy nie mają dostępu do zapisu niczego istotnego pod tym kluczem.
większość zaawansowanych użytkowników-pisane obszary pod inną główną gałęzią HKLM, oprogramowanie, związane z Internet Explorer, Explorer i jego skojarzenia plików, i Konfiguracja zarządzania energią. Zaawansowani użytkownicy mają również dostęp do zapisu do HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Run, co pozwala im skonfigurować dowolne pliki wykonywalne, aby działały, gdy ktoś loguje się interaktywnie, ale wykorzystanie tego wymaga użytkownika z uprawnieniami administracyjnymi do interaktywnego logowania się do systemu (co, w zależności od systemu, może nigdy się zdarzyć lub zdarza się rzadko). Podobnie jak w przypadku katalogu \Program Files, zaawansowani użytkownicy mają domyślny dostęp do zapisu do podkluczy HKLM\Software innych niż Windows, co oznacza, że aplikacje innych firm, które konfigurują ścieżki kodu wykonywalnego w swoich systemowych kluczach rejestru, mogą otwierać luki w zabezpieczeniach. VMWare, jedyna aplikacja zainstalowana w systemie, nie.
pozostałym obszarem eksploracji były usługi Windows. Jedynymi uprawnieniami usługi, które AccessChk uważa za dostęp do zapisu, są SERVICE_CHANGE_CONFIG i WRITE_DAC. Użytkownik z SERVICE_CHANGE_CONFIG może skonfigurować dowolny plik wykonywalny do uruchomienia podczas uruchamiania usługi i biorąc pod uwagę WRITE_DAC mogą modyfikować uprawnienia do usługi, aby przyznać sobie dostęp SERVICE_CHANGE_CONFIG. AccessChk ujawnił następujące informacje na moim zapasowym systemie Windows XP SP2:
następnie uruchomiłem PsService, aby zobaczyć konto, na którym wykonuje usługę DcomLaunch:
w ten sposób członkowie grupy Power Users mogą po prostu zmienić ścieżkę obrazu DComLauncher, aby wskazać własny obraz, zrestartować system i cieszyć się uprawnieniami administracyjnymi.
potencjalnie mogą istnieć inne usługi, które wprowadzają exploity w swoje bezpieczeństwo. Domyślne ustawienia uprawnień dla usług utworzonych przez aplikacje innych firm nie zezwalają zaawansowanym użytkownikom na dostęp do zapisu, ale niektóre aplikacje innych firm mogą skonfigurować niestandardowe uprawnienia, aby umożliwić im to. W rzeczywistości na mojej produkcji 64-bitowa instalacja systemu Windows XP accesschk ujawnia dziurę, którą nie tylko zaawansowani użytkownicy mogą wykorzystać, aby się podnieść, ale także ograniczeni użytkownicy:
zakończyłem teraz główną fazę mojego dochodzenia i właśnie potwierdziłem to, co wszyscy mówili: zdeterminowany członek grupy zaawansowanych użytkowników może dość łatwo stać się pełnoprawnym Administratorem za pomocą exploitów w systemie operacyjnym i tych stworzonych przez aplikacje innych firm.
moim ostatnim krokiem było sprawdzenie, jak podejście Microsoftu do konta Power Users ewoluowało z czasem. Ten artykuł w Bazie wiedzy Microsoft z 1999 r. dokumentuje słynną lukę w wygaszaczu ekranu, która istniała w systemie Windows NT 4, ale Microsoft zamknął tę dziurę przed wydaniem systemu Windows 2000. Artykuł KB pokazuje również, że Microsoft najwyraźniej nie był świadomy innych luk, które prawdopodobnie istniały. Windows 2000 SP4 zawiera również dziury, ale w rzeczywistości jest nieco bezpieczniejszy niż domyślna konfiguracja Windows XP SP2: zaawansowani użytkownicy nie mają dostępu do zapisu do Ntoskrnl.exe lub plik obrazu Harmonogramu zadań, ale zamiast dostępu do zapisu do usługi DComLauncher mogą obalić usługę WMI, która również działa na lokalnym koncie systemowym.
Windows XP SP1 dodał więcej słabych punktów użytkowników, w tym dostęp do zapisu krytycznych plików systemowych, takich jak Svchost.exe, proces hostingu usług Windows i dodatkowe usługi, WMI i SSDPSRV, z uprawnieniami do wykorzystania. Kilka usług pozwoliło nawet ograniczonym użytkownikom podnieść, jak opisano w tym artykule Microsoft KB od marca tego roku.
najnowszy system operacyjny Microsoftu, Windows Vista, zamyka wszystkie luki, które opisałem przez wykastrowanie zaawansowanych użytkowników, aby zachowywał się identycznie do ograniczonych użytkowników. Microsoft zamknął więc drzwi dla zaawansowanych użytkowników, aby zmusić personel IT do zabezpieczenia swoich systemów poprzez przeniesienie użytkowników do kont o ograniczonej liczbie użytkowników lub do kont administracyjnych, gdzie muszą potwierdzić kontrolę użytkownika końcowego nad swoimi systemami.
najważniejsze jest to, że podczas gdy Microsoft może naprawić luki, które znalazłem w moim dochodzeniu, nie mogą zapobiec wprowadzaniu nowych aplikacji innych firm, jednocześnie zachowując zdolność zaawansowanych użytkowników do instalowania aplikacji i kontrolek ActiveX. Lekcja jest taka, że jako administrator IT nie powinieneś oszukiwać siebie, myśląc, że grupa Power Users jest bezpiecznym kompromisem na drodze do działania jako ograniczony użytkownik.
Originally by Mark Russinovich on 5/1/2006 11: 01: 00 am
Sysinternals.com/Blog
Leave a Reply