Czy „NT AUTHORITY \ SYSTEM” jest użytkownikiem czy grupą?

17

W systemie Windows użytkownik Systemjest wyświetlane z symbolem grupy: wprowadź opis zdjęcia tutaj. (Korzystanie z wewnętrznego interfejsu API Win32 LookupAccountSid ujawnia również, że wydaje się być grupą SidTypeGroup ).

Z drugiej strony procesy mogą działać system contextpodobnie jak w user context. Również dokumenty Microsoft opisują to jako „użytkownik systemu” lub „konto systemowe”, a nie jako „grupa systemowa”.

Czy jest to użytkownik, który do jakichkolwiek starszych celów jest wyświetlany jako grupa?

(Czy jest to coś, czym Werner Heisenberg byłby zainteresowany?)


Uwaga: Kim jest użytkownik NT AUTHORITY \ SYSTEM? jest podobny, ale nie odpowiada na pytanie, dlaczego jest wyświetlany jako grupa i zachowuje się jak użytkownik.

wiggle marsh
źródło
To może odpowiedzieć na twoje? pytanie tutaj: superuser.com/questions/471769/…
XsiSec 19.04.16
Masz rację, moje złe przeprosiny
XsiSec 19.04.16
Identyfikatory SID nie muszą być żadnym z nich, prawda?
user1686,

Odpowiedzi:

13

Po pierwsze, token dostępu zawiera znacznie więcej niż identyfikator zabezpieczeń (SID) . Trzeba tylko „uruchomić jako administrator” program, aby zobaczyć w Menedżerze zadań, że jego użytkownik jest sobą, a nie administratorem, a cud ten osiąga się jedynie poprzez modyfikację tokena dostępu, a nie poprzez zastąpienie identyfikatora SID.

Po drugie, NT-AUTHORITY i SYSTEM nie są ani kontami, ani grupami, pomimo różnych innych źródeł (nawet wewnątrz Microsoft). Identyfikator SID zwykle ma nazwę wyświetlaną w razie potrzeby. Konto użytkownika przekazuje swój identyfikator SID jako główny identyfikator SID do tokena dostępu, który określa również nazwę wyświetlaną przez różne narzędzia. Ale token dostępu może zawierać dodatkowe identyfikatory SID, na przykład dla wszystkich grup, do których należy to konto użytkownika. Podczas sprawdzania uprawnień system Windows wyszuka dowolny identyfikator SID w tokenie dostępu, który ma to uprawnienie.

Niektóre dobrze znane identyfikatory SID systemu Windows będą miały nazwy zgłaszane przez system Windows, chociaż tak naprawdę nie należą do żadnego konta.

Bezpieczeństwo Identyfikator jest określona przez Wikipedię jako:

unikalny, niezmienny identyfikator użytkownika, grupy użytkowników lub innego podmiotu zabezpieczeń .

Identyfikator SID nie musi nawet definiować konta użytkownika ani grupy. Określa tylko zestaw uprawnień. Powyższy artykuł w Wikipedii dodaje:

System Windows przyznaje lub odmawia dostępu i uprawnień do zasobów na podstawie list kontroli dostępu (ACL), które używają identyfikatorów SID do jednoznacznej identyfikacji użytkowników i ich członkostwa w grupach. Gdy użytkownik loguje się do komputera, generowany jest token dostępu, który zawiera identyfikatory SID użytkownika i grupy oraz poziom uprawnień użytkownika. Gdy użytkownik żąda dostępu do zasobu, token dostępu jest sprawdzany na liście ACL, aby zezwolić na określoną akcję na danym obiekcie lub odmówić jej wykonania.

Identyfikator SID NT-AUTHORITY\SYSTEMmożna dodać do innych kont. Na przykład mówi się o koncie LocalSystem :

Konto LocalSystem jest predefiniowanym kontem lokalnym używanym przez menedżera kontroli usług. [...] Jego token zawiera NT AUTHORITY \ SYSTEM i BUILTIN \ Administrators SIDs; konta te mają dostęp do większości obiektów systemowych.

