Security Identifier w systemach Windows Udostępnij na: Facebook

Autor: Joanna Subik

Opublikowano: 2011-03-17

Wstęp

Z terminem SID (Security Identifier – identyfikator zabezpieczeń) zetknął się przynajmniej raz każdy administrator systemu Windows. Zazwyczaj też każdy wie, że jest on reprezentacją numeryczną każdego podmiotu zabezpieczeń, który został określony bądź utworzony w ramach systemu. Wiadomo także, że jest on unikalny – składa się z długiego ciągu cyfr.  Zdarza się jednak, że wiedza na temat znaczenia poszczególnych sekwencji tego ciągu pozostaje większą lub mniejszą niewiadomą. Niniejszy artykuł ma na celu przybliżenie pojęcia SID, omówienie jego poszczególnych komponentów oraz ułatwienie szybkiego rozpoznania, z jakim SID-em ma do czynienia administrator. Wskazane zostanie również kilka narzędzi pozwalających na enumerację identyfikatora zabezpieczeń.

Definicja SID

Podmiot zabezpieczeń to jednostka, która może posiadać identyfikator zabezpieczeń SID (Security Identifier). Mówiąc jaśniej, SID to numeryczna reprezentacja podmiotu zabezpieczeń, a dokładniej 48-bitowa, unikalna liczba używana przez system operacyjny do wykorzystywania wewnętrznych operacji, np. sprawdzania, czy dany podmiot zabezpieczeń ma odpowiednie uprawnienia do wybranego obiektu. Podczas nadawania uprawnień do nowego obiektu użytkownikowi, grupie czy usłudze itp., system operacyjny zapisuje SID oraz odpowiednie uprawnienie na liście kontroli dostępu ACL (ang. Access Control List) przypisanej do tego obiektu.

Komponenty SID

SID zawsze rozpoczyna się literą S, która określa dany element jako SID. Zawsze również kończy się względnym identyfikatorem zabezpieczeń (Relative ID – RID). Pomiędzy tymi ciągami znaków mogą (ale nie muszą) występować różne źródła uwierzytelnienia. Drugą wartością w identyfikatorze SID jest wersja (ang. Revision Level), która obecnie wynosi zawsze 1. Hierarchia składowych komponentów SID została przedstawiona na rysunku 1.

Rys. 1. Hierarchia składowych komponentów SID.

Uwierzytelnienia SID (Identifier Authority)

Po prefiksie SID następuje reszta SID, przyjmująca wiele różnych form. Zawsze jednak rozpoczyna się identyfikatorem uwierzytelniającym wskazującym, która jednostka go wystawiła. Tabela 1 przedstawia obecnie używane identyfikatory uwierzytelniania:

Identyfikator uwierzytelnienia Opis
0 SECURITY_NULL_SID_AUTHORITY. Używane do porównywania, gdy identyfikator uwierzytelniający jest nieznany.
1 SECURITY_WORLD_SID_AUTHORITY. Używane do tworzenia SID reprezentujących wszystkich użytkowników. Na przykład SID dla grupy Everyone ma postać S-1-1-0; tworzony przez dodanie WORLD RID (0) do tego identyfikatora i wybrania w ten sposób wszystkich użytkowników z danego uwierzytelnienia.
2 SECURITY_LOCAL_SID_AUTHORITY. Używane do tworzenia SID reprezentujących użytkowników zalogowanych do lokalnego terminala.
3 SECURITY_CREATOR_SID_AUTHORITY. Używane do tworzenia SID reprezentujących twórcę lub właściciela obiektu. Na przykłąd CREATOR OWNER SID to S-1-3-0, tworzony przez dodanie RID twórcy-właściciela (także 0) do tego uwierzytelnienia identyfikatora. Jeśli S-1-3-0 jest używane w dziedziczonym ACL, w obiekcie potomnym, który odziedziczył ten ACL, zostanie zastąpiony przez SID właściciela. Sekwencja S-1-3-1 oznacza CREATOR GROUP SID i ma takie samo działanie, lecz przejmuje SID podstawowej grupy twórcy.
5 SECURITY_NT_AUTHORITY. System operacyjny sam w sobie. SID rozpoczynające się od S-1-5 są wydawane przez komputer lub domenę. Większość spotykanych SID rozpoczyna się sekwencją S-1-5.

