2009-01-19 5 views
2

Je suis en train de concevoir un Service pour fonctionner sous un compte LocalSystem sous Win2000, XP et Vista. Il aura besoin d'accéder aux ruches du registre des utilisateurs, parfois pendant de longues périodes, à la fois lorsque les utilisateurs sont connectés et, lorsqu'ils ne sont pas connectés (SI le profil est local.) Si le profil est itinérant et non chargé , Je n'essaierai pas de le charger.)Usurper l'identité des utilisateurs pour accéder aux ruches - différentes méthodes, quels sont les problèmes pratiques?

Si l'utilisateur est connecté, je peux obtenir le jeton d'accès des utilisateurs par divers moyens (par exemple à partir de son processus Explorer, ou en recevant des événements de connexion du Gestionnaire de contrôle des services) utilisez ensuite ImpersonateLoggedOnUser et RegOpenCurrentUser pour accéder à la ruche de l'utilisateur. Cependant, quelles sont les implications si l'utilisateur sélectionne LogOff à partir du menu de démarrage pendant que je suis usurpant l'identité et que sa ruche est ouverte? La fermeture de session sera-t-elle empêchée? Est-ce que mon usurpation d'identité sera terminée?

Si l'utilisateur n'est pas connecté, je peux utiliser RegLoadKey pour ouvrir directement la ruche NTUSER.DAT. (Impossible pour un utilisateur connecté). Mais quelles sont les implications de cela si l'utilisateur décide de se connecter (je suppose que la ruche sera verrouillée et la connexion soit empêchée, ou peut rencontrer des difficultés?)

Je vais mettre en place quelques projets de test pour explorer ces Cependant, indépendamment de leurs résultats apparents, ces questions sont théoriques quant au type de problèmes qui pourraient ou seraient causés par l'ouverture/fermeture de session de l'utilisateur lors de ces actions par le service. Avertissement: ImpersonateLoggedOnUser ne peut être utilisé que pour un utilisateur connecté (un jeton provenant d'un processus ou d'un événement SCM) OU pour un utilisateur pour lequel j'ai le mot de passe en clair pour appeler WinLogon et obtenir un jeton - TRUE/FALSE? En d'autres termes, bien que je dispose des autorisations maximales en tant que LocalSystem et que je puisse modifier le mot de passe de l'utilisateur ou même supprimer le compte de l'utilisateur, il est impossible de créer un nouveau jeton pour usurper l'identité de l'utilisateur. le mot de passe?

Répondre

1

Apparemment, il existe un risque d'endommager le profil d'un utilisateur s'il est déjà chargé par un autre processus lorsque l'utilisateur se connecte. Dans ce cas, le système tentera de créer un nouveau sous-répertoire pour l'utilisateur.

Questions connexes