PsExec et les Vilaines Choses qu’Il Peut Faire

0 Comments

la Plupart des outils que nous utilisons pour gérer des réseaux ont tendance à être une épée à double tranchant. Ces outils offrent une grande flexibilité et permettent une gestion simplifiée des appareils, des services et des logiciels. Entre de bonnes mains, nous n’avons rien à craindre, mais entre de mauvaises mains, nos outils d’administration à distance deviennent des armes puissantes qui peuvent être utilisées par les attaquants pour effectuer un large éventail d’activités malveillantes., Dans cet article, je vais parler d’un outil qui correspond à cette description. Cet outil est L’outil PsExec de Microsoft Sysinternals. Dans cet article, je vais donner un aperçu de ce qu »est PsExec et quelles sont ses capacités d » un point de vue administratif. Suite à cela, je vais prendre le rôle de l’adversaire et de démontrer certaines des choses désagréables, il peut être utilisé sur un réseau.

Cet article vise à servir deux publics., Le premier public est constitué des administrateurs système chargés de protéger leurs réseaux contre l’utilisation d’outils tels que PsExec à des fins malveillantes. L’autre public visé se compose de pirates éthiques et de testeurs de pénétration professionnels qui peuvent tirer un avantage d’en savoir un peu plus sur certaines des choses pour lesquelles PsExec peut être utilisé., Quel que soit le public dans lequel vous tombez, il est important que je fournisse la clause de non-responsabilité selon laquelle certaines des commandes et techniques dont je parle ici peuvent être tout à fait illégales en fonction des circonstances dans lesquelles elles sont utilisées.

Qu’est-ce que PsExec?

L’utilitaire PsExec a été conçu dans le cadre de la suite PsTools, développée à l’origine par Mark Russinovich de Sysinternals, maintenant propriété de Microsoft., L’outil est inventé comme un outil d’administration à distance basé sur la ligne de commande et permet l’exécution à distance des processus sur d’autres systèmes. Il est très flexible en ce sens qu’il permettra l’utilisation d’autres informations d’identification d’authentification plutôt que celles de l’utilisateur qui l’exécute, ce qui signifie que vous pouvez gérer les périphériques séparés par les limites du domaine et du site. PsExec peut non seulement exécuter des programmes sur un système distant, mais il peut également rediriger l’entrée et la sortie de la console entre les systèmes afin que vous puissiez utiliser des outils interactifs à distance.,

contrairement à la plupart des logiciels associés à Microsoft, le fonctionnement interne de PsExec n’est pas un secret et est assez simple. PsExec permet les redirections de l’entrée et de la sortie d’un exécutable démarré à distance grâce à L’utilisation de SMB et du partage caché $ADMIN sur le système distant. Avec ce partage, PsExec utilise L’API Windows Service control Manager pour démarrer le service PsExecsvc sur le système distant, ce qui crée un canal nommé avec lequel PsExec communique. Ce canal nommé est ce qui permet la redirection d’entrée/sortie vers le système qui a lancé PsExec.,

jouer bien avec PsExec

selon sa conception originale, PsExec peut être utilisé pour faire un certain nombre de choses très utiles qui peuvent aider les administrateurs système. Un tel scénario que je me suis retrouvé dans un certain nombre de fois est celui dans lequel j’ai connu le nom DNS d’un ordinateur mais pas les paramètres de configuration IP exacts (serveur DNS, passerelle par défaut, etc.). Dans des circonstances normales, j’utiliserais ipconfig sur le système local pour déterminer ces informations., Dans la grande majorité des cas cependant, cela pourrait signifier que je devrais conduire à un autre endroit ou emprunter l »ordinateur d » un utilisateur, réduisant intrinsèquement leur productivité pour la journée. Étant donné qu’ipconfig n’a pas de capacités pour être exécuté sur une machine non locale, je peux utiliser PsExec pour le lancer avec succès, comme le montre la Figure 1.

Figure 1: Utilisation de lancer la commande ipconfig sur un système distant

Après PsExec est appelée, l’ordinateur distant est désigné après la double barre oblique (\\), suivi par la commande ipconfig., Lorsque vous exécutez PsExec, il est par défaut dans le répertoire %SYSTEM% sur le système distant sur lequel vous essayez d’exécuter la commande, c’est pourquoi je n’ai pas eu à spécifier un chemin complet ici. Enfin ,le commutateur / all pour ipconfig est spécifié afin de produire toutes les informations ipconfig disponibles.

Une autre implémentation courante de PsExec est de l’utiliser pour le déploiement des mises à jour, des correctifs et des correctifs. Bien que la méthode préférée typique de faire ceci soit par la stratégie de groupe il peut y avoir des cas dans lesquels cette méthode est trop lente., J’ai été dans de nombreuses situations où j’ai eu besoin de déployer un correctif de sécurité haute priorité qui ne peut pas attendre la durée du temps d’actualisation de la stratégie de groupe standard, donc je me suis tourné vers PsExec pour déployer le fichier de manière plus rapide. Un exemple de ceci est vu dans la Figure 2.

Figure 2: lancement d’un correctif exécutable à distance

l’image de commande ci-dessus utilise quelques fonctionnalités supplémentaires. Tout d’abord, Notez qu’il y a deux noms d’ordinateur séparés par des virgules après la double barre oblique (\\)., PsExec vous permet de spécifier plusieurs périphériques cibles ici, ou alternativement, un fichier contenant une liste de noms ou d’adresses de périphériques. La commande inclut également le commutateur / C, qui est utilisé lorsque vous souhaitez spécifier un fichier sur le système local à exécuter sur le système distant. Dans ce cas, j’ai spécifié le correctif de fichier.EXE. Le fichier est situé sur mon système local à la racine du lecteur C, j’ai donc dû spécifier le chemin complet du fichier. Le commutateur /c regarde dans le répertoire % SYSTEM % sur le système local par défaut., Comme vous pouvez le voir, le fichier est exécuté avec succès et la sortie est redirigée vers la console locale à partir de laquelle nous exécutons PsExec.

Une dernière utilisation conviviale de PsExec que j’ai trouvée très pratique consiste à l’utiliser pour administrer à distance des systèmes d’un niveau de privilège plus élevé tout en utilisant un système sous un compte à privilèges inférieurs. Je ne peux pas compter le nombre de fois où j »ai travaillé sur un ordinateur d »utilisateurs et j » ai reçu un appel qui m « oblige à effectuer une fonction administrative telle qu » un changement de mot de passe., Bien sûr, dans un environnement Active Directory, je pouvais simplement RDP dans un contrôleur de domaine et effectuer ce changement, mais j’ai eu plusieurs clients qui n’utilisent pas active directory ou RDP pour diverses raisons. Lorsque c’est le cas, il est assez facile de faire apparaître un lecteur flash USB et d’accéder à la copie de PsExec que j’ai installée dessus. Dans le cas de la Figure 3, J’ai » utilisé PsExec pour réinitialiser un mot de passe utilisateur sur un système en élevant les privilèges  » de l’outil net tel qu’exécuté par PsExec.,

la Figure 3: Modification d’un utilisateur, le mot de passe par l’élévation de PsExec »s privilèges

Faire de mauvaises Choses avec PsExec

Maintenant, laissez »s prendre une promenade sur le côté sombre et regarder quelques choses qui peut être fait avec PsExec par ceux potentiellement avec de mauvaises intentions. Tout d’abord, permettez – « s envisager un scénario dans lequel un attaquant a obtenu des informations d’identification pour un système, mais qui n’ont aucun accès direct., Dans ce cas, l’attaquant vise à obtenir le contrôle de L’interface graphique ou de la ligne de commande du système, mais les possibilités d’utilisation de ces informations d’identification peuvent être limitées. Une méthode qui peut être utile dans cette situation est D’utiliser PsExec pour exécuter un exécutable de porte dérobée sur le système, comme ce qui est montré dans la Figure 4.

Figure 4: un exécutable malveillant lancé à distance

dans le cas de cette capture d’écran, un attaquant distant utilise le PsExec avec le commutateur / C pour exécuter le fichier local nc.exe sur le système distant., Parallèlement à cela, les commutateurs-u et-p sont utilisés pour spécifier le nom d’utilisateur et le mot de passe compromis afin que le fichier puisse être exécuté avec des privilèges de niveau racine. À l’insu de la victime, le fichier qui est exécuté silencieusement dans une porte dérobée qui permettra à l’attaquant de se connecter au système et de recevoir une invite de commande administrative.

Une chose intéressante à propos de l’attaque que nous venons de regarder est que vous n’avez même pas besoin du mot de passe d’un utilisateur pour l’exécuter. En réalité, tout ce dont vous avez besoin est le hachage du nom d’utilisateur et du mot de passe de l’utilisateur., Dans Windows, des calculs mathématiques sont appliqués aux mots de passe fournis par l’utilisateur afin de transformer ces mots de passe en une chaîne chiffrée de longueur fixe, appelée hachage. Ces hachages sont une fonctionnalité de sécurité conçue pour empêcher la transmission de mots de passe en texte clair sur un réseau. Lorsque l’authentification se produit, ces hachages de mot de passe sont envoyés d’un hôte à un autre. En utilisant PsExec, vous pouvez en tirer parti en fournissant simplement le hachage du mot de passe au lieu du mot de passe, illustré à la Figure 5.,

