Andrea Bruschi, Cyber Security Analyst

Domain enumeration, parte 3

Published by Andy

Group Policy

Le group policy sono un insieme di regole che controllano l'ambiente di lavoro di utenti e computer. Forniscono la gestione centralizzata e la configurazione di sistemi operativi, applicazioni e le impostazioni degli utenti in un ambiente Active Directory. In altre parole, le group policy in parte controllano ciò che gli utenti possono o non possono fare su un sistema informatico, in maniera simile ai permessi di Unix. Anche se le group policy sono più spesso viste in uso per gli ambienti aziendali, sono anche comuni in altri ambiti come nelle scuole, nelle imprese più piccole e altri tipi di organizzazioni. Il criterio di gruppo è spesso utilizzato per limitare determinate azioni che possono rappresentare potenziali rischi di protezione, ad esempio: per bloccare l'accesso al Task Manager, limitare l'accesso a determinate cartelle, disabilitare il download di file eseguibili, disabilitare l'uso di unità esterne (penne USB, dischi ottici), disabilitare l'installazione di software e così via. (Fonte: Wikipedia)

Le Group Policy (GPO) possono essere sfruttare per vari attacchi di privilege escalation, installazione di backdoors in maniera centralizzata e distribuita, persistence etc.

Per l'enumerazione delle group policy possiamo utilizzare PowerView o il Group Policy module di Microsoft. A differenza del precedente modulo Active Directory, il GPO module potrebbe richiedere una shell con privilegi elevati.

Lista delle GPO nel dominio corrente

PowerView
PS C:\> Get-NETGPO
PS C:\> Get-NETGPO -ComputerName hostname.company.something.local
PS C:\> gpresult /R

GroupPolicy module
PS C:\> Get-GPO -All
PS C:\> Get-GPResultantSetOfPolicy -ReportType Html -Path C:\Users\Administrator\report.html (RSop)

GPOs che usano Restricted Groups o groups.xml per info interessanti sugli utenti

PowerView
PS C:\> Get-NETGPOGroup

Utenti in gruppo locale

PowerView
PS C:\> Find-GPOComputerAdmin -Computername hostname.company.something.local

Macchine in cui l'utente è membro di un guppo specifico

PowerView
PS C:\> Find-GPOLocation -UserName user1 -Verbose

Organizational Units in un dominio

PowerView
PS C:\> Get-NETOU -FullData

GroupPolicy module
PS C:\> Get-ADOorganizationalunit -Filter * -Properties *

GPO applicate ad un Organizational Units in un dominio

PowerView
PS C:\> Get-NETGPO -GPOname "{AB306569-220D-43FF-B03B-83E8F4EF8081}"

GroupPolicy module
PS C:\> Get-GPO -Guid AB306569-220D-43FF-B03B-83E8F4EF8081

Access Control Model

Access Control Model consente di controllare la capacità di un processo di accedere a oggetti protetti o di eseguire varie attività di amministrazione del sistema.

Un securable object è un oggetto che può avere un security descriptor. Un security descriptor contiene le informazioni di sicurezza associate ad un securable object. Un security descriptor è costituito da una struttura SECURITY_DESCRIPTOR e dalle informazioni di sicurezza associate che sono le seguenti:

  • Identificatori di sicurezza (SID) per il proprietario e il gruppo primario di un oggetto.
  • Un DACL che specifica i diritti di accesso consentiti o negati a particolari utenti o gruppi.
  • Una SACL che specifica i tipi di tentativi di accesso che generano record di audit per l'oggetto.
  • Un insieme di bit di controllo che qualificano il significato di un security descriptor o dei suoi singoli membri.

Tutti gli oggetti Windows denominati (named) sono protetti. Alcuni oggetti senza nome (unnamed), come gli oggetti di processo e thread, possono avere security descriptors. Per la maggior parte dei securable objects, è possibile specificare il security descriptor di un oggetto nella chiamata di funzione che crea l'oggetto. Ad esempio, è possibile specificare un descrittore di sicurezza nelle funzioni CreateFile e CreateProcess.

Inoltre, le funzioni di sicurezza di Windows consentono di ottenere e impostare le informazioni di sicurezza per i securable objects creati su sistemi operativi diversi da Windows.Tali funzioni supportano anche l'utilizzo di security descriptor con oggetti privati definiti dall'applicazione. Per ulteriori informazioni sugli oggetti di sicurezza privati, vedi Controllo accesso client/server.

Ogni tipo di securable object definisce il proprio insieme di diritti di accesso specifici e i diritti di accesso generici.

Di seguito alcuni securable objects comuni:

  • Files or directories on an NTFS file system.
  • Named pipes
  • Anonymous pipes
  • Processes
  • Threads
  • File-mapping objects
  • Access tokens
  • Window-management objects (window stations and desktops)
  • Registry keys
  • Windows services
  • Local or remote printers
  • Network shares
  • Interprocess synchronization objects (events, mutexes, semaphores, and waitable timers)
  • Job objects
  • Directory service objects

Access Control List (ACL)

E' una lista di Access Control Entry (ACE) che sono permessi individuali o di verifica degli accessi. L'immagine mostra ciò che di fatto è DACL, ogni voce è un ACE.

Questa immagine invece mostra SACL.

ACL associata ad un oggetto specifico

PowerView
PS C:\> Get-ObjectAcl -SamAccountName user1 -ResolveGUIDs

ACL associata ad un prefisso specifico

PowerView
PS C:\> Get-ObjectAcl -ADSprefix 'CN=Administrator,CN=Users' -Verbose

ACL associata ad un percorso LDAP

PowerView
PS C:\> Get-ObjectAcl -ADSpath "LDAP://CN=Domain Admins, CN=Users,DC=domaincontroller, DC=otherdcpart,DC=local" -ResolveGUIDs -Verbose

Cercare ACEs interessanti

PowerView
PS C:\> Invoke-ACLScanner -ResolveGUIDs

ACLs associate ad un percorso specifico

PowerView
PS C:\> Get-PathAcl -Path "\\hostname.domainc.domainc.local\sysvol"
This article is my 4th oldest. It is 798 words long