Articles Tagués ‘Windows Security’

 

Introduction

PSexec fait partie de la fameuse SysInternals Tools/PsTools Suite de Microsoft, créée par Mark Russinovich, qui n’est autre que le CTO actuel de la firme américaine.

PSexec vous permet d’exécuter des commandes/Processus sur des machines distantes, et ce sans avoir besoin d’installer de features/outils supplémentaires.

Il s’agit d’un outil très puissant d’Administration (à distance) et troubleshooting des plateformes Windows (Client & Server).

Télécharger la Suite SysInternals Tools

Télécharger l’outil PSexec.exe

Note : le guide d’utilisation de PSexec est détaillé depuis la même page de Download.

Tip : comme vous pouvez le constater, les tools de la Sysinternals peuvent être téléchargés séparément.

 

Bloquer l’exécution de PSexec ?!! Pourquoi ? Pour quelles raisons ?

Contrairement à la plupart des Softwares/Tools de Microsoft, le fonctionnement de PsExec.exe n’est pas un secret, il est assez simple. PsExec autorise les redirections des Input & Output d’un exécutable démarré à distance via 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 (WSCM) pour démarrer le service PsExecsvc sur le système distant, qui crée un canal nommé avec lequel PsExec communique. Ce canal nommé est ce qui permet la redirection des entrées / sorties vers le système qui a lancé PsExec.

PsExec peut être utilisé pour collecter des informations depuis des machines distantes (IPConfig, Net use, …) ou administrer un serveur Windows (Changer le password d’un compte Admin Loca, Patch management à partir d’un script…) ou encore lancer une instance Regedit.exe en tant que System Account pour pouvoir écrire/modifier certaines clés de Registre et bien plus encore !

La puissance de cet outil fait justement « peur » à certains RSSI/DSI, par conséquent, PsExec fait généralement partie des tools à Blacklister sur tout le parc Windows Client/Server.

A l’aide de PsExec, un Hacker ayant réussi à récupérer des crédentials depuis une machine vulnérable sur le réseau, peut les utiliser pour établir une connexion distante et tenter des collecter plus d’infos sensibles voire envisager une escalation de privilège.

 

Quelques Real-world scénarios
  • Exéuction d’un programme malveillant à distance (eg : Backdoor)

Figure 4: A malicious executable being launched remotely

  • Exécuter un programme/file à distance via l’utilisation d’un UserName et le Hash de son password !

Figure 5: Using a password hash to execute a file remotely

Exécution des outils /programmes en tant que Compte « System » : compte ayant le plus haut niveau de privilège sur les OS Windows

 

Vous aurez compris, l’utilisation de PsExec au sein d’un réseau Windows peut s’avérer dangereuse car permettrait à un Hacker ou toute personne malveillante d’accéder et récupérer à des informations sensibles (AD, comptes Admin…)

 

HowTo : Bloquer l’exécution du PSexec

Il existe différentes méthodes pour bloquer l’exécution de PsExec.exe :

  • Désactivation du partage (par défaut) ADMIN$
  • Déploiement d’une clé de registre (psexec.exe > Dubugger = svchost.exe)

 

Bloquer PsExec via la désactivation du Partage Windows ADMIN$

Pourquoi désactiver le partage ADMIN$ ?

Lorsque PsExec est utilisé pour exécuter une tâche/commande sur un système distant, il crée un nouvel exécutable/service appelé « psexesvc.exe ». Cet exe est copié dans le dossier Windows de la machine distante via le partage par défaut ADMIN$ (d’où la nécessité d’être un administrateur pour que psexec fonctionne à distance), désactiver ce partage bloque donc le fonctionnement de PsExec

Pour désactiver le partage ADMIN$, rien de plus simple, il faut lancer la console « Dossiers partagés » en exécutant l’outil « FsMgmt.msc » depuis le Menu Exécuter ou Démarré > Partages > ADMIN$ > Click-droit > Arrêter le Partage.

 

Bloquer PsExec via la clé de Registre

Pour bloquer l’exécution du PSexec via la clé de Registre, suivez les instructions suivantes :

  • Créer une clé de Registre nommée « psexec.exe » au niveau de : HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\
  • Créer ensuite une sous-clé au niveau de « psexec.exe », avec les informations suivantes :
    • Type : REG_SZ (Data String)
    • Nom clé : Debugger
    • Valeur : svchost.exe

 

Aucun reboot de la machine n’est requis :).

Testons maintenant l’exécution du PSexec. Dans l’exemple suivant, je reprend l’exemple précédent pour lancer un CMD.exe en tant que « System », comme montré ci-dessous, aucun résultat n’est retourné.

