Existe-t-il un équivalent de SU pour Windows?

32

Existe-t-il un moyen (lorsque vous êtes connecté en tant qu'administrateur ou membre du groupe des administrateurs) de vous faire passer pour un utilisateur sans privilège? Surtout dans un environnement AD.

Par exemple, dans le monde Unix, je pourrais faire ce qui suit (en tant que root):

# whoami
root
# su johnsmith
johnsmith> whoami
johnsmith
johnsmith> exit
# exit

Je dois tester / configurer quelque chose sur le compte d'un utilisateur et je ne veux pas connaître son mot de passe ou le réinitialiser.

Edit:
runas ne va pas le couper. Idéalement , tout mon bureau deviendrait celui de l'utilisateur, etc., et pas seulement dans une fenêtre cmd.

BIBD
la source
Juste curieux, mais pourquoi avez-vous besoin de vous connecter en tant qu'utilisateur? Je n'aurais généralement besoin de faire cela que pour configurer le courrier électronique. Cependant, j'ai constaté que la plupart du temps, je pouvais tout configurer via la stratégie de groupe / les scripts / etc.
Dayton Brown

Réponses:

20

Je suis presque certain qu'il n'existe aucun moyen pris en charge de s'exécuter en tant qu'utilisateur différent sans avoir les informations d'identification de cet utilisateur. C'est une mesure de non répudiation. Quelqu'un ne peut pas dire: "Je ne l'ai pas fait", soit parce qu'ils l'ont fait, soit quelqu'un qui a obtenu ses lettres de créance. Et pour la seconde, ils devraient donner les informations d'identification à l'autre personne.

Normalement, si je fais ce que je dois faire lorsque je suis connecté en tant qu'un autre utilisateur, vous devez utiliser l'assistance à distance pour essentiellement utiliser RDP dans la session et les laisser m'autoriser. Ensuite, je fais ce que je veux pendant qu'ils regardent (probablement, en tout cas).

Tout le reste peut généralement être fait avec des GPO / scripts.

Orihara
la source
8
Je crois que c'est correct. Et, à mon humble avis, il s’agit d’une amélioration de la sécurité par rapport au monde UNIX. J'aime l'idée que même un administrateur ne peut être moi sans mon mot de passe.
tomjedrz
3
Un administrateur peut reprendre un autre utilisateur en réinitialisant son mot de passe. Ensuite, ils peuvent se connecter en tant que vous. Cependant, il existe une piste de preuves si vous faites cela. Tout d'abord, le mot de passe des utilisateurs a été modifié pour qu'ils puissent le savoir. Deuxièmement, il y aura des journaux d'audit (en supposant que l'audit soit activé).
Erik Funkenbusch
3
C'est généralement ainsi que je fonctionne. Cependant, il y a des points que je dis "Ce serait tellement plus facile de faire cela pour Bob si j'étais Bob", mais Bob est rentré chez lui il y a une heure.
BIBD
1
En ce qui concerne la "non-répudiation", me réinitialiser d'abord leur mot de passe ne m'empêche pas de commettre des actes malveillants / stupides en tant qu'autre utilisateur. Cela signifie simplement que je devrais faire plus de travail pour dissimuler qui était responsable.
BIBD
9
Je comprends ce qu'ils essaient de faire. Je pense juste que c'est plus un théâtre de sécurité que la sécurité réelle.
BIBD
17

J'ai remarqué que beaucoup d'autres personnes mentionnent des variantes de la commande runas et expliquent comment vous devez connaître le mot de passe des utilisateurs, ce qui est vrai, mais je ne pense pas que quiconque ait répondu à la question en silence. de "vouloir tout le bureau deviendrait l'utilisateur, etc. et pas seulement dans une fenêtre cmd". Voici comment je m'y prends:

Remarque : je vais faire référence à cette première invite de commande en tant que CP1 pour éliminer la confusion ultérieurement.

Sous votre compte administrateur, ouvrez l'invite de commande.

Pour compte local

runas /profile /user:computernamehere\username cmd

Pour compte de domaine

runas /profile /user:domainname\username cmd

OU comme je le préfère

runas /profile /user:username@domainname cmd

Remarque: une nouvelle invite de commande s'ouvre (CP2). Il s'agit de l'utilisateur avec lequel vous essayez de vous connecter.

Ouvrez le CP1 et tapez:

taskkill /f /IM explorer.exe

Ouvrez le CP2 et tapez:

explorer.exe

Selon l'ordinateur, il peut créer un profil pour l'utilisateur s'il ne s'y est jamais connecté auparavant. Vous pouvez sauvegarder vous-même le hassel plus tard en laissant les fenêtres d'invite de commande ouvertes pour une utilisation ultérieure.

Lorsque vous avez terminé votre travail, faites simplement la même chose en sens inverse.

