martes, 28 de marzo de 2017

Powershell script - Cambio de contraseña de administrador local 2/2

Siguiendo con la entrada anterior, publico a continuación el script que deberá ser lanzado vía sccm u otros, de forma local en los equipos por mediante un usuario que tenga permiso de acceso a los archivos que hemos generado con nuestro script que comento también en la entrada anterior.

Como comenté, el script modifica la contraseña del usuario con ID 0, el cual, ya que si fuésemos a buscar el usuario Administrador o Administrator, este podría haber sido nombrado y fallaríamos en nuestro intento.

Personalización:

El script requiere ser personalizado en la linea 1 y 2, donde pondremos la ruta correcta de los archivos.

Script:

$PasswordFile = "c:\temp\Password.txt"
$KeyFile = "c:\temp\AES.key"
$key = Get-Content $KeyFile
$pwd= get-content $passwordfile | Convertto-SecureString -Key $Key
$userlist = get-wmiobject win32_useraccount
$localadm=$userlist[0].caption.replace(“\”,”/”)
$objUser = [ADSI]"WinNT://$localadm, user"
$decodedpassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pwd))
$objUser.psbase.Invoke("SetPassword", $decodedpassword)
$objuser.psbase.CommitChanges()

Script Powershell para el cambio de contraseña local de usuario administrador 1/2

Hola.

Es común encontrar una gpo a través de la cual cambiamos la contraseña del usuario administrador local en los equipos de nuestro dominio, sin embargo, este proceso no es nada seguro y cualquier auditor de seguridad va directamente a por él, colocándonos un colorcito rojo en las cosas que tenemos que cambiar antes de la siguiente auditoría.

Pues bien, para ello he realizado dos scripts, este primero que os presento cifrará la contraseña que queremos poner y la guardará en un archivo txt de forma cifrada.

También tendremos un archivo que guardará la clave de cifrado que hemos usado para cifrar. Yo, lo que haría, sería ubicar ambos archivos en un carpeta de red compartida de forma oculta a la que sol tuviese acceso el usuario que vía sccm u otros, va a lanzar el proceso de cambio. Usuario que por supuesto, ha de pertencer al grupo builtin\administrators del dominio o ser administrador local de los equipos del parque por otras vías.

Cabe destacar que este script ha de ser lanzado por el personal de IT cada vez que queremos generar un archivo txt con una clave diferente, o mejor dicho, cada vez que queremos cambiar la clave de administrador de los equipos.

Personalización del script:

- Debéis modificar la linea 2 y linea 8 cambiando las rutas donde almacenar los archivos.

Contenido del script:

#generamos archivo .key
$KeyFile = "C:\Temp\AES.key"
$Key = New-Object Byte[] 16   # podemos usar 16, 24, or 32 for AES
[Security.Cryptography.RNGCryptoServiceProvider]::Create().GetBytes($Key)
$Key | out-file $KeyFile

#generamos archivo .txt y guardamos contraseña en él.
$PasswordFile = "c:\temp\Password.txt"
$Key = Get-Content $KeyFile
$Password = "Abcd123456" | ConvertTo-SecureString -AsPlainText -Force
$Password | ConvertFrom-SecureString -key $Key | Out-File $PasswordFile