private-property-rightsstruktura AD to żywy organizm, który ewoluuje, ulegając ciągłym modyfikacją – nowi użytkownicy, wycofanie kont… ale również nowi administratorzy i delegacje do poszczególnych gałęzi etc. jak każde środowisko – i to ulega zaśmieceniu. jak każdy bałagan – może to stanowić osłabienie bezpieczeństwa, głównie z powodu jakiś zapomnianych uprawnień. ktoś-gdzieś-kiedyś nadał uprawnienia kontu serwisowemu lub grupie do modyfikacji obiektów, czas leci, a AD nie daje możliwości łatwej weryfikacji nadanych uprawnień. przy złożonej strukturze drzewa, często zostają dziury w postaci niekontrolowanego dostępu na podwyższonych przywilejach.

jak zatem to szybko odczytać? SOA#1 czyli – PowerShellem. podstawowy skrypt jest dość trywialny, ponieważ PS dysponuje możliwością łatwego odpytania się o jednostki organizacyjne oraz odczytanie uprawnień. co więcej – cały kod można uruchomić jako najzwyklejszy user [oczywiście w standardowej konfiguracji]. jedyne, co trzeba na stacji doinstalować to moduł ActiveDirectory [RSAT]. cały problem natomiast, sprowadza się do wyszukania uprawnień, które nie są dziedziczone tylko nadane niezależnie – bo na tym przecież polega delegacja:

to oczywiście zarys, skrypt napisany ‚na kolanie’. diabeł leży w szczegółach, więc aby przygotować całe narzędzie trochę walki będzie. a ten diabeł to głównie filtrowanie wyników:

  • w AD jest spora grupa uprawnień niedziedziczonych, nadawanych podczas promocji DC – nazwijmy je ‚standardowymi’. mamy więc dwa wyjścia – albo sobie obrobić plik po wypluciu, albo napisać kawałek kodu, który te uprawnienia przefiltruje. może nie jest to super-trudne, ale przyjemne do napisania na pewno też nie jest.
  • z takich ‚standardowych uprawnień’, po testach w kilq domenach zauważyłem, że powtarzają się:

  • grupy, których SIDy się tutaj nie rozwiązują to Account Operators i Print Operators. warto zwrócić, że to SIDy lokalne a nie domenowe.
  • w niektórych domenach, potrafił te SIDy rozwiązać O_o
  • output powinien być w postaci ładnego obiektu, żeby wyexportować do CSV do dalszej prezentacji i obróbki.
  • get-acl nie ma opcji NIE-rozwiązywania SIDów na nazwy więc trzeba je z powrotem sprawdzać przy porównaniach /:

eN.