PSexec est bloqué au lancement, vous n’aurez aucune info ni message d’erreur :

 

Bloquer PsExec via GPO (GPP)

Si vous devez généraliser le déploiement de la clé Registre créée précédemment, le meilleur moyen de le faire, est de configurer une GPP (Group Policy Preference), voir paramètres suivants ;

 

Télécharger la clé de Registre

Vous pouvez télécharger la clé de Registre depuis l’URL suivante et l’importer directement sur les machines (Client et/ou Serveur) sur lesquelles vous souhaitez bloquer l’exécution de PSexec

https://gallery.technet.microsoft.com/Block-PsExec-Execution-4a86c023

 

Pensez à implémenter AppLocker 

Le meilleur moyen de bloquer l’exécution des PsTools (PsExec, PsShutdown…) est d’implémenter des règles (Blacklisting) AppLocker à base de Hash, c’est le moyen le plus fiable en terme de software blacklisting dans les environnements Windows.

 

Note : un eBook sur AppLocker 2012 R2 et 2016 est disponible sur BecomeITExpert.com. Si le sujet vous intéresse, cliquez sur une des images ci-dessous pour en savoir plus.

 

A bientôt :).

Avant de déployer vos serveurs Windows Server 2016, je vous invite à consulter la Checklist ci-dessous.

Celle-ci contient + de 70 paramètres de sécurité & hardening Windows vous permettant de mieux protéger et sécuriser vos plateformes Windows Server 2016.

Note : 90% des paramètres /options listés ci-après d’applique également à Windows Server 2012 R2/2012 mais aussi 2008 R2/2008.

 

Informations techniques
Nom du serveur  
Adresse MAC
Adresse IP
Masque de sous-réseau
Passerelle par défaut
Serveur DNS #1
Serveur DNS #2
Compte Administrateur local
VM (Oui /Non) Si Physique, Asset TAG :
RAM
CPU
Nombre de Disques /vDisques
Configuration RAID
LAN /VLAN
Date
Checklist
Etape Action Statut Commentaire
  Préparation & Installation
1 Si nouvelle installation, isoler le serveur du réseau jusqu’à ce qu’il soit protégé et sécurisé (voir sections suivantes)
2 Utiliser l’Assistant Configuration de la Sécurité (SCW : Security Configuration Wizard) pour créer et configurer une stratégie de sécurité à appliquer sur le serveur.
  Services Packs & Correctifs
3 Installer les derniers Services Packs et correctifs depuis Microsoft Windows Update (ou WSUS : Windows Server Update Services)
4 Configurer les notifications automatiques de la disponibilité des mises à jour et correctifs
  Stratégies de comptes utilisateurs
5 Définir une longueur minimale du mot de passe
6 Définir les exigences de complexité du mot de passe
7 Ne pas enregistrer les mots de passe en utilisant un chiffrement réversible
8 Définir un seuil et une durée de verrouillage des comptes
  Attribution des droits utilisateurs
9 Autoriser l’accès au serveur à partir du réseau aux administrateurs et aux utilisateurs authentifiés uniquement
10 Ne pas attribuer le droit « Agir en tant que partie du système d’exploitation » aux utilisateurs standards
11 Autoriser l’ouverture de session locale aux Administrateurs uniquement
12 Refuser le droit « Ouvrir une session en tant que Service » aux utilisateurs invités, et ce localement ou à distance via Connexion Bureau à distance.
Paramètres de sécurité
13 Configurer un message d’avertissement à afficher lors de la tentative d’ouverture de Session. Celui-ci doit indiquer que l’accès au serveur est réservé aux personnes habilitées.
14 Ne pas autoriser les utilisateurs du réseau à créer et ouvrir une session à l’aide d’un compte Microsoft
15 Désactiver le compte « Invité »
16 Requérir la combinaison de touches Ctrl+Alt+Suppr pour les ouvertures de session interactives
17 Configurer la limite d’inactivité du serveur pour protéger les sessions interactives
18 Configurer le Client réseau Microsoft pour signer les communications numériquement (toujours)
19 Configurer le Client réseau Microsoft pour signer les communications numériquement (lorsque le serveur l’accepte)
20 Configurer le Serveur réseau Microsoft pour signer les communications numériquement (toujours)
21 Configurer le Serveur réseau Microsoft pour signer les communications numériquement (lorsque les clients l’acceptent)
22 Désactiver l’envoi de mots de passe non chiffrés à des serveurs SMB tiers
  Paramètres des journaux d’événements
23 Configurer une Taille maximale des journaux d’événements
24 Configurer une Méthode de conversation des journaux d’événements
25 Configurer une Durée de stockage des journaux d’événements
26 Configurer l’envoi de journaux
  Contrôles d’Accès au réseau
