Konta serwisowe są krytycznym elementem każdego środowiska informatycznego, używanym do wykonywania różnych zautomatyzowanych procesów. Jednocześnie konta te mogą stanowić poważne zagrożenie dla bezpieczeństwa, jeżeli nie są odpowiednio zarządzane i monitorowane. W tym artykule przyjrzymy się, jak znaleźć (i audytować) konta serwisowe w usłudze Active Directory (AD), gdyż nie jest to wcale takie proste.
Jak rozumieć konta serwisowe w AD?
Konta serwisowe to specjalne typy kont w usłudze Active Directory, które zapewniają kontekst bezpieczeństwa dla usług działających na serwerach Windows. Konta te mają unikalne uprawnienia domenowe i lokalne prawa dostępu, pozwalające im wykonywać określone zadania. Ze względu na podwyższone uprawnienia konta serwisowe mogą stać się głównymi celami atakujących. Warto więc zaopatrzyć się w odpowiedni nadzór nad tymi obiektami.
Konta serwisowe są zwykle używane do uruchamiania skryptów, zarządzania aplikacjami i usługami lub wykonywania innych zautomatyzowanych funkcji. W przeciwieństwie do zwykłych kont użytkowników nie są powiązane z żadną konkretną osobą – raczej służą jako środek interakcji usług i aplikacji z siecią. Są zaprojektowane tak, aby działać w tle bez konieczności interwencji człowieka.
Znalezienie kont serwisowych w środowisku AD
Wylistowanie kont serwisowych w Active Directory jest często złożonym zadaniem ze względu na ogromną liczbę kont i skomplikowaną naturę struktur AD, ale przede wszystkim dlatego, iż nie mamy żadnej odrębnej klasy obiektu, która rozróżnia na poziomie schematu AD konta zwykłych użytkowników (np. pracowników) od kont serwisowych.
Poszukiwania warto zacząć od poniższych kroków:
- Przejrzyj dokumentację. Zacznij od przejrzenia istniejącej dokumentacji lub list inwentarzowych, które mogą zawierać informacje o kontach. Takie listy często tworzone są przy okazji audytów domeny AD. Można na nich znaleźć nazwy kont, opisy i powiązane aplikacje lub skrypty.
- Użyj narzędzi Active Directory. Użyj wbudowanych narzędzi Microsoft, aby wyszukać konta. Jednym z powszechnie używanych narzędzi jest konsola Active Directory Users and Computers (ADUC). Otwórz ADUC, przejdź do swojej domeny i użyj funkcji wyszukiwania, aby filtrować konta o określonych atrybutach powszechnie kojarzonych z kontami do usług, np. tekst „ServiceAccount” w polu opisu czy fragment loginu „sa” lub „svc” itp.
- Sprawdź specjalne flagi na kontach. Konta serwisowe często mają ustawione specjalne flagi zmieniające ich zachowanie. Flagi te to na przykład „DONT_EXPIRE_PASSWORD” lub „PASSWORD_NOT_REQUIRED”. Możesz użyć poleceń PowerShell lub zapytań LDAP, aby wyszukać konta z zaznaczonymi takimi flagami.
- Sprawdź członkostwo w grupach. Konta serwisów często są członkami określonych grup zabezpieczeń, które przyznają im niezbędne uprawnienia do wykonywania zadań. Przejrzyj członkostwo w grupach takich jak np. „Domain Admins”, „Account Operators” czy „Server Operators”, ale też w innych posiadających podwyższone/oddelegowane uprawnienia na poziomie całej domeny.
- Poszukaj od strony aplikacji/usługi. Zidentyfikuj aplikacje lub usługi, które polegają na kontach serwisowych. Skonsultuj się z właścicielami aplikacji lub administratorami systemu, aby zebrać informacje o powiązanych kontach.
- Sprawdź atrybut SPN na kontach. Niektóre usługi, jak na przykład MS SQL Server, rejestrują w AD specjalną wartość na koncie serwisowym w polu SPN (ServicePrincipalName). Pozwala to na łatwe powiązanie konta z konkretną już usługą. W tym poradniku przedstawiono kilka metod, aby pobrać wszystkie konta z uzupełnionym atrybutem SPN z naszego środowiska.
- Odpytaj z PowerShell serwery w swojej domenie. jeżeli posiadasz uprawnienia i dostępy sieciowe do zdalnego odpytania o usługi każdego komputera w swojej sieci, to najlepszym rozwiązaniem będzie wykonanie takiego zapytania w PowerShell:
get-wmiobject win32_service -comp <nazwa bądź lista komputerów> -filter “startname like ‘%nazwa domeny%'” | select name, status, startname
Pozwoli to na wylistowanie wszystkich kont serwisowych ze wszystkich odpytanych serwerów. Oczywiście będą to tylko konta, na których działa jakakolwiek usługa. Konta użyte w skryptach, API czy wewnątrz aplikacji nie będą tutaj widoczne.
Co możemy zrobić, aby ułatwić zarządzanie kontami serwisowymi w AD?
Jak widzimy powyżej, określenie kryteriów i znalezienie w AD kont serwisowych to niełatwe zadanie. Możemy jednak podjąć kilka kroków, żeby je sobie ułatwić:
- Ujednolicić nazewnictwo kont używanych do obsługi serwisów, np. rozpoczynać nazwę od: sa_ lub svc-.
- Umieszczać konta serwisowe w specjalnie wybranym miejscu w strukturze AD.
- Korzystać z kont typu gMSA i MSA