Tabela 1. Obecnie używane identyfikatory uwierzytelniania.

Po identyfikatorze uwierzytelniającym SID zawiera kilka numerów dalszych uwierzytelnień. Ostatni z nich nazywany jest identyfikatorem względnym (RID). Jest on oznaczeniem unikatowym podmiotu zabezpieczeń w sferze, w której został zdefiniowany przez dany SID.

Tabela 2 przedstawia najczęściej spotykane, dobrze znane dalsze uwierzytelnienia, określane kolejno po zdefiniowaniu pierwszego identyfikatora uwierzytelnienia.

Dalsze uwierzytelnienie Opis
5 SID są wydawane dla sesji logowania, aby włączyć uprawnienia nadawane każdej aplikacji uruchomionej w konkretnej sesji. Te SID mają pierwsze dalsze uwierzytelnienie ustawione na 5 i przybierają formę S-1-5-5-x-y.
6 Gdy proces loguje się jako usługa, dostaje w swoim żetonie specjalny SID informujący o tym fakcie. Takie SID mają wartość dalszego uwierzytelnienia równą 6 i zawsze rozpoczynają się od sekwencji S-1-5-6.
21 SECURITY_NT_NON_UNIQUE. Wskazuje użytkownika i komputer danego SID, których powszechna unikatowość nie jest gwarantowana.
32 SECURITY_BUILTIN_DOMAIN_RID – określa wbudowane SID domenowe. Na przykład dobrze znany SID dla wbudowanej grupy Administrators to 1-5-32-544.
80 SECURITY_SERVICE_ID_BASE_RID – wskazuje SID usługi.

Tabela 2. Najczęściej spotykane dobrze znane dalsze uwierzytelnienia.

Rozpatrzmy przypadek następującego SID: S-1-5-21-1534169462-1651380828-111620651-500

SID rozpoczyna się sekwencją S-1-5, co pozwala wnioskować, iż został on wydany przez system Windows. Jego pierwszym źródłem uwierzytelnienia jest 21, co zgodnie z danymi zawartymi w tabeli 2 oznacza, że nie jest zagwarantowana bezwzględna unikatowość tego SID. Będzie on jedyny w swojej domenie, jednak w świecie komputerów istnieje prawdopodobieństwo wystąpienia innego SID o dokładnie takiej samej wartości. Pierwszym uwierzytelnieniem podrzędnym jest często dobrze znane dalsze uwierzytelnienie (well-knownsub-authority). Tabela 2 przedstawia listę najczęściej spotykanych znanych dalszych uwierzytelnień.

Przykładowy SID ma dodatkowe dalsze uwierzytelnienia: 1534169462-1651380828-111620651. Same w sobie nie mają konkretnego znaczenia, jednak razem wskazują domenę lub komputer, który wydał ww. SID. W rzeczywistości SID dla domeny to S-1-5-21-1534169462-1651380828-111620651 i wszystkie SID wydane w tej konkretnej domenie będą rozpoczynały  się takową sekwencją, a zakończą się RID (identyfikatorem względnym), unikatowym dla wskazywanego użytkownika lub komputera. W opisywanym przypadku SID kończy się liczbą 500, co odpowiada RID, który określa wbudowane konto Administrator. Inne popularne RID to np. 501 dla wbudowanego konta Gość, lub RID 502 – definiujący usługi KerberosTicketGrantingTicket (krbtgt).

SID usług

Jak już wspomniano wcześniej, w systemach klasy Windows od wersji Windows Vista (a więc Vista, Windows 7, Windows Server 2008 i Windows Server 2008 R2) także usługi mają własne SID. Identyfikatory usług zawsze rozpoczynają się od sekwencji 1-5-80 i kończą numerem dalszego uwierzytelniania, który jest zależny od nazwy określonej usługi. Oznacza to, że konkretna usługa ma ten sam numer SID na wszystkich komputerach, a co za tym idzie – możliwe jest uzyskanie SID dowolnej usługi. Aby sprawdzić, jaki byłby numer SID dla usługi dnsclient, należy wykonać polecenie scshowsiddnsclient, co przedstawiono na rysunku 2.

Rys. 2. Określanie SID dla zadanej usługi.

 