W powyższym tekście widać już zamieszanie, które panuje nawet w dokumentacji Microsoftu, jeśli chodzi o systemowe identyfikatory SID, które nie są dokładnie kontami ani grupami - są tylko zestawem uprawnień. To zamieszanie obejmuje także inne narzędzia i artykuły, dlatego wszelkie zwracane informacje powinny być dokładnie sprawdzone.

Artykuł Microsoft Dobrze znane identyfikatory zabezpieczeń w systemach operacyjnych Windows szczegółowo opisują wszystkie identyfikatory SID systemu, z których niektóre zamieszczam poniżej:

wizerunek

Wniosek : NT-AUTHORITY \ SYSTEM to nazwa identyfikatora bezpieczeństwa, który nie jest ani grupą, ani kontem. Jest wyświetlany w Menedżerze zadań jako SYSTEM, gdy jest głównym identyfikatorem SID programu. Najbardziej nazwałbym to „pseudo-kontem”.

harrymc
źródło
1
Pobiłeś mnie do tego mój przyjacielu. Byłem w połowie pisania podobnej odpowiedzi, kiedy nadeszła twoja odpowiedź. To jest właściwe wyjaśnienie. Jest to tylko zbiór uprawnień i to, czy jest wyświetlane jako grupa czy użytkownik, jest błędne. Ponieważ większość narzędzi może pokazywać tylko „użytkownika lub” grupę, po prostu wybierają jedną lub drugą. Zwykle grupują się, gdy API WIn32 ustawia odpowiednio SidTypeGroup i to znaczy, skąd większość aplikacji otrzymuje informacje od.
Tonny
Łał! Zaczynam nagrodę, aby nagrodzić istniejącą odpowiedź i co się stanie? Pojawia się lepsza odpowiedź. :-) Jedno pytanie: czy konto LocalSystem ma również swój własny („konto”) identyfikator SID, czy po prostu używa identyfikatora SID NT-AUTHORTY \ SYSTEM jako głównego identyfikatora SID?
Heinzi
1
@Heinzi: LocalSystem to kolejne „pseudo konto”. Widać to w linku : „To konto nie jest rozpoznawane przez podsystem bezpieczeństwa, więc nie można podać jego nazwy w wywołaniu funkcji LookupAccountName”.
harrymc
- which are just a set of permissions: czy te, które odnoszą się do identyfikatorów systemu lub kont lub grup ?
René Nyffenegger
@ RenéNyffenegger: Oba.
harrymc
7

IMHO twoja obserwacja jest poprawna. NT-AUTHORITY\SYSTEMjest grupą, więc można ją nazwać grupą systemową . Ta grupa istnieje przynajmniej od systemu Windows NT 4 i już tam była:

Grupy specjalne

[...]

System - system operacyjny.

Istnieje również konto o nazwie LocalSystem, które

[...] obejmuje NT AUTHORITY \ SYSTEM [...]

więc możesz nazwać to użytkownikiem systemu, który jest członkiem grupy SYSTEM.

SysInternals PsGetSid wspiera teorię grupy dla SYSTEMU:

C:\>PsGetsid.exe S-1-5-18

PsGetSid v1.44 - Translates SIDs to names and vice versa
Copyright (C) 1999-2008 Mark Russinovich
Sysinternals - www.sysinternals.com

Account for YOURPCNAMEHERE\S-1-5-18:
Well Known Group: NT-AUTHORITY\SYSTEM

Jeśli chodzi o rozpoczęcie procesu jako grupa:

Aby zarządzać bezpieczeństwem, proces otrzymuje token dostępu . Token dostępu zawiera tylko identyfikatory SID. Nie jestem pewien, czy istnieje sprawdzenie, czy identyfikator SID użytkownika jest naprawdę użytkownikiem czy grupą. Zasadniczo nie miałoby to znaczenia: SID określa, do czego można uzyskać dostęp. Być może artykuł CodeProject może pomóc w implementacji

Thomas Weller
źródło