# 3. Domain Enumeration Part 4 - O4,5

Existen diferentes tipos de fidecomisos y diferentes formas en qeu se establecen, podrían ser automáticos, por ejemplo fidecomiso padre-hijo o un nodo raiz. Estas confianzas se establecen automaticamente dentro de un bosque o en los límites.
Cada confianza está representada por un objeto de dominio de confianza.
Tipos de confianza

La dirección de confianza
La direccion de acceso es inversa a la dirección de confianza. Un dominio confía en el dominio de confianza para permitir el acceso a sus recursos.
Existe la confianza unidireccional o bidireccional
True Transitivity
Una confianza se llama transitivo cuando se puede ampliar para establecer confianzas con otros dominios, por ejemplo, el dominio A tiene una transferencia bidireccional con el dom B, el dom B similar al dom C, Entonces el Dominio A confía en el dominio C.
También pueden haber confianzas no transitivas:

¿Qué tipos de fidecomisos existen?
Hay algunos fidecomisos predeterminados o automáticos. Todos los fidecomisos dentro del bosque, es decir la confianza dentro de un bosque, son automáticos
Para mapear estas confianzas:
Get a list of all domain trusts for the current domain
Powerview
```
Get-NetDomainTrust
Get-NetDomainTrust -Domain us.dollarcorp.moneycorp.local
```

Se ve que hay 3 relaciones de confianza
1ero: Relacion Padre-Hijo en donde `moneycorp.local` es nuestro dominio principal
2do: Relacion Padre-Hijo en donde `us.dollarcorp.moneycorp.local` es nuestro dominio secundario.
3ero: Confianza externa con `eurocorp.local`
Dado que son confianzas bidireccionales, podemos enumerar para nuestro dominio secundario o dominio principal

Modulo de AD
```
Get-ADTrust
Get-ADTrust -Identity us.dollarcorp.moneycorp.local
```


Información sobre el boque de red
- Get details about the current forest
Powerview
```
Get-NetForest
Get-NetForest -Forest eurocorp.local
```

Modulo AD
```
Get-ADForest
Get-ADForest -Identity eurocorp.local
```

Y también se puede enumerar cosas de un dominio confiable:

- Get all domains in the current forest
```
Get-NetForestDomain
Get-NetForestDomain -Forest eurocorp.local
```

- Get all global catalogs for the current forest
```
Get-NetForestCatalog
Get-NetForestCatalog -Forest eurocorp.local
```
- Map trusts of a forest
Obtenga cualquier confianza del modulo de directorio activo que mapea la confianza para el dominio actual
```
Get-NetForestTrust
Get-NetForestTrust -Forest eurocorp.local
```
## Learning Objective 4
* Map the trusts of the dollarcorp.moneycorp.local domain.
* Map External trusts in moneycorp.local forest.
* Identify external trusts of dollarcorp domain. Can you enumerate trusts for a trusting forest?
1. Enumere todos los dominios en el bosque moneycorp.local.
Get-NetForestDomain
Devuelve el objeto de bosque para el bosque actual (o especificado).

2. Asigne los fideicomisos del dominio dollarcorp.moneycorp.local
```
Get-NetDomainTrust
```
Devuelve todas los dominios de confianza para el dominio actual o un dominio específico.
Para mapear todos las confianzas del dominio dollarcorp:

Para mapear todos las confianzas del bosque moneycorp.local:
```
Get-NetForestDomain -Verbose | Get-NetDomainTrust
```

3. Mapa Fideicomisos externos en el bosque moneycorp.local
```
Get-NetForestDomain -Verbose
```

```
Get-NetForestDomain -Verbose | Get-NetDomainTrust
```

Para enumerar solo los fideicomisos externos:
```
Get-NetForestDomain -Verbose | Get-NetDomainTrust | ?{$_.TrustType -eq 'External'}
```

4. Identificar confianzas externos del dominio de dollarcorp. ¿Puede enumerar confianzas para un bosque que confía?
```
Get-NetDomainTrust
```

Para identificar confianzas externas del dominio de dollarcorp, podemos usar el siguiente comando:
```
Get-NetDomainTrust | ?{$_.TrustType -eq 'External'}
```

Dado que eso es una confianza bidireccional, podemos extraer información del bosque eurocorp.local. Vayamos a la última tarea y enumeremos las confianzas para el bosque eurocorp.local:
```
Get-NetForestDomain -Forest eurocorp.local -Verbose | Get-NetDomainTrust
```

```
Get-NetForestDomain -Forest eurocorp.local -Verbose
```

```
Get-NetForestDomain
```

Hasta ahora solo se estaba buscando desde el controlador de dominio, no se contactó con ninguna otra máquina en el dominio hasta ahora, lo que se hará en adelante en la parte de enumeración es lo que se llama búsqueda de usuarios, vamos a buscar usuarios específicos o privilegios para buscar oportunidades, movimiento lateral y también se estaría contactando con otras máquinas en el dominio. Esto ya es un poco intrusivo y no tan silencioso.
La primera función que se ve es encontrar acceso de administrador local.
Este script busca en todas las máquinas en el dominio actual donde el usuario actual tiene acceso de administrador local, digamos que obtiene una máquina de punto de apoyo por cualquier ataque del lado del cliente o cualquier cosa dentro de un dominio y su usuario local le gustaría ver el usuario del dominio con el que tiene privilegio o con el que está accediendo a su máquina footroll le gustaría comprobar si ese usuario tiene administrador local acceda a cualquier otra máuqina en el dominio.
La función solicita una lista de computadoras del DC y verifica si el usuario actual tiene acceso local de administrador en esa máquina en particular.

- Find local admins on all machines of the domain(needs administrator privs on non-dc machines).
```
Invoke-EnumerateLocalAdmin -Verbose
```
- This function queries the DC of the current or provided domain for a list of computers(Get-NetComputer) and the use multi-threaded Get-NetLocalGroup on each machine.
23:22
¿cual es la forma más facil o una de las formas más faicles de escalar los privilegios al administador de dominio? Una de las formas más populares y fpaciles es buscar una máquina donde esté disponible un token o credencial de administrador de dominio o una sesión esté disponible y tengamos privilegios de administrador local en esa máquina en particular.
Digamos que hay una máquina donde se establece una sesión de administración de dominio y si tenemmos privilegios de administrador local en ese cuadro, ¿qué daño podemos hacer? Podemos extraer las credenciales del administrador del dominio y escalar nuestros privilegios y por credenciales nos referimos a TDTS, NTLM Hashes o aes.
- Find computers where a domain admin (or specified user/group) has sessions:
```
Invoke-UsersHunter
Invoke-UsersHunter - GroupName "RPDUsers"
```
- This function queries the DC of the current or provided domain for members of the given group(Domain Admins by default) using Get-NetGroupMember, gets a list of computers (Get-NetComputer) and list sessions and logged on users (Get-NetSession/Get-NetLoggedon) from each machine.
- To confirm admin access
```
Invoke-UserHunter -CheckAccess
```
```
Invoke-UserHunter -Verbose
```

```
Find-LocalAdminAccess -Verbose
```

```
Find-WMILocalAdminAccess -ComputerFile .\computers.txt -Verbose
```

Nuestro usuuario actual tiene acceso de administrador local en esa máuqina en particular y en nuestra propia máquina tmb.
Defensa
Obtener una computadora de red es bastante similar a ir aquí y mirar las máquinas en la red o para un usuario es bastante similar a buscar o enumerar usuarios.
Podemos intentar bloquear o mitigar tales técnicas de enumeración por ejemplo para la caza de usuarios.
¿Cómo podemos hacer con el script llamado NetCease.ps1?
¿Cómo fue posible para nosotros decir enumerar sesiones en cada máuqina? Porque cada vez que iniciamos sesión en una máuina de unión de dominio obtenemos los privilegios del grupo de usuarios autenticados que no es un grupo, en realidad está en un principio de seguridad externo, obtenemos privilegios del grupo de usuarios autenticados para ejecutar la enumeración de sesión de red

Aplicando defensa para no enumerar



Revirtiendo configuracion de defensa