Warto zwrócić uwagę na implikację, która wynika z powyższego faktu: na każdym serwerze, gdzie zostanie wykonane zapytanie o określoną usługę,  wynik okaże się jednakowy.

Dobrze znane SID

Podczas pisania programów pod system Windows lub prób enumeracji systemu czy też przeprowadzania audytów często przydaje się znajomość SID pewnych podmiotów zabezpieczeń. Zazwyczaj SID są tworzone w prosty sposób – konieczna jest jedynie znajomość RID, ponieważ jest on dodawany do SID komputera lub domeny (tak jak w przypadku konta Administrator, które zostało omówione w przykładzie powyżej). Często jednak wygodniej posługiwać się krótszymi i niezmiennymi formami pewnych SID. W tym celu model zabezpieczeń wykorzystywany w systemach Windows zawiera pewną liczbę dobrze znanych SID – identyfikatorów, które są identyczne na każdym komputerze. Numery te rozpoczynają się od S-1-1, S-1-2 lub S-1-3, tak jak kilka wcześniej omówionych – CREATOR OWNER SID: S-1-3-0. Tabela nr 3 przedstawia ponadto kilka najpopularniejszych identyfikatorów RID, których znajomość może być przydatna:

RID Opis
500 Administrator
501 Guest (Gość)
502 Krbtgt (Kerberos Ticket Granting Ticket)
512 Domain Admins (Administratorzy Domeny)
513 Domain Users (Użytkownicy Domeny)
514 Domain Guests (Goście Domeny)
515 Domain Computers (Komputery Domeny)
516 Domain Controllers (Kontrolery Domeny)
544 Built-In Administrators (Administratorzy Wbudowani)
545 Built-In Users (Użytkownicy Wbudowani)
546 Built-In Guests (Goście Wbudowani)
>1000 RID dla kont użytkowników

Enumeracja SID

Dla ułatwienia enumeracji SID (do celów adytu czy wykonywania zwykłych czynności administracyjnych) można posłużyć się narzędziami opisanymi poniżej.

Narzędzia User2SID oraz SID2User zostały stworzone przez EvgeniiRudnyi i służą do podglądania SID dowolnego użytkownika w domenie lub komputerze, które znajdują się w sieci. Oczywiście nic nie stoi na przeszkodzie, by uruchomić narzędzie również na lokalnej maszynie, która nie jest podłączona do sieci, jednak znacznie ogranicza to możliwości wyszukiwania SID użytkownika do jednej maszyny. Można również określić nazwę użytkownika, mając jako daną jedynie wartość jego SID. Działanie narzędzia User2SID przedstawia rysunek 3.

Rys. 3. Wynik działania narzędzia User2SID.

 

W przypadku użycia drugiego z wymienionych narzędzi (SID2User) trzeba pamiętać o odpowiednim przekonwertowaniu otrzymanego identyfikatora SID – należy usunąć literę S oraz cyfrę odpowiadającą za numer wersji (1). Inaczej mówiąc, wpisany SID musi zaczynać się od pierwszego identyfikatora uwierzytelnienia, należy też usunąć myślniki rozdzielające kolejne dalsze uwierzytelnienia. Poprawnie przekonwertowany SID oraz działanie aplikacji zostało przedstawione na rysunku 4.

Rys. 4. Wynik działania narzędzia SID2User.

Narzędziem o podobnym działaniu jak dwie powyżej omówione aplikacje jest PsGetSID – narzędzie wchodzące w skład pakietu SysInternals, autorstwa Marka Russinovicha. Dokonuje ono translacji identyfikatora SID na nazwę podmiotu zabezpieczeń i odwrotnie. Operacja ta została przestawiona na rysunku 5.

Rys. 5. Wynik działania narzędzia PsGetSID.

 

Podsumowanie

Celem niniejszego artykułu było przedstawienie budowy identyfikatorów zabezpieczeń używanych w systemach Windows, przybliżenie tego pojęcia oraz ułatwienie szybkiego rozpoznania, z jakiego rodzaju SID ma do czynienia administrator. Przedstawiono również klika narzędzi pozwalających na enumerację SID zarówno do przeprowadzania audytów, jak i wykonywania codziennych czynności administracyjnych.