Dans le type CP2:

taskkill /f /IM explorer.exe

Ouvrez le CP1 et tapez:

explorer.exe

Vous devriez maintenant être de retour dans le compte administrateur d'origine. Vous pouvez effectuer une vérification rapide en appuyant sur la touche Windows et en recherchant le panneau de l'utilisateur actuel.

J'espère que cela a aidé.

Michael H
la source
3
C'est une magie profonde.
mskfisher
@mskfisher Haha, si vous pensez que vous êtes fou, vous devriez voir ce que je devais faire pour savoir comment tuer une session psexec qui s'était bloquée après l'exécution d'une mauvaise commande wmic. ... Pskill à partir d'une deuxième invite de commande, pointée sur la machine distante, après avoir utilisé psservices pour rechercher l'ID de processus pour psexec sur la première invite de commande!
Michael H
Quatre ans plus tard, cette question m'a été rappelée et j'ai eu le temps de la tester. HOU LA LA!
BIBD
Sous Windows 10, l'utilisation de runas demande le mot de passe de l'utilisateur.
TheAmigo
7

Il n'y a pas de mécanisme intégré dans Windows pour le faire. Cela peut être fait, mais vous allez devoir écrire quelque chose pour faire ce que vous voulez, et vous allez probablement devoir vous gâcher avec des API non documentées.

Une des affiches ici, grawity, a le droit d’appeler CreateProcessAsUser (), mais vous devez d’abord créer un jeton avec l’API native non documentée zwCreateToken. Si vous avez tué l'explorateur et déclenché une nouvelle instance de l'explorateur avec CreateProcessAsUser (), je suis assez certain que vous obtiendrez ce que vous voulez.

Microsoft ne vous facilite pas la tâche, car ce n'est pas ainsi qu'ils vous demandent d'utiliser NT. Si vous devez vous connecter en tant qu'utilisateur pour résoudre leurs problèmes, vous vous y prenez généralement de manière sous-optimale.

Vous pouvez modifier le registre de l'utilisateur sans vous connecter (en attachant sa ruche de registre et en le manipulant de cette manière). Vous pouvez modifier les fichiers de leur profil utilisateur sans être connectés en tant qu'utilisateur. Si vous avez besoin de "configurer un courrier électronique" ou d'autres activités "en tant qu'utilisateur", vous devez écrire des scripts ou tirer parti des fonctionnalités intégrées (modèles d'administration de stratégie de groupe, préférences, etc.) pour effectuer votre sale boulot à votre place.

Si vous devez le faire, consultez RunAsEx sur Code Project. Ce code devrait vous donner une assez bonne idée de ce que vous devez faire. Je n'ai pas essayé le programme, mais il semble que tout se passe bien.

Evan Anderson
la source
5

Vous pouvez utiliser la commande suivante sur Windows XP et versions ultérieures:

RunAs.exe

Les options de ligne de commande sont disponibles ici .

Cela ne fonctionnera pas sans connaître le mot de passe des utilisateurs. Je ne pense pas qu'il soit possible dans Windows de fonctionner sous un compte d'utilisateur sans mot de passe en raison de la façon dont les identificateurs de sécurité sont chargés.

Doug Luxem
la source
3
Je pense que le programme RunAs nécessite que vous connaissiez le mot de passe de l'utilisateur, ce qui, à mon avis, ne dit pas la question initiale
Kevin Kuphal
Tu as raison ... J'avais oublié ça.
Doug Luxem
2

(Juste une supposition.) Si votre compte en a un SeCreateTokenPrivilege, vous pouvez écrire un petit programme pour créer un processus utilisant CreateProcessAsUser()une fonction similaire ... (Mais même les administrateurs n'ont pas le privilège par défaut.)

Grawity
la source
2

Bien que je n’aie pas d’expérience personnelle avec certaines des solutions sudo mentionnées sur ce site, je recommande vivement à nonadmin d’être créé par l’excellent Aaron Margosis . C'est une aide énorme lorsque vous déployez des utilisateurs limités. J'ai surtout sauté sur quelque chose puisque tout le monde dit d'utiliser Runas. Cependant, je pense que la plupart ou la totalité de ces soi-disant sudo pour Windows traitent davantage de l’élévation que de jouer le rôle d’un autre utilisateur sans mot de passe.

Knox
la source
0

Process Explorer procexp.exe sur http://live.sysinternals.com a une exécution en tant qu'utilisateur limité (dans le menu Fichier) qui vous permettra d'exécuter un programme en utilisant vos informations d'identification actuelles, mais avec une ACL réduite à celle d'un utilisateur normal. utilisateur (non administrateur) utilisateur. Pas exactement ce que tu voulais, mais bon pour les tests.

Booji Boy
la source