# 2. Domain Enumeration Part 3 - O2,3
¿Qué es la política de grupo?
La política de grupo brinda la capacidad de administrar la configuración y los cambios de manera fácil y central en el dominio.
La política de grupos permite configurar los ajustes de seguridad como la política de contraseñas, politica de grupos.
### Get list of GPO in current domain
#### PowerView
Get-NetGPO

Get-NetGPO -Computer dcorp-stdadmin.dollarcorp.moneycorp.local
Ver qué politicas se aplican en una máquina en particular, en este caso, a nuestra máquina(dcorp-stdadmin)

La política llamada "Students" se aplica en esta máquina.
Tambien se puede usar `gpresult /R`
Get-GPO -All (GroupPolicy module)
Get-GPResultantSetOfPolicy -ReportType Html -Path C:\Users\Administrator\report.html (Provides RSoP)
### Get GPO(s) which use Restricted Groups or groups.xml for interesting users
Para verificar los grupos restringidos que se aplican usando la política de grupo
Get-NetGPOGroup
Los grupos restringidos son aquellos grupos que se envían a través de la política de grupo y son parte de nuestro grupo local en su máquina.

### Get users which are in a local group of a machine using GPO
Find-GPOComputerAdmin -Computername dcorp-student1.dollarcorp.moneycorp.local
## Domain Enumeration - ACL

¿Cómo funciona el Control de Acceso en un entorno de dominio? Hay dos partes de cualquier acceso en un dominio, uno es el Token de Acceso y otro es el descriptor de seguridad.
Cada vez que un proceso quiere acceder a cualquier objeto en el dominio, presenta su token de acceso a ese objeto. ¿Qué tiene ese Token de acceso? Tiene la identidad del principio y los privilegios o identidad del usuario y el objeto al que el proceso intenta acceder tendrían descriptores de seguridad.
¿Qué descriptores de seguridad habría? Identificador de seguridad del propietario del objeto o acl, el cual tiene los permisos para acceder a un objeto y ciclo o sistema acl que controla la política de auditoría en ese objeto que no se cerró la sesión. Un éxito o fracaso de una escritura en particular, así es como funciona el modelo de control de acceso en un AD.

Security Descriptors: Es similar a lo que se tiene en una oficina para el control de acceso, por lo general, tendrá su identificación que será todo lo que ingresará mientras ingresa a la oficina. Esa identificación contiene su identidad y sus privilegios.
El objeto destino verifica los provilegios que afirma tener contra una lista de permisos que tiene para todos y cada uno de los objetos, esa lista de permisos DEL ACL.

* ¿Cómo enumeramos las ACL?
* Get the ACLs associated with the specified object
```
Get-ObjectAcL -SamAccountName student1 -ResolveGUIDs
```

ObjectDN: Es el nombre distinguido del objeto, que es el estudiante 1
IdentityReference: Es qué usuarios tiene permisos para administradores incorporados, esto nos dice que en el estudiante1, los administradores tienen ciertos permisos, estos permisos se pueden ver en ActiveDirectoryRights.
En este caso, los privilegios son muy altos sobre student1.
InheritedObjectType: "¿Este permiso se hereda o se implementa directamente?" En este caso se hereda
AccessControlType: Allow
ObjectSID
También podemos obtener ACLS asociados con el preijo especificado para que podamos usar algún nombre de cuenta o podemos usar el prefijo de perfil de anuncios, también es posible enumerar ACL usando el módulo de directorio Activo.
* We can also enumerate ACLs using ActiveDirectory module but without resolving GUIDs
```
(Get-Acl 'AD:\CN=Administrator,CN=Users,DC=dollarcorp,DC=moneycorp,DC=local').Access
```


* Get the ACLs associated with the specified prefix to be used for search
```
Get-ObjectAcl -ADSprefix 'CN=Administrator,CN=Users' -Verbose
```
También podemos usar el mismo objeto ACL que podemos, tambien use la opción ruta de anuncios para busca una asociación de ACL's con una ruta LDAP específica.
* Get the ACLs associated with the specified LDAP path to be used for search
```
Get-ObjectAcl -ADSpath "LDAP://CN=Domain Admins,CN=Users,DC=dollarcorp,DC=moneycorp,DC=local" -ResolveGUIDs -Verbose
```
* Search for interesting ACEs
```
Invoke-ACLScanner -ResolveGUIDs
```

* Get the ACLs associated with the specified path
```
Get-PathAcl -Path "\\dcorp-dc.dollarcorp.moneycorp.local\sysvol"
```
## Learning Objective 2:
Enumerate following for the dollarcorp domain:
- List all the OUs
- List all the computers in the StudentMachines OU.
- List the GPOs
- Enumerate GPO applied on the StudentMachines OU
1
Busque todas las unidades de organización (OU) u objetos de OU específicos en AD.
Las unidades organizativas son contenedores de Active Directory donde se pueden colocar usuarios, grupos, equipos y otras unidades organizativas.
```
Get-NetOU
```
2
Listar todas las computadoras en StudentMachines
```
Get-NetOU StudentMachines
Get-NetOU StudentMachines | %{Get-NetComputer -ADSPath $_}
```
3
Devuelve todos los GPOs u objetos de GPO específicos en AD.
```
Get-NetGPO
Get-NetGPO(Hacer que se muestre displayname y adspath)
```
4
Para enumerar GPO aplicado en la unidad organizativa StudentMachines
```
(Get-NetOU StudentMachines -FullData).gplink
Get-NetGPO -ADSpath 'LDAP://cn={3E04167E-C2B6-4A9A-8FB7-C811158DC97C},cn=policies,cn=system,DC=dollarcorp,DC=moneycorp,DC=local'
```
-----------------------
```
Get-NetGPOGroup
Get-NetGPOGroup -Verbose
```
-----
Devuelve los miembros de un grupo de dominio específico.
```
Get-DomainGroupMember
Get-NetGroupMember -GroupName RDPUsers
Get-NetGroupMember "RDPUsers"
```
## Learning Objective 3
● ACL for the Users group
● ACL for the Domain Admins group
● All modify rights/permissions for the student
1
Get-ObjectAcl
Devuelve las ACL asociadas con un objeto de directorio activo específico. De forma predeterminada, se devuelve la DACL para los objetos, pero la SACL se puede devolver con -Sacl
```
Get-ObjectAcl -SamAccountName "users"
Get-ObjectAcl -SamAccountName "users" -ResolveGUIDs
Get-ObjectAcl -SamAccountName "users" -ResolveGUIDs -Verbose
```
2
```
Get-ObjectAcl -SamAccountName "Domain Admins" -ResolveGUIDs -Verbose
```
3
```
Get-NetGPO | %{Get-ObjectAcl -ResolveGUIDs -Name $_.Name}
```
```
Get-NetGPO | %{Get-ObjectAcl -ResolveGUIDs -Name $_.Name} | ?{$_.IdentityReference -match "student"}
```