Figure 5: à l’Aide d’un hachage de mot de passe pour exécuter un fichier à distance

Cet exemple est le même que celui vu dans la Figure 4, la seule différence est qu’un hachage de mot de passe est utilisé à la place du mot de passe. Le système de réception n’a aucun problème à accepter ce hachage à des fins d’authentification. Il existe une variété de méthodes pour obtenir des hachages de mot de passe qui dépassent un peu le cadre de cet article. J’ai écrit un autre article sur ce sujet ici.,

Une autre astuce intéressante que PsExec rend possible est la possibilité d’accéder aux fichiers et de générer des processus avec le compte intégré au système. Le compte système sur une machine Windows est le compte le plus puissant et permet d’accéder à peu près n’importe quoi, y compris certains éléments qui ne sont pas accessibles par le compte administrateur et les comptes créés par l’utilisateur.. La Figure 6 fournit un exemple d’accès à l’application regedit.,

Figure 6: l’Accès au registre de la victime

La commande ci-dessus est exécuté directement sur un système local, mais spécifie le -s switch afin d’utiliser le compte SYSTÈME local. Ceci est combiné avec l’option-I (interactive) qui exécute regedit en mode interactif. L’exécution de cette commande lancera regedit avec SYSTEM access qui fournit un accès supplémentaire à certains fichiers intéressants. Un tel exemple de ceci est le fichier SAM qui contient des hachages de mot de passe utilisateur., Compte tenu de la bonne motivation, un attaquant ayant accès à un système et PsExec pourrait facilement extraire tous les hachages de mot de passe du système en utilisant cette technique, lui fournissant potentiellement des informations pouvant permettre la compromission d’autres systèmes ou comptes.

quelques mises en garde

informations d’identification en clair – si vous êtes préoccupé par qui pourrait écouter votre activité réseau, PsExec n’est probablement pas le meilleur outil à utiliser., PsExec transmet toutes les informations d’identification utilisateur qui lui sont fournies en clair, ce qui signifie que si vous fournissez un nom d’utilisateur et un mot de passe pour accéder à un système à distance, toute personne avec une copie de Wireshark ou Tcpdump en cours d’exécution peut intercepter les informations d’identification.

Détection Antivirus – ce n’était pas un problème, mais maintenant que la plupart des applications d’analyse de virus effectuent un certain niveau de surveillance du système et de la mémoire, la plupart d’entre elles intercepteront PsExec utilisé sur le système qu’elles surveillent., Si vous faites un test de pénétration sur un système Windows et PsExec ne fonctionne pas comme il se doit alors les chances sont que vous êtes bloqué par antivirus, et pire encore, vous pouvez laisser l’utilisateur final savoir que vous jouez avec leur système.

PsExec et Metasploit – lorsque cela est possible, je n’utilise plus PsExec par lui-même. Une version modifiée de PsExec est maintenant incluse dans le Framework Metasploit. Metasploit est un framework de test d’intrusion qui fournit un peu de fonctionnalités., Si vous souhaitez utiliser PsExec pour une certaine forme d’évaluation de la sécurité, envisagez d’examiner les fonctionnalités supplémentaires que Metasploit fournit. J’ai effectivement utilisé cette version de PsExec dans un article que j’ai écrit plus tôt sur le passage des techniques de hachage.

Conclusion

Le PsExec outil a beaucoup d’utilisations pour une variété d’intentions de l’utilisateur. Espérons que cet article vous a aidé à vous renseigner sur certaines de ses fonctionnalités et sur la façon dont elles peuvent être utilisées pour faire du mal. PsExec est le genre d’outil qui permet à un attaquant d’être créatif., Même si j’ai quelques utilisations uniques de l’outil ici, j’oserai dire que des dizaines, voire des centaines d’intéressant vecteurs d’attaque sont disponibles à l’aide de ses fonctions. À un moment donné, je prévoirai d’écrire un article de suivi contenant des utilisations plus intéressantes et avancées pour PsExec. En attendant, si vous avez des intéressant PsExec trucs alors n’hésitez pas à m’écrire directement pour l’inclusion dans le prochain article.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *