Menu dostępności

Backdoor w Active Directory? Część 5 – zdalne uruchomienie payload na serwerze terminali

W dzisiejszym artykule, kolejnym z serii Active Directory Persistance pokażemy, jak za pomocą modyfikacji odpowiednich wpisów na koncie użytkownika w Active Directory będziemy mogli odpalić plik binarny podczas zdalnej sesji (logowania się) do serwera terminali.


Zdalne wykonanie pliku binarnego (RCE) z poziomu Active Directory podczas zdalnego logowania się użytkowników do serwera terminali? Czemu nie?

Serwery terminali (Terminal Servers lub Remote Desktop Session Host (RDSH)) zdobyły dużą popularność w środowiskach informatycznych IT firm udostępniając dla pracowników możliwość zdalnego łączenie się wielu kont użytkowników do systemów i aplikacji. Używane są także przez administratorów do zdalnego łączenia się z serwerami docelowymi (zdalny pulpit) i zarządzania nimi. Co powiedziałbyś, gdyby podczas takiego logowania odpalał się payload na serwerze bez jakiejkolwiek ingerencji użytkownika? Jest to możliwe dzięki konfiguracji jednej z ciekawszych zakładek na użytkowniku w Active Directory o nazwie „Environment”. Metodę opisał na swoim blogu Justin Perdok w czerwcu 2020 i jej postanowiliśmy poświęcić poniższy artykuł.

Aby można było edytować ustawienia zakładki Environment wystarczy zdobyć odpowiednie uprawnienia w Active Directory do zapisu przynajmniej „GenericWrite” na koncie użytkownika, skonfigurować powyższe wpisy, a podczas logowania do terminal serwera uruchomi się payload.

Poniżej zamieszczamy skrypt, który pozwoli na wykonanie takich zmian:

W wyniku wykonania powyższego skryptu na użytkowniku Administrator zobaczymy poniższe wartości:

Po zalogowaniu się użytkownika Administrator na serwerze terminali z serwera o adresie IP 172.16.215.129 pobierze się lokalnie plik „payload.exe” i automatycznie wykona.


Diabeł tkwi w szczegółach

Oczywiście cała operacja ataku nie jest taka prosta do wykonania. Muszą być spełnione odpowiednie warunki:

  1. Server terminali, na który loguje się zdalnie użytkownik/administrator musi być serwerem w wersji nie nowszej niż Windows 2012 R2. W nowszych wersjach serwerów Microsoft ograniczył tę możliwość, ale poniżej wyjaśnimy, jak ją obejść.
  2. Konto użytkownika z uprawnieniami, które ustawi powyższe atrybuty dla użytkowników logujących się przez terminal server musi posiadać odpowiednie uprawnienia do ich zapisu na kontach użytkowników.

Istotna jest wersja Terminal Server

W systemie Windows Server 2012 R2 i starszych wersjach w momencie, gdy użytkownik loguje się na serwer z zainstalowaną rolą serwera terminali (TS) / hosta sesji usług pulpitu zdalnego (RDSH), proces Remote Connection Manager (RCM) kontaktuje się z kontrolerem domeny w celu wysłania zapytania o jego konfigurację konta i ustawień Pulpitu zdalnego. Ustawienia są następnie aplikowane są podczas procesu logowania użytkownika w celu dostosowania jego sesji (tzw. sesja terminalowa). Ustawienia te znajdziemy w zakładce „Remote Desktop Services Profile”.

Wiele nowoczesnych środowisk Active Directory odchodzi od konfiguracji tych atrybutów bezpośrednio na koncie użytkownika na rzecz ustawień poprzez GPO oraz kolekcji serwerów pulpitu zdalnego. Ustawienia te nie mogą być delegowane na poziome jednostki organizacyjnej (OU) lub grupy zabezpieczeń, lecz indywidualnie dla każdego obiektu. Dlatego Microsoft w nowych wersjach Windows (od 2016) prawdopodobnie zrezygnował z ich używania.

Oznacza to, że serwery z wersji Windows 2016 nie będą mogły korzystać z ustawień RCM.

RCM można jednak ponownie włączyć w systemie RDSH opartym na systemie Windows Server 2016 lub nowszym, tworząc następujące wpisy w rejestrze systemowym.

Klucz fQueryUserConfigFromDC o typie DWORD i watrości 1, w scieżcie HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\

oraz ten sam klucz w ścieżce:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\

Oczywiście w przypadku Windows 2016 dodanie powyższych wpisów do rejestru wymaga przejęcia uprawnień konta administratora na serwerze terminali. Plusem jest, że aby stały się aktywne nie wymagane jest ponowne uruchomienie serwera ani ponowne uruchomienie jego usług terminalowych. Oprócz skonfigurowania powyższych opcji musimy jeszcze wskazać (skonfigurować) jedną zakładkę „Environment”. To w niej wskażemy lokalizację, skąd ma być uruchomiony payload.

Podczas procesu logowania te wartości będą sprawdzane przez proces RCM i uruchamiane niezależnie od zdefiniowanego pliku wykonywalnego.


Wymagane uprawnienia do wykonania ataku

Może się zdarzyć sytuacja, w której znajdziemy użytkownika w Active Directory, który posiada uprawnienia zapisu atrybutów na atakowanych kontach. Takie uprawnienia może też przydzielić sobie atakujący w różny sposób np. opisywany w naszym poprzednim artykule Backdoor w Active Directory? Część 4 – przejęcie uprawnień poprzez AdminSDHolder

Jeśli nie mamy możliwości stworzenia backdoor’a z wymaganymi uprawnieniami, możemy przeszukać Active Directory w celu wystąpienia takich wpisów ACE, które pozwolą na zapis atrybutów na koncie użytkownika/lub administratora logującego się przez terminal serwer. Takie uprawnienia możemy wyszukać używając narzędzia PowerViewlub BloodHound. Jest jeszcze inna możliwość – napisanie własnego skryptu w VBScript lub PowerShell :).


Podsumowanie


Active Directory kryje w sobie wiele zagadek. Ich znajomość pozwala atakującym na bycie bezkarnym lub ułatwić sobie drogę do przeprowadzania ataku na środowisko. Powyższy artykuł pokazuje jeden z takich przykładów, w którym nieświadomy administrator w organizacji będzie mógł udostępnić tylną furtkę dla cyberprzestępcy i umożliwić proste przeprowadzenie ataku na środowisko.

Polecamy nasze inne części cyklu Active Directory Persistence:

  1. Backdoor w Active Directory? Część 1 – Utworzenie przyczółku
  2. Backdoor w Active Directory? Część 2 – ograniczone delegowanie uprawnień i przejęcie domeny
  3. Backdoor w Active Directory? Część 3 – dodanie komputera do domeny
  4. Backdoor w Active Directory? Część 4 – przejęcie uprawnień poprzez AdminSDHolder

Zachęcamy do udostępniania i komentowania artykułu na Facebook oraz na LinkedIn.

Popularne

Jak zmienić nieznane/zapomniane hasło Administratora na Windows?

Jak zmienić nieznane/zapomniane hasło Administratora na Windows?

W tym artykule pokażemy, jak możemy zmienić hasło administratora na komputerze posiadając do niego fizyczny dostęp. Artykuł ten można potraktować także jako przestrogę dla firm, które nie zaimplementowały jeszcze odpo...
Zero-day i groźna eskalacja uprawnień w systemie Windows –  analiza CVE-2025-59230 i ostrzeżenie CISA

Zero-day i groźna eskalacja uprawnień w systemie Windows –  analiza CVE-2025-59230 i ostrzeżenie CISA

Ostrzegamy wszystkie firmy i instytucje przed nowo ujawnioną luką w systemie Microsoft Windows – CVE-2025-59230. Jest to poważna podatność, umożliwiająca lokalnemu atakującemu z niskimi uprawnieniami uzyskanie...
Jak poznać hasło administratora lub użytkowników logujących się do Twojego komputera?

Jak poznać hasło administratora lub użytkowników logujących się do Twojego komputera?

Jeśli masz odrobinę szczęścia lub „odpowiednie umiejętności” i potrafisz zdobyć lokalne uprawnienia administracyjne na Twoim komputerze w firmie lub zaliczasz się do grona tych szczęściarzy, którzy pracuj...
Jak awaria Azure Front Door rzuciła cień na globalne usługi chmurowe

Jak awaria Azure Front Door rzuciła cień na globalne usługi chmurowe

W środę 9 października użytkownicy platformy Microsoft Azure na całym świecie doświadczyli poważnych zakłóceń. Wiele usług stało się niedostępnych, a administratorzy nie mogli nawet zalogować się do portalu...
Czego nie mówi Broadcom? Luka w VMware jest banalna do wykorzystania i korzysta z niej co najmniej jedna grupa hakerska!

Czego nie mówi Broadcom? Luka w VMware jest banalna do wykorzystania i korzysta z niej co najmniej jedna grupa hakerska!

Niedawno załatana wysoce poważna luka w zabezpieczeniach VMware jest wykorzystywana jako zero-day od października 2024 roku do wykonywania kodu z podwyższonymi uprawnieniami. Taką informacją podzieliło się w...