PsExec est un outil de ligne de commande qui permet aux utilisateurs d'exécuter des programmes sur des systèmes distants. Il peut être utilisé pour exécuter des commandes, des scripts et des applications à distance ainsi que pour lancer des applications basées sur une interface graphique sur des systèmes distants.
PsExec utilise le gestionnaire de contrôle de services (SCM) de Microsoft Windows pour démarrer une instance du service sur le système distant, ce qui permet à l'outil d'exécuter la commande ou l'application spécifiée avec les privilèges du compte du compte de service sur le système distant.
Afin d'établir la connexion, l'utilisateur doit disposer des privilèges d'accès à la machine cible et fournir le nom de la machine cible, ainsi que son nom d'utilisateur et son mot de passe au format suivant :
PsExec -s \\MACHINE-NAME -u USERNAME -p PASSWORD COMMAND (the process to be executed following establishing the connection).
PsExec est un puissant outil de ligne de commande utilisé principalement pour l'administration et l'exécution à distance de processus sur les systèmes Windows. Il permet aux administrateurs système et aux professionnels de la sécurité d'exécuter des commandes ou d'exécuter des programmes sur des ordinateurs distants dans un environnement en réseau. Voici quelques cas d’utilisation courants de PsExec :
Administration du système à distance: PsExec permet aux administrateurs de gérer et d'administrer à distance plusieurs systèmes Windows sans avoir besoin d'un accès physique. Il leur permet d'exécuter des commandes, d'exécuter des scripts, d'installer des logiciels, de modifier les configurations système et d'effectuer diverses tâches administratives sur des machines distantes à partir d'un emplacement central.
Déploiement et mises à jour de logiciels: Avec PsExec, les administrateurs peuvent déployer à distance des packages logiciels, des correctifs ou des mises à jour sur plusieurs ordinateurs simultanément. Cette fonctionnalité est particulièrement utile dans les environnements à grande échelle où une installation manuelle sur des systèmes individuels serait longue et peu pratique.
Dépannage et diagnostic: PsExec peut être utilisé pour diagnostiquer et dépanner à distance les problèmes du système. Les administrateurs peuvent exécuter des outils de diagnostic, accéder aux journaux d'événements, récupérer des informations système ou exécuter des scripts de dépannage sur des systèmes distants pour identifier et résoudre les problèmes sans être physiquement présents.
Audit de sécurité et gestion des correctifs: Les professionnels de la sécurité emploient souvent PsExec pour effectuer des audits de sécurité, des évaluations de vulnérabilité ou des exercices de tests d'intrusion. Il leur permet d'exécuter à distance des outils d'analyse de sécurité, de vérifier les niveaux de correctifs et d'évaluer l'état de sécurité des systèmes distants au sein du réseau.
Réponse aux incidents et criminalistique: Lors des enquêtes de réponse aux incidents, PsExec facilite l'accès à distance aux systèmes compromis à des fins d'analyse et de collecte de preuves. Il permet aux analystes de sécurité d'exécuter des commandes ou d'exécuter des outils d'investigation sur des machines compromises sans interagir directement avec elles, minimisant ainsi le risque de compromission supplémentaire ou de perte de données.
Équipe rouge et Mouvement latéral: Dans les exercices de red teaming, où les organisations simulent des attaques du monde réel pour tester leurs défenses de sécurité, PsExec est souvent utilisé pour les mouvements latéraux au sein du réseau. Les attaquants peuvent utiliser PsExec pour exécuter des commandes ou exécuter des charges utiles malveillantes sur des systèmes compromis, en se déplaçant latéralement et en augmentant les privilèges pour obtenir un accès non autorisé aux ressources sensibles.
Automatisation et script: PsExec peut être intégré dans des scripts ou des fichiers batch, permettant l'automatisation de tâches répétitives sur plusieurs systèmes. Il fournit un moyen d'exécuter des scripts à distance, permettant aux administrateurs d'orchestrer des opérations complexes ou d'effectuer efficacement des tâches de maintenance régulières.
Cependant, il est important de noter que PsExec peut également être un outil puissant entre les mains des attaquants, car il leur permet d'exécuter du code arbitraire sur des systèmes distants, conduisant potentiellement à des attaques malveillantes. les déplacements verticaux et élévations de privilèges et les mouvements latéraux dans le réseau. Par conséquent, il est important d’utiliser PsExec en toute sécurité et de limiter l’utilisation de PsExec aux utilisateurs et systèmes de confiance.
L'installation et la configuration de PsExec est un processus simple qui implique les étapes suivantes :
Pour installer PsExec, vous pouvez visiter le site Web officiel de Microsoft ou des référentiels de logiciels fiables pour télécharger le fichier exécutable PsExec. Assurez-vous de le télécharger à partir d’une source fiable pour éviter tout risque de sécurité ou logiciel malveillant.
PsExec ne nécessite pas de processus d'installation formel. Une fois que vous avez téléchargé le fichier exécutable PsExec, vous pouvez l'enregistrer dans un répertoire de votre choix sur votre système local. Il est recommandé de le placer dans un emplacement facilement accessible et inclus dans la variable d'environnement PATH du système pour une utilisation pratique.
Pour vous connecter à un ordinateur distant à l'aide de PsExec, procédez comme suit :
un. Ouvrez une invite de commande ou un terminal sur votre système local.
b. Accédez au répertoire dans lequel vous avez enregistré le fichier exécutable PsExec.
c. Pour établir une connexion avec un ordinateur distant, utilisez la commande suivante :
commande psexec \\remote_computer_name_or_IP -u username -p password
d. Appuyez sur Entrée pour exécuter la commande. PsExec établira une connexion avec l'ordinateur distant, s'authentifiera à l'aide des informations d'identification fournies et exécutera la commande spécifiée à distance.
e. Vous verrez le résultat de la commande exécutée dans votre invite de commande locale ou dans la fenêtre de terminal.
Il est important de noter que la connexion réussie et l'exécution des commandes à l'aide de PsExec dépendent de la connectivité réseau entre votre système local et l'ordinateur distant, ainsi que des informations d'authentification et des autorisations correctes sur le système distant.
PsExec propose plusieurs commandes couramment utilisées qui offrent aux administrateurs de puissantes capacités d'exécution à distance. Voici quelques-unes des commandes PsExec les plus courantes et leurs fonctions :
Commande PsExec \remote_computer :
Commande PsExec \remote_computer -s :
Commande PsExec \remote_computer -u username -p password :
Commande PsExec \remote_computer -c -f -s -d :
Commande PsExec \remote_computer -i session_id -d -s :
PsExec \remote_computer -accepteula -s -c -f script.bat :
Ces commandes représentent un sous-ensemble des commandes PsExec disponibles, chacune servant un objectif spécifique en matière d'administration et d'exécution à distance.
La syntaxe des commandes PsExec est la suivante :
psexec \computer[,computer[,..] [options] commande [arguments]
psexec @run_file [options] command [arguments]
Options de ligne de commande PsExec :
Option | Explication |
---|---|
\ordinateur | L’ordinateur distant auquel se connecter. Utilisez \* pour tous les ordinateurs du domaine. |
@run_file | Exécutez la commande sur les ordinateurs répertoriés dans le fichier texte spécifié. |
commander | Programme à exécuter sur le système distant. |
arguments | Arguments à transmettre au programme distant. Utilisez des chemins absolus. |
-a | Définissez l'affinité du processeur. Numéros de processeur séparés par des virgules commençant à 1. |
-c | Copiez le programme local sur le système distant avant de l'exécuter. |
-f | Forcer la copie sur le fichier distant existant. |
-v | Copiez uniquement si le programme local est une version plus récente que la version distante. |
-d | N'attendez pas la fin du programme distant. |
-e | Ne chargez pas le profil utilisateur. |
-i | Interagissez avec le bureau à distance. |
-l | Exécuter avec des droits d'utilisateur limités (groupe Utilisateurs). |
-n | Délai d'expiration de la connexion en secondes. |
-p | Spécifiez le mot de passe pour l'utilisateur. |
-r | Nom du service distant avec lequel interagir. |
-s | Exécuté sous le compte SYSTEM. |
-u | Spécifiez le nom d'utilisateur pour la connexion. |
-w | Définir le répertoire de travail sur le système distant. |
-x | Afficher l'interface utilisateur sur le bureau Winlogon. |
-faible | Exécuter avec une faible priorité. |
-accepteula | Supprimer la boîte de dialogue CLUF. |
PsExec n'est pas un PowerShell. Il s'agit d'un outil de ligne de commande qui permet aux utilisateurs d'exécuter des programmes sur des systèmes distants.
PowerShell, d'autre part, est un framework d'automatisation des tâches et de gestion de la configuration développé par Microsoft, qui comprend un shell de ligne de commande et un langage de script associé construit sur le framework .NET. PowerShell peut être utilisé pour automatiser diverses tâches et effectuer des opérations complexes sur des systèmes locaux ou distants.
Bien que PsExec et PowerShell puissent être utilisés pour effectuer des tâches similaires, telles que l'exécution de commandes sur des systèmes distants, ce sont des outils différents et ont des capacités différentes. PsExec est conçu pour exécuter une seule commande ou application sur un système distant, tandis que PowerShell est un framework plus puissant qui peut être utilisé pour automatiser et gérer diverses tâches, y compris l'exécution de commandes et de scripts sur des systèmes distants.
Par conséquent, selon le scénario, un outil peut être plus approprié qu'un autre.
PsExec fonctionne en tirant parti de son architecture et de ses protocoles de communication uniques pour permettre l'exécution à distance sur les systèmes Windows. Explorons les aspects clés du fonctionnement de PsExec :
PsExec suit une architecture client-serveur. Le composant côté client, exécuté sur le système local, établit une connexion avec le composant côté serveur exécuté sur le système distant. Cette connexion permet la transmission de commandes et de données entre les deux systèmes.
PsExec utilise le protocole Server Message Block (SMB), en particulier le partage de fichiers SMB et les mécanismes de canal nommé, pour établir des canaux de communication avec les systèmes distants. Cela permet une communication sécurisée et fiable entre les composants client et serveur.
PsExec utilise des mécanismes d'authentification pour garantir un accès sécurisé aux systèmes distants. Il prend en charge diverses méthodes d'authentification, notamment l'utilisation d'un nom d'utilisateur et d'un mot de passe, ou l'authentification via NTLM (NT LAN Manager) ou Kerberos.
Pour améliorer la sécurité, il est essentiel de suivre les meilleures pratiques d'authentification lors de l'utilisation de PsExec. Ces pratiques incluent l'utilisation de mots de passe forts et uniques, la mise en œuvre authentification multi-facteurs dans la mesure du possible, et en adhérant au principe du moindre privilège en accordant uniquement les autorisations nécessaires aux utilisateurs de PsExec.
PsExec facilite l'accès aux fichiers et au registre sur les systèmes distants, permettant aux administrateurs d'effectuer des tâches telles que la copie de fichiers, l'exécution de scripts ou la modification des paramètres de registre. Lors de l'exécution de commandes à distance, PsExec copie temporairement l'exécutable ou le script requis dans le répertoire temporaire du système distant avant l'exécution.
Il est important de prendre en compte les considérations de sécurité potentielles lors de l'utilisation de PsExec pour les opérations sur les fichiers et le registre. Par exemple, les administrateurs doivent faire preuve de prudence lors du transfert de fichiers sensibles et s'assurer que des contrôles d'accès appropriés sont en place pour empêcher tout accès non autorisé ou modification des fichiers système critiques et des entrées de registre.
PsExec n'est pas un malware en soi, mais il peut être utilisé par des malwares et des attaquants pour effectuer des actions malveillantes.
PsExec est un outil légitime qui permet aux utilisateurs d'exécuter des programmes sur des systèmes distants. Il peut être utilisé pour diverses tâches légitimes telles que le dépannage, le déploiement de mises à jour et de correctifs logiciels et l'exécution simultanée de commandes et de scripts sur plusieurs systèmes.
Cependant, PsExec peut également être utilisé par des attaquants pour obtenir un accès non autorisé à des systèmes distants et effectuer des actions malveillantes. Par exemple, un attaquant pourrait utiliser PsExec pour exécuter une charge utile malveillante sur un système distant ou pour se déplacer latéralement au sein d'un réseau et accéder à des informations sensibles.
Par conséquent, il est important d'utiliser PsExec en toute sécurité et de limiter l'utilisation de PsExec aux utilisateurs et systèmes de confiance.
L’accès à distance transparent que PsExec permet d’une machine source à une machine cible est intensivement exploité par les acteurs malveillants au cours de la phase de mouvement latéral des cyberattaques. Cela se produit généralement après la compromission initiale d’une machine patient zéro.
À partir de ce moment, les attaquants cherchent à étendre leur présence dans l'environnement et à atteindre soit la domination du domaine, soit les données spécifiques qu'ils recherchent. PsExec leur fournit un moyen transparent et fiable d'y parvenir pour les raisons suivantes.
En combinant utilisateur compromis Avec PsExec, les adversaires peuvent contourner les mécanismes d'authentification, accéder à plusieurs systèmes et potentiellement compromettre une partie importante du réseau. Cette approche leur permet de se déplacer latéralement, d'élever leurs privilèges et de réaliser leurs objectifs malveillants avec un impact plus large.
PsExec est souvent considéré comme un outil de choix pour « vivre de la terre » pour les attaques à mouvement latéral en raison de plusieurs facteurs clés :
Il est important de noter que même si PsExec présente des cas d'utilisation légitimes, son potentiel d'utilisation abusive et sa présence dans l'environnement cible en font un outil attrayant pour les adversaires cherchant à mener des attaques par mouvements latéraux. Les organisations doivent mettre en œuvre des mesures de sécurité strictes, telles que la segmentation du réseau, la gestion des informations d'identification et les systèmes de surveillance, pour détecter et empêcher l'utilisation non autorisée de PsExec ou d'outils similaires.
L'utilisation de PsExec pour le mouvement latéral offre plusieurs avantages pour ransomware acteurs:
Les outils de protection des points finaux peuvent avoir du mal à détecter et empêcher l’utilisation malveillante de PsExec pour plusieurs raisons :
Les outils MFA traditionnels peuvent être confrontés à des limitations dans empêcher le mouvement latéral utilisant PsExec pour les raisons suivantes :
PsExec a gagné en popularité parmi les administrateurs système et les professionnels de la sécurité pour ses capacités de gestion à distance légitimes et efficaces. Cependant, comme de nombreux outils, PsExec peut également être utilisé à des fins malveillantes. Ces dernières années, les auteurs de menaces ont commencé à intégrer PsExec dans leurs stratégies d’attaque de ransomwares, ce qui en fait un élément potentiellement dangereux de leur arsenal.
Au cours des cinq dernières années, la barrière des compétences a considérablement diminué et le mouvement latéral avec PsExec est intégré dans plus de 80 % des attaques de ransomware, faisant de la protection contre l'authentification malveillante via PsExec une nécessité pour chaque organisation.
Les attaques de ransomware impliquent des acteurs malveillants qui obtiennent un accès non autorisé aux systèmes, chiffrent des données critiques et exigent une rançon pour leur diffusion. Auparavant, les attaquants s'appuyaient souvent sur des techniques d'ingénierie sociale ou sur des kits d'exploitation pour obtenir un accès initial. Cependant, ils ont désormais élargi leurs tactiques en utilisant des outils légitimes comme PsExec pour se propager au sein de réseaux compromis.
Lors d’une attaque de ransomware, une fois que les acteurs malveillants ont accès à un seul système au sein d’un réseau, ils visent à se déplacer latéralement et à infecter autant de systèmes que possible. PsExec fournit un moyen pratique et efficace pour ce mouvement latéral. Les attaquants utilisent PsExec pour exécuter à distance des charges utiles de ransomware sur d'autres systèmes vulnérables, propageant ainsi rapidement l'infection sur le réseau.
En intégrant PsExec dans leur chaîne d’attaque, les cybercriminels bénéficient de plusieurs avantages. Premièrement, PsExec leur permet d’exécuter des commandes et d’exécuter des charges utiles malveillantes de manière silencieuse et à distance, réduisant ainsi les chances de détection. Deuxièmement, étant donné que PsExec est un outil légitime, il contourne souvent les mesures de sécurité traditionnelles axées sur les signatures de logiciels malveillants connues. Cela permet aux attaquants de se fondre dans le trafic réseau normal, ce qui rend plus difficile la détection de leurs activités.
La défense contre les attaques de ransomware basées sur PsExec nécessite une approche à plusieurs niveaux. Voici quelques mesures d’atténuation importantes :
Contrôle d'accès: Mettez en œuvre des contrôles d’accès stricts, garantissant que seuls les utilisateurs autorisés disposent d’un accès administratif aux systèmes critiques. Limiter le nombre de comptes dotés de privilèges PsExec peut contribuer à réduire le surface d'attaque.
Endpoint protection: Déployez et maintenez des solutions robustes de protection des points de terminaison qui incluent des mécanismes de détection basés sur le comportement. Ceux-ci peuvent aider à identifier et bloquer les activités suspectes associées à l’utilisation de PsExec.
Segmentation du réseau: Utilisez la segmentation du réseau pour limiter les opportunités de mouvements latéraux pour les attaquants. Séparer les systèmes critiques et restreindre l'accès entre les segments du réseau peut aider à contenir l'impact d'une infection potentielle par un ransomware.
Surveillance et détection des anomalies: Mettez en œuvre des systèmes complets de surveillance du réseau et de détection des anomalies qui peuvent signaler une utilisation inhabituelle ou non autorisée de PsExec. Une enquête et une réponse rapides à ces alertes peuvent contribuer à atténuer les dommages potentiels.