2010-04-09 6 views
1

Je travaillais récemment avec un produit de Symantech appelé Norton EndPoint Protection. Il s'agit d'une application de console serveur et d'une application de déploiement et je souhaite intégrer leur méthode de déploiement dans une future version de l'un de mes produits. L'application de déploiement vous permet de sélectionner des stations de travail exécutant Windows 2000, Windows XP ou Windows 7. La sélection des postes de travail est fournie par AD (Active Directory) ou NT Domain (recherche WIN/DNS NetBIOS). Dans la liste, vous pouvez cliquer sur et choisir les stations de travail à déployer le logiciel de point final qui est la suite de protection contre les logiciels espions de Symantech. Puis, après avoir sélectionné les postes de travail devant recevoir le package, le logiciel copie le programme setup.exe sur chaque poste de travail (supposé possible sur le partage administratif \ pcname \ c $), puis commande au poste de travail d'exécuter setup.exe. le poste de travail installant le logiciel. J'aime vraiment comment fonctionne leur produit, mais je ne sais pas ce qu'ils font pour accomplir toutes les étapes. Je n'ai pas fait de recherches approfondies sur ce sujet, comme flairer le réseau, etc ... et je voulais vérifier ici si quelqu'un est au courant de ce dont je parle et si vous savez comment c'est accompli ou si j'ai des idées pourrait être accompli. Je pense qu'ils utilisent le partage admin pour copier le logiciel sur les postes de travail sélectionnés, puis émettre un appel RPC pour commander au poste de travail d'effectuer l'installation. Ce qui est intéressant, c'est que les postes de travail le font sans que les utilisateurs connectés ne sachent ce qui se passe jusqu'à la fin où un redémarrage est nécessaire. À ce stade, l'utilisateur reçoit une fenêtre pop-up demandant de redémarrer maintenant ou plus tard, etc ... Mon intuition est que le programme setup.exe affiche ce message.Commande RPC pour lancer une installation logicielle

Au point: Je cherche à connaître le mécanisme par lequel une machine basée sur Windows peut demander à une autre de faire une action ou d'exécuter un programme.

Mon langage de programmation est C/C++

Toutes les pensées/suggestions appréciées.

+0

avait exactement la même question après avoir utilisé les outils DameWare – topherg

Répondre

3

Je m'intéressais aussi à cela, puisque je veux moi aussi déployer le logiciel à distance. J'ai choisi de paquets sniff pstools car il s'est avéré assez fiable dans de telles tâches d'administration à distance.

Je dois avouer que je surpassais définitivement ce défi. Vous avez probablement déjà fait votre reniflage de paquets et découvert les mêmes choses que moi. J'espère qu'en laissant ce post derrière nous nous pouvons aider d'autres développeurs.

Voici comment pstools accomplit l'exécution de code arbitraire:

Il copie un fichier exécutable de service du système à \\ serveur \ admin $ (soit vous devez avoir déjà administrateur local sur la machine distante ou fournir des informations d'identification). Une fois le fichier copié, il utilise l'API Service Control Manager pour faire du fichier copié un service système et le démarrer.

De toute évidence, ce service système peut maintenant faire ce qu'il veut, y compris la liaison à un canal nommé RPC. Dans notre cas, le service système installerait un msi. Pour obtenir la confirmation de l'installation réussie, vous pouvez interroger à distance une clé de registre ou une fonction rpc. De toute façon, vous devez supprimer le service système lorsque vous avez terminé et supprimer le fichier (psexec ne fait pas cela, je suppose qu'ils ne veulent pas qu'il soit utilisé subrepticement, et dans ce cas, laisser le service derrière donnerait au moins un admin une chance de se rendre compte que quelqu'un avait compromis leur boîte.) Cette méthode ne nécessite aucune préconfiguration de la machine distante, simplement que vous avez des droits d'administrateur et que le partage de fichiers et le rpc sont ouverts dans le pare-feu.

J'ai vu des démos en C# en utilisant WMI, mais je n'aime pas ces solutions. Le partage de fichiers et RPC sont plus susceptibles d'être ouverts dans les pare-feu. Si ce n'est pas le cas, le partage de fichiers et la gestion MMC distante du serveur distant ne fonctionneraient pas. WMI peut être bloqué et les laisser toujours fonctionnels.

J'ai travaillé avec beaucoup de logiciels qui font des installations à distance, et beaucoup d'entre eux ne sont pas aussi fiables que pstools. Je suppose que c'est parce que ces développeurs utilisent d'autres méthodes qui ne sont pas aussi susceptibles d'être ouvertes au niveau du pare-feu.

La solution simple est souvent la plus insaisissable. Comme toujours, mon chapeau est fermé aux gens de SysInternals. Ils sont de véritables hackers dans le sens positif, old school du mot!

0

Ce type de fonctionnalité est également disponible avec les produits LANDesk et Altiris. Vous avez besoin d'un écouteur démonisé côté client pour écouter les instructions/connexions du serveur. Une fois la connexion établie, un certain nombre de choses peuvent se produire: vous pouvez transférer des fichiers, lancer des scripts d'installation, etc. de façon transparente pour tous les utilisateurs de cette boîte.

J'ai utilisé Twisted Framework (http://twistedmatrix.com) pour faire cela avec une petite poignée de machines Linux. C'est Python et Linux, pas Windows, mais la prémisse est la même: un client d'écoute accepte les instructions d'un serveur et les exécute. Très simple.

Cette fonctionnalité peut également être accomplie avec des scripts VB/Powershell dans un domaine Windows.

+0

cela nécessite que le client ait déjà reçu l'écouteur. Le produit Symantec ne nécessitait aucune installation client préalable. Le déploiement de Symantec tirait manifestement parti d'une fonctionnalité de Microsoft Windows que je suppose être RPC ou une autre approche telle qu'une installation de service à distance qui, à son tour, était utilisée pour invoquer l'exécution du programme setup.exe qui est copié. – Eric

Questions connexes