Muchas veces como administradores de dominio, nos podemos topar con situaciones que requieren ejecutar instrucciones de manera remota sobre un host de usuario, ya sea para realizar alguna configuración o para detectar algo sospechoso.
En esta entrada, veremos la forma de detectar si existen cuentas de administradores locales en un host de usuario final, usando Powershell.
¿Y para que serviría esto?
Recordemos que los atacantes buscan elevar privilegios cuando han comprometido un equipo, y con ello instalar programas para poder ganar persistencia, o desplazarse lateralmente por la red. Las cuentas de administrador local, pueden servir para este propósito, ya que no son cuentas administradas por el directorio activo, y generalmente son creadas por excepción o por una mala política de gestión de privilegios.
A continuación, te dejamos el código en Powershell:
Importante: Para que el código funcione, se debe tener permisos de ejecución remota de comandos en el equipo destino, por lo que se sugiere utilizar el script con una cuenta privilegiada (por ejemplo: Domain Admin) desde un servidor con llegada al host (por ejemplo, el propio Domain Controller)
$bit_deshabilitado = 0x0002
$equipo_remoto="WinNT://[NOMBRE DE EQUIPO USUARIO]/Administrators,group" #colocar el nombre de la máquina remota
[ADSI]$grupo=$equipo_remoto
$grupo.psbase.invoke("Members") | ForEach-Object {
$tipo=$_.GetType().InvokeMember("Class", 'GetProperty', $null, $_, $null)
$nombre=$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)
$flag=$_.GetType().InvokeMember("userflags", 'GetProperty', $null, $_, $null)
if ($flag -band $bit_deshabilitado) { $d="si" } else { $d="no" }
$obj = New-Object PSObject
$obj | Add-Member -Name "Equipo" -Value $equipo_remoto.Split("/")[2]
$obj | Add-Member -Name "Nombre" -Value $nombre
$obj | Add-Member -Name "Deshabilitado" -Value $d
$obj | Add-Member -Name "Tipo" -Value $tipo
write $obj
}

Con esta base, se puede optimizar el código para que reciba una lista de host de usuarios, y exportar los resultados a un archivo xlsx o csv. El cielo es el límite!
Nota: Esto también se puede realizar con herramientas comerciales, sin embargo, no es el objetivo de este artículo