27 Désactiver la traduction de noms/SID anonymes
28 Ne pas autoriser l’énumération anonyme des comptes SAM et partages réseau
29 Ne pas attribuer et appliquer de permissions « Tout le monde » aux utilisateurs anonymes
30 Ne pas autoriser les canaux nommés qui sont accessibles de manière anonyme
31 Restreindre l’accès anonyme aux canaux nommés et partages
32 Ne pas autoriser l’accès aux partages réseau de manière anonyme
33 Requérir le partage « Classique » et Modèle de sécurité pour les comptes locaux
  Paramètres de Sécurité : Réseau
34 Autoriser « Système Local » à utiliser l’identité de l’ordinateur pour NTLM
35 Désactiver le recours session Local système NULL
36 Configurer les types de cryptage autorisés pour Kerberos
37 Ne pas stocker de valeurs de hachage de niveau LAN Manager
38 Configurer le niveau d’authentification LAN Manager pour autoriser NTLMv2 et refuser LM & NTLM
39 Activer le Pare-feu Windows sur les trois profils : Domaine – Privé – Public
40 Configurer le Pare-feu Windows pour bloquer tout traffic entrant sur les trois profils
  Paramètres de Sécurité : Connexions Bureau à distance
41 Activer l’authentification au niveau du réseau (NLA : Network Level Authentication)
42 Utiliser le niveau de chiffrement « Elevé » afin de protéger les données RDP à l’aide d’un chiffrement renforcé sur 128 bits
43 Configurer un certificat SSL sur le serveur et forcer l’utilisation de la couche de sécurité « SSL »
44 Toujours demander le mot de passe à la connexion
45 Configurer une Passerelle RDS pour gérer les accès depuis l’extérieur.
46 Si possible, forcer l’utilisation de l’authentification forte (e.i carte à puce)
47 Activer la fonctionnalité « Remote CredentialGuard »
  Paramètres de Sécurité : Serveur Membre du domaine AD
48 Chiffrer ou signer numériquement les données des canaux sécurisés (toujours)
49 Chiffrer numériquement les données des canaux sécurisés (lorsque cela est possible)
50 Signer numériquement les données des canaux sécurisés (lorsque cela est possible)
51 Exiger les clés de sessions fortes (Windows 2000 ou ultérieur)
52 Configurer le nombre de demandes d’ouverture de session précédentes à mettre en cache
  Paramètres de Stratégies d’Audit
53 Auditer les événements d’ouverture de session sur un compte
54 Auditer la gestion des comptes utilisateur
55 Auditer les ouvertures et fermetures de sessions
56 Auditer les changements de stratégie
57 Auditer l’utilisation des privilèges
  Paramètres de sécurité : OS
58 Si possible, convertir le serveur en mode « Core »
59 Désinstaller ou désactiver les services non utilisés
60 Désinstaller ou supprimer (binaires) tous les rôles et fonctionnalités non utilisés
61 Fermer tous les ports non utilisés
62 Supprimer ou désactiver les comptes utilisateurs non utilisés
63 Restreindre au maximum les droits aux utilisateurs du réseau
64 Vérifier que tous les volumes utilisent le système de fichier « NTFS »
65 Configurer les permissions au niveau du Registre
66 Si possible, désactiver l’accès distant au Registre
67 Installer et activer un anti-virus & anti-spyware
68 Configurer l’anti-virus & anti-spyware pour se mettre à jour automatiquement
69 Configurer la date & heure système, synchroniser ensuite l’horloge avec un serveur de temps (Serveur NTP : Network Time Protocol)
70 Si possible, activer le chiffrement de lecteur BitLocker
  Sécurité Physique
71 Protéger l’accès au BIOS à l’aide d’un mot de passe
72 Protéger l’accès aux consoles de gestion (e.i console iLO) à l’aide d’un mot de passe
73 Ne pas autoriser l’arrêt du système sans avoir ouvert de session Windows
74 Configurer l’ordre de boot pour éviter tout démarrage d’un média non autorisé
75 Configurer un écran de veille pour verrouiller l’écran (affichage) après un certain temps d’inactivité
  Informations additionnelles
76 Utiliser l’outil MBSA (Microsoft Baseline Security Analyzer) pour analyser et auditer la sécurité de votre serveur

 

Télécharger ce document (format PDF)

Cette Checklist est disponible (format PDF) en téléchargement gratuit depuis la Gallery TechNet.

Vous pouvez download le document ici.

Bonne lecture.

Vos feedbacks sont les bienvenus :).

#HK