Titre: Auto-élévation Powershell Posté par: Vex le 27 Avril 2017 à 15:50:55 Bonjour bonsoir,
Je viens vers vous car j'ai un petit problème sur un script Powershell. Mes connaissances en powershell sont limitée (pour l'instant) donc ce point m'embête vraiment. J'ai fais un script qui change une valeur dans le registre de windows, ce qui inclut que le script doit être exécute en administrateur. Le hic, c'est que je veux balancer ce script à plusieurs utilisateur du domaine qui n'ont pas les accès (ni en local ni du domaine) d'administrateur. Voilà l'idée que j'avais: Faire un script qui fait une auto-élévation avec des IDs pré-enregistrés pour qu'ils n'apparaissent pas en clair dans le script. Pour l'auto-élévation, j'ai trouvé pas mal de topic sur plein de forums différents: https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.security/get-credential https://blogs.msdn.microsoft.com/virtual_pc_guy/2010/09/23/a-self-elevating-powershell-script/ http://web.archive.org/web/20160822030847/http://geekswithblogs.net/Lance/archive/2007/02/16/106518.aspx https://blog.kloud.com.au/2016/04/21/using-saved-credentials-securely-in-powershell-scripts/ https://social.technet.microsoft.com/Forums/windows/en-US/132e170f-e3e8-4178-9454-e37bfccd39ea/startprocess-verb-runas-credential?forum=winserverpowershell http://stackoverflow.com/questions/6239647/using-powershell-credentials-without-being-prompted-for-a-password http://stackoverflow.com/questions/7690994/powershell-running-a-command-as-administrator (liste non-exhaustive, ce sont que ceux que j'ai gardé sous la main) Mais c'est là que le manque de connaissance apparaît. Enfin, juste pour dire que j'ai fait tout de même quelques recherches.. J'arrive à faire l'auto-élévation, le problème c'est que j'aimerais que ça fasse pas de bannière de demande d'ID mais que ça prennent ceux que j'aurais éventuellement pré-enregistré, pour que l'auto-élévation ne se fasse pas en clair devant l'utilisateur. J'avais donc commencé à faire ça: Code:
Titre: Re : Auto-élévation Powershell Posté par: the lsd le 27 Avril 2017 à 21:35:32 Alors, sur la partie powershell, je pourrais pas aider plus que ça, par contre, sur la partie logique du script, tu me fais peur :
1/ tu as quand même un fichier avec un pass admin (local ou AD, osef). Même s'il est chiffré, c'est pas très grave. 2/ le script qui est exécuté va se donner des droits admins Tu me donnes 2mn sur ton poste et je suis roi du monde hein :) Même si les droits sont bien mis sur les deux fichiers, il suffit de démarrer la bécane sur un live CD pour récupérer le fichier contenant le pass admin et de péter le chiffrement, ou alors de modifier le script pour -au hasard- balancer une commande powershell qui ajoute le user courant dans le groupe admin. Tu fais comme tu le sens hein, mais si tu fais ça, donne moi l'adresse de ta boite, je t'envoie un devis pour un pentest ^^ Enjoy The lsd Titre: Re : Auto-élévation Powershell Posté par: S0410N3 le 28 Avril 2017 à 05:40:30 Vu que tu parles de domaine j'imagine que tu as un Active Directory.
Si tu pousses ton script par GPO inutile que tes users aient les droits admin. Après avec un script powershell c'est un poil chiant souvent. Par défaut l'exécution est désactivée sur les postes pour des raisons de sécurité. Cela dit il y a mieux et ça s'appelle les stratégies de préférences, toujours dans les GPO. Tu as la possibilité par là de modifier, créer, etc. le registre (et plein d'autres choses). Au passage il y a aussi des stratégies pour configurer directement les accès terminal server. C'est normalement ce que tu devrais utiliser si je comprends bien ce que fait ton script. Bref pas mal de façons de faire :) Titre: Re : Auto-élévation Powershell Posté par: Vex le 28 Avril 2017 à 07:19:52 Citation Tu me donnes 2mn sur ton poste et je suis roi du monde hein Même si les droits sont bien mis sur les deux fichiers, il suffit de démarrer la bécane sur un live CD pour récupérer le fichier contenant le pass admin et de péter le chiffrement, ou alors de modifier le script pour -au hasard- balancer une commande powershell qui ajoute le user courant dans le groupe admin. Tu fais comme tu le sens hein, mais si tu fais ça, donne moi l'adresse de ta boite, je t'envoie un devis pour un pentest ^^ Je sais bien que c'est pas sécurisé du tout, mais pour l'instant j'ai pas de soucis de sécurité vu que le script ne fonctionne même pas Citation Si tu pousses ton script par GPO inutile que tes users aient les droits admin. Après avec un script powershell c'est un poil chiant souvent. Par défaut l'exécution est désactivée sur les postes pour des raisons de sécurité. Citation Tu as la possibilité par là de modifier, créer, etc. le registre (et plein d'autres choses). Le script agis sur une clef registre, donc même en le poussant par GPO, ils ont besoin à minima des droits d'admin local pour que le script fonctionne, non ? Après vous avoir lu j'en viens à penser que c'est certainement pas la bonne solution, je penses que je vais me pencher sur autre chose alors Tout de même, si quelqu'un passe sur ce post et trouve une solution, voici ce sur quoi je me suis arrêté hier, ça touche presque au but .. : Script qui lance un script en admin: Code: $passwd = Read-Host "Enter password" -AsSecureString @the_lsd ne crie pas, je sais je sais, c'est pas sécurisé Le script lancé: Code: Clear-Host Titre: Re : Auto-élévation Powershell Posté par: S0410N3 le 28 Avril 2017 à 07:56:27 Citation Le script agis sur une clef registre, donc même en le poussant par GPO, ils ont besoin à minima des droits d'admin local pour que le script fonctionne, non ? Bah je ne sais pas tu touches au HKLM donc là ça serait sur une GPO machine, pas utilisateur. Pour un script sur une GPO utilisateur effectivement tu aurais aussi le problème de droits a priori, surtout pour taper sur HKLM. Si tu modifies le HKCU c'est effectivement différent mais pour ça il y a les stratégies de préférences dans les GPO utilisateurs... pas besoin de passer par un script. Il en va de même pour le HKLM si je n'ai pas été clair sauf que là c'est dans les stratégies de préférences machine. Au passage tu peux définir du ciblage directement dessus, par user machine ou autre. Pas besoin de créer une OU spécifique. Après je cite des façons de faire mais le mieux c'est d'utiliser les stratégies prévues pour terminal server comme je l'ai déjà dit sans se soucier de tout ça :) |