PowerView & SharpView
Listado de Cmdlets utiles de las herramientas PowerView y SharpView para realizar operaciones y enumeración básica en Active Directory.
Usuarios
Cantidad de usuarios
(Get-DomainUser).count
Nombre de usuario al SID correspondiente
.\SharpView.exe ConvertTo-SID -Name joe.doe
Convertir SID a un nombre de usuario
.\SharpView.exe Convert-ADName -ObjectName S-1-5-21-2974783224-3764228556-2640795941-1724
Lista de usuarios
.\SharpView.exe Get-DomainUser -Domain hacklab.local
Usuarios vulnerables a ASREPRoast.
.\SharpView.exe Get-DomainUser -KerberosPreauthNotRequired -Properties samaccountname,useraccountcontrol,memberof
Get-DomainUser -KerberosPreauthNotRequired -Properties *
Usuarios con delegación restringida de Kerberos.
.\SharpView.exe Get-DomainUser -TrustedToAuth -Properties samaccountname,useraccountcontrol,memberof
Usuarios que permitan una delegación sin restricciones.
.\SharpView.exe Get-DomainUser -LDAPFilter "(userAccountControl:1.2.840.113556.1.4.803:=524288)"
Usuarios de dominio con datos confidenciales.
Get-DomainUser -Properties samaccountname,description | Where {$_.description -ne $null}
Usuarios vulnerables a Kerberoasting.
.\SharpView.exe Get-DomainUser -SPN -Properties samaccountname,memberof,serviceprincipalname
Finalmente, podemos enumerar cualquier usuario de otros dominios (extranjeros) con membresía en grupos dentro de cualquier grupo en nuestro dominio actual.
Find-ForeignGroup
Fecha de último cambio de contraseña
Get-DomainUser -Properties samaccountname,pwdlastset,lastlogon -Domain hacklab.local | select samaccountname, pwdlastset, lastlogon | Sort-Object -Property pwdlastset
Mostrar las contraseñas establecidas antes de una fecha determinada:
Get-DomainUser -Properties samaccountname,pwdlastset,lastlogon -Domain hacklab.local | select samaccountname, pwdlastset, lastlogon | where { $_.pwdlastset -lt (Get-Date).addDays(-90) }
Grupos
Obtener todos los grupos
Get-DomainGroup -Properties Name
Listar los miembros de un grupo específico.
.\SharpView.exe Get-DomainGroupMember -Identity "Help Desk" | Select-Object MemberName
Get-DomainGroupMember -Identity "Help Desk" | Select MemberName
Buscar todos los grupos AD con el AdminCount
atributo establecido en 1, lo que significa que se trata de un grupo protegido.
.\SharpView.exe Get-DomainGroup -AdminCount
Grupos locales
Get-NetLocalGroup -ComputerName HACKLAB | Select-Object GroupName
Enumerar los miembros del grupo local en cualquier host determinado usando el Get-NetLocalGroupMember
función.
.\SharpView.exe Get-NetLocalGroupMember -ComputerName HACKLAB
Computadoras
.\SharpView.exe Get-DomainComputer -Properties dnshostname,operatingsystem,lastlogontimestamp,useraccountcontrol
Podemos guardar estos datos en un CSV para nuestros registros usando PowerView
.
Get-DomainComputer -Properties dnshostname,operatingsystem,lastlogontimestamp,useraccountcontrol | Export-Csv .\inlanefreight_computers.csv -NoTypeInformation
ACLs (Access Control Lists)
Get-DomainObjectAcl -Identity joe.doe -Domain inlanefreight.local -ResolveGUIDs
GPO (Group Policy Object)
Listando las GPO
Get-DomainGPO | select displayname
También podemos comprobar qué GPO se aplican a una computadora específica.
Get-DomainGPO -ComputerName WS01 | select displayname
Última actualización