PowerView — Enumerating AD Users
Conteo y exploración inicial
# Contar usuarios del dominio
(Get-DomainUser).count
(Get-DomainUser -Domain INLANEFREIGHT.LOCAL).count
# Ver ayuda de un comando en SharpView
.\SharpView.exe Get-DomainUser -HelpPropiedades clave de un usuario
Get-DomainUser -Identity harry.jones -Domain inlanefreight.local | Select-Object -Property name,samaccountname,description,memberof,whencreated,pwdlastset,lastlogontimestamp,accountexpires,admincount,userprincipalname,serviceprincipalname,mail,useraccountcontrolExportar todos los usuarios a CSV
Get-DomainUser * -Domain inlanefreight.local | Select-Object -Property name,samaccountname,description,memberof,whencreated,pwdlastset,lastlogontimestamp,accountexpires,admincount,userprincipalname,serviceprincipalname,mail,useraccountcontrol | Export-Csv .\inlanefreight_users.csv -NoTypeInformationÚtil para procesar todo el dominio de una vez y trabajar offline con los datos.
Búsquedas específicas por atributos de seguridad
ASREPRoasteables
.\SharpView.exe Get-DomainUser -KerberosPreauthNotRequired -Properties samaccountname,useraccountcontrol,memberof
Get-DomainUser -PreauthNotRequired | select samaccountname,useraccountcontrol,memberofConstrained Delegation (TrustedToAuth)
.\SharpView.exe Get-DomainUser -TrustedToAuth -Properties samaccountname,useraccountcontrol,memberof
Get-DomainUser -TrustedToAuth | select samaccountname,memberofUnconstrained Delegation
.\SharpView.exe Get-DomainUser -LDAPFilter "(userAccountControl:1.2.840.113556.1.4.803:=524288)"
Get-DomainUser -LDAPFilter "(userAccountControl:1.2.840.113556.1.4.803:=524288)" | select samaccountname,memberofContraseñas en campo description
Get-DomainUser -Properties samaccountname,description | Where {$_.description -ne $null}Es muy común encontrar contraseñas o notas sensibles en este campo ya que es visible para todos los usuarios del dominio.
Usuarios con SPN (Kerberoasteables)
.\SharpView.exe Get-DomainUser -SPN -Properties samaccountname,memberof,serviceprincipalname
Get-DomainUser * -spn | select samaccountname,serviceprincipalnameUsuarios admin con SPN (alto impacto)
Get-DomainUser -AdminCount -SPN | select samaccountname,serviceprincipalnameCombinar adminCount=1 con SPN es el escenario ideal para Kerberoasting porque crackear el hash te da credenciales de una cuenta privilegiada.
Usuarios con SPN en otro dominio (cross-forest Kerberoasting)
Get-DomainUser -SPN -Domain freightlogistics.local | select samaccountname,memberof,serviceprincipalname | flUsuarios foráneos en grupos del dominio actual
# Buscar grupos con miembros de otros dominios
Find-ForeignGroup
# Resolver el SID del miembro foráneo a nombre legible
Convert-SidToName S-1-5-21-888139820-103978830-333442103-1602Si un usuario de otro dominio aparece como miembro de un grupo privilegiado en tu dominio, al hacer DCSync obtienes sus credenciales y puedes autenticarte al dominio remoto directamente.
Análisis de fechas de contraseñas — Password Spray Intel
Antes de lanzar un spray es crítico analizar pwdlastset para no bloquear cuentas y maximizar resultados.
# Ver todos los pwdlastset ordenados de más antiguo a más reciente
Get-DomainUser -Properties samaccountname,pwdlastset,lastlogon -Domain InlaneFreight.local | select samaccountname,pwdlastset,lastlogon | Sort-Object -Property pwdlastset
# Cuentas con contraseña sin cambiar en más de 90 días
Get-DomainUser -Properties samaccountname,pwdlastset,lastlogon -Domain InlaneFreight.local | select samaccountname,pwdlastset,lastlogon | where { $_.pwdlastset -lt (Get-Date).addDays(-90) }
# Más de 365 días
Get-DomainUser -Properties samaccountname,pwdlastset,lastlogon -Domain InlaneFreight.local | select samaccountname,pwdlastset,lastlogon | where { $_.pwdlastset -lt (Get-Date).addDays(-365) }Patrones que indican oportunidades:
Varias cuentas con pwdlastset en la misma fecha y hora indican reset masivo por Help Desk, probablemente con la misma contraseña temporal como Empresa2023! o Welcome1.
Contraseñas con más de 1-2 años sin cambiar suelen ser débiles o seguir un patrón predecible. Son las primeras a probar antes de un spray masivo.
Si el administrador cambió su cuenta personal y su cuenta admin en fechas similares, probablemente usan la misma contraseña.
Cuentas con lastlogon muy antiguo o nunca usadas pueden ser cuentas de servicio olvidadas con contraseñas débiles o por defecto.