Musimy znać podstawy domeny. Część z nich poznaliśmy wcześniej w tym rozdziale, omawiając profilowanie użytkownika i komputera. Chociaż moduł ActiveDirectory PowerShell może być pomocny, często nie jest instalowany, więc przyjrzyjmy się, jak to zrobić, korzystając z interfejsów API usługi Active Directory w programie PowerShell. Te interfejsy API są dostępne we wszystkich systemach Windows i nie wymagają instalowania dodatkowych modułów, które mogłyby nas zdradzić. Na początek przyjrzyjmy się informacjom o domenie:
Tutaj możemy zobaczyć kilka krytycznych danych. Nazwa domeny to ghh.local, a jeden kontroler domeny (DC) jest również wymieniony, EC2AMAZTBKC0DJ. ghh.local. DomainModeLevel wynosi 7, co odpowiada poziomowi funkcjonalnemu systemu Windows 2016. Poziom funkcjonalny jest ważny, ponieważ funkcje bezpieczeństwa mogą działać inaczej na różnych poziomach funkcjonalnych. Następnie weźmy informacje, które uzyskaliśmy z polecenia whoami /user i sprawdźmy, jakie informacje o naszym użytkowniku znajdują się w AD:
Na podstawie tych wyników możemy zobaczyć grupy, do których należy nasz użytkownik, a także obiekty, którymi zarządza. Da nam to dodatkowy wgląd w typy rzeczy, do których użytkownik otrzymał uprawnienia na podstawie członkostwa w grupie, a zarządzane przez niego obiekty pomagają zidentyfikować dostęp, jaki może zapewnić innym kontom. Mając podstawową wiedzę o naszym użytkowniku i właściwościach domeny, przyjrzyjmy się bliżej układowi, uzyskując listę jednostek organizacyjnych (OU), które tworzą AD. Są one często opisowe i pomogą nam zrozumieć, gdzie szukać interesujących obiektów.
Stąd widzimy wbudowaną jednostkę organizacyjną kontrolerów domeny, ale widzimy również szereg jednostek organizacyjnych administratora i zagnieżdżonych jednostek organizacyjnych pod nimi. To są rzeczy, które zazwyczaj chcielibyśmy lepiej zrozumieć. Przyjrzyjmy się korzeniowi jednostek organizacyjnych administratora za pomocą programu PowerShell.
Widzimy, że oprócz Domain Admins i SYSTEM, grupa SC-266-distlist ma również prawa do tej grupy. Więc jeśli znajdziemy użytkownika w tej grupie, możemy użyć tego użytkownika do manipulowania obiektami w tej OU. Zobaczmy, kto jest w tej grupie:
UWAGA Ponieważ informacje dla każdego wdrożenia AD zostały losowo zmanipulowane przez BadBlood, Twoje grupy, użytkownicy i członkostwo mogą się różnić.
Zaczynamy od użycia System.DirectoryServices, aby uzyskać domenę (1), w której obecnie się znajdujemy. Musimy utworzyć obiekt DirectorySearcher (2), aby przeszukać Active Directory. Ten obiekt ma wszystkie metody, których będziemy potrzebować do wykonania naszego wyszukiwania. Następnie musimy wygenerować wyszukiwanie Lightweight Directory Access Protocol (LDAP), które będzie zawierało nasze informacje. Wyszukiwanie (3) używa operatora &, aby połączyć dwa różne terminy wyszukiwania: typ obiektu i nazwę wspólną (CN) obiektu, którego szukamy. Na koniec, po uzyskaniu elementu, którego szukamy, możemy przejrzeć właściwości (4) tego elementu, aby uzyskać członków grupy. Pomoże nam to w określeniu, kogo szukać później w celu eskalacji. Chociaż wykonywanie wszystkich tych zapytań bez użycia dodatkowych modułów jest przydatną umiejętnością, moduł PowerView w PowerSploit ma pomocnicze polecenia cmdlet, które mogą znacznie to ułatwić. Ponadto moduł PowerView ma dodatkowe polecenia cmdlet, które wyszukują luki w zabezpieczeniach.
UWAGA PowerSploit nie jest już utrzymywany, ale wielu testerów nadal go używa. Gdy aspekty modułów przestaną działać, prawdopodobnie nie zostaną naprawione, ale nie wszystkie funkcje modułów w PowerSploit zostały w pełni zintegrowane w porównywalnym module.