Partage
  • Partager sur Facebook
  • Partager sur Twitter

Déploiement d'un admin local avec windows serveur

Sujet résolu
    7 septembre 2017 à 14:38:26

    Bonjour,

    Je suis confronté à un problème et mes connaissances étant limitées je fait appel à vous.

    J'ai un AD sous windows serveur 2012 r2, et on me demande de déployer sur toutes les machines du réseau une session locale, qui soit administrateur et sans que le mot de passe ne soit envoyé en clair.

    Si possible on aimerait éviter d'avoir à déployer des logiciels sur les postes clients comme le propose LAPS.

    Créer une GPO pour cela n'est maintenant plus possible, car le mot de passe ne peux plus être envoyé via les GPO (bloqué par Microsoft).

    Je pensait passer par un script qui me créerais un fichier avec le mot de passe crypté que je mettrais dans un dossier partagé avec des droits restreints pour que seuls les administrateurs du domaine et le système puissent y avoir accès, et de déployer par gpo un script qui décrypterais le fichier du mot de passe et qui aurais créé dans la foulée un compte administrateur local.

    J'ai passé une journée de recherche sur tout type de sites, j'ai testé plusieurs scripts trouvés et modifié avec les informations d'un réseau virtuel, mais rien ne fonctionne vraiment.

    Voici un exemple d'un script qui se rapproche le plus de ce que je recherche:

    script de création du mot de passe crypté:

    $LocalAdminPW = "azerty@1" #the password that is used to set as the local admin password
    $EncryptionPW = "azerty@2" #password to encrypt and decrypt the password
    $File = "C:\Temp\Password.tsv" #file to create
    
    #Create encryption key
    $Sha256 = new-object System.Security.Cryptography.SHA256CryptoServiceProvider
    $SecureStringKey = $Sha256.ComputeHash([System.Text.UnicodeEncoding]::Unicode.GetBytes($EncryptionPW))
    
    #Encrypt the password with the user supplied encryption password
    $PasswordSecureString = ConvertTo-SecureString -AsPlainText -Force -String $LocalAdminPW
    
    #Create TSV-File with the encrypted password
    ConvertFrom-SecureString -Key $SecureStringKey -SecureString $PasswordSecureString | Out-File -Force -FilePath "$File"
    
    #Gathering the new encrypted password for the local administrator account
    $LocalAdminPW = Get-Content $File



    script de décryptage et de création de l'utilisateur:

    #function to get decrypted password
    Function Get-DecryptedPassword {
        [CmdletBinding()]
        param(
            $EncryptedPW,
            $LocalAdminPW
        )
    
        #Decrypt the password with the user supplied encryption password
        $Sha256 = new-object System.Security.Cryptography.SHA256CryptoServiceProvider
        $SecureStringKey = $Sha256.ComputeHash([System.Text.UnicodeEncoding]::Unicode.GetBytes($EncryptionPW))
        [SecureString]$SecureStringPassword = ConvertTo-SecureString -String $LocalAdminPW -Key $SecureStringKey
        return ([System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToCoTaskMemUnicode($SecureStringPassword)))
    }
    
    #Change password local admin account
    
    $userAccounts = "admin-local"
    $objUser.psbase.Invoke("SetPassword", (Get-DecryptedPassword -EncryptedPW $EncryptionPW  -LocalAdminPW $LocalAdminPW))
    
    $vm = [ADSI]"WinNT://$env:computername,computer"
    $group = [ADSI]"WinNT://$env:computername/administrators,group"
    $count = 0
    
    $userAccounts | ForEach-Object {
        $User = $vm.Create("User","$_")
        $User.SetPassword($passwords[$count])
        $User.SetInfo()
        $group.Add("WinNT://$env:computername/$_,Administrateurs")
        $count++
    }
    
    #$LocalAdmin = "Administrateur"
    #$objUser = [ADSI]"WinNT://localhost/$($LocalAdmin), user"
    #$objUser.psbase.Invoke("SetPassword", (Get-DecryptedPassword -EncryptedPW $EncryptionPW  -LocalAdminPW $LocalAdminPW))




    3 lignes me font des erreurs, quand je test les scripts avant de les intégrers dans une GPO:

    la ligne:

    $objUser.psbase.Invoke("SetPassword", (Get-DecryptedPassword -EncryptedPW $EncryptionPW  -LocalAdminPW $LocalAdminPW))

    me fait l'erreur:

    Impossible d’appeler une méthode dans une expression Null.
    Au caractère C:\Users\test1\Desktop\decryptPassCreateAdmin.ps1:19 : 1
    + $objUser.psbase.Invoke("SetPassword", (Get-DecryptedPassword -Encrypt ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation : (:) [], RuntimeException
        + FullyQualifiedErrorId : InvokeMethodOnNull


    la ligne:

        $User.SetInfo()

    me fait l'erreur:

    Exception lors de l'appel de «SetInfo» avec «0» argument(s): «Ce mot de passe ne correspond pas aux critères de stratégie de mot de passe. Vérifiez la longueur de mot de
    passe minimale, la complexité du mot de passe et l’historique des critères de mots de passe.
     »
    Au caractère C:\Users\test1\Desktop\decryptPassCreateAdmin.ps1:28 : 5
    +     $User.SetInfo()
    +     ~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

    la ligne:

        $group.Add("WinNT://$env:computername/$_,Administrateurs")

    me fait l'erreur:

    L'exception suivante s'est produite lors de la récupération du membre « Add » : « Le nom de groupe est introuvable.
     »
    Au caractère C:\Users\test1\Desktop\decryptPassCreateAdmin.ps1:29 : 5
    +     $group.Add("WinNT://$env:computername/$_,Administrateurs")
    +     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [], ExtendedTypeSystemException
        + FullyQualifiedErrorId : CatchFromBaseGetMember

    Merci pour votre aide :)

    -
    Edité par lyon-metal 7 septembre 2017 à 15:36:09

    • Partager sur Facebook
    • Partager sur Twitter
    Il vaut mieux régner en Enfer qu'être esclave au Paradis.

    Déploiement d'un admin local avec windows serveur

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown