2018 HANDBOOK Amélioration des capacités de détection Mise en place d’un système de centralisation de journaux Windows Event Forwarding (WEF), Splunk, LogPoint Site internet www.intrinsec.com Blog securite.intrinsec.com Twitter @Intrinsec Handbook – Amélioration des capacités de détection version 1 Le présent document est une production du CERT-Intrinsec, et est la propriété exclusive d’Intrinsec Sécurité S.A.S. Les contenus cités restent la propriété de leurs auteurs respectifs. Les éléments créés par Intrinsec Sécurité sont diffusés sous licence Creative Commons-Non Commercial-Attribution-Share-Alike version 4 : toute utilisation (hors fins commerciales), modification ou distribution sont autorisées, sous réserve que le présent document, ses versions modifiées ou l’œuvre dérivée soient soumis aux mêmes conditions de licence, et qu’Intrinsec Sécurité soit expressément citée en tant que source. Historique des modifications : Version Date Action Auteur 1 16/03/2018 Publication du document Luc ROUDE Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 2 / 50 Handbook – Amélioration des capacités de détection version 1 TABLE DES MATIERES 1 INTRODUCTION 5 1.1 Contexte ______________________________________________________________________________ 5 1.2 Périmètre d’application __________________________________________________________________ 6 2 MESURES DE PREMIER NIVEAU 7 2.1 Généralités et prérequis__________________________________________________________________ 7 2.2 Configurer WEF ________________________________________________________________________ 9 2.2.1 Déployer le collecteur ________________________________________________________________ 9 2.2.2 Configurer WEF sur les terminaux via stratégies de groupe __________________________________ 10 2.2.3 Configurer les abonnements sur le collecteur ____________________________________________ 11 2.3 Ajouter des canaux d’événements _________________________________________________________ 14 2.4 Configurer un agent Splunk ______________________________________________________________ 15 2.5 Configurer un agent LogPoint ____________________________________________________________ 17 2.6 Motifs de recherche (SIEM) ______________________________________________________________ 20 2.6.1 Splunk ___________________________________________________________________________ 20 2.6.2 LogPoint__________________________________________________________________________ 22 3 MESURES ETENDUES 24 3.1 Stratégie d’audit _______________________________________________________________________ 24 3.2 Paramétrage des journaux opérationnels d’applications ________________________________________ 26 3.3 Journalisation PowerShell _______________________________________________________________ 27 3.4 Sysmon ______________________________________________________________________________ 28 3.5 AppLocker____________________________________________________________________________ 29 3.6 Canaux d’événements personnalisés _______________________________________________________ 31 3.7 Catalogue d’abonnements WEF ___________________________________________________________ 32 3.7.1 Journaux « Sécurité » _______________________________________________________________ 32 3.7.2 PowerShell________________________________________________________________________ 33 3.7.3 Sysmon __________________________________________________________________________ 34 3.7.4 AppLocker ________________________________________________________________________ 34 3.7.5 Automatisation ____________________________________________________________________ 35 3.7.6 Aller plus loin______________________________________________________________________ 36 4 ANNEXES 37 4.1 Ressources et fichiers ___________________________________________________________________ 37 4.2 Référence des paramètres de stratégies de groupe ___________________________________________ 37 Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 3 / 50 Handbook – Amélioration des capacités de détection version 1 4.2.1 Français __________________________________________________________________________ 37 4.2.2 Anglais ___________________________________________________________________________ 40 4.3 Dépannage ___________________________________________________________________________ 46 4.3.1 Codes d’événements et situations fréquentes ____________________________________________ 46 4.3.2 Structures XML et limites des abonnements WEF _________________________________________ 46 4.3.3 Permissions sur les journaux – descripteurs de sécurité ____________________________________ 46 4.4 Remerciements et Bibliographie __________________________________________________________ 48 5 À PROPOS D’INTRINSEC 50 Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 4 / 50 Handbook – Amélioration des capacités de détection version 1 1 INTRODUCTION 1.1 CONTEXTE Problématique Les cyberattaques sont généralement modélisables autour d’une « kill chain », qui va des étapes de reconnaissances jusqu’à l’exfiltration de données. Les premières & dernières étapes de ce schéma peuvent être détectées par des éléments de défense périmétriques (ex. IDS réseau / Web). Une partie de ce cycle repose toutefois sur une séquence d’actions en interne, focalisée sur des équipements terminaux (postes de travail, serveurs). Le MITRE a classé ces familles d’actions en dix catégories, comprenant notamment la propagation latérale et la récupération d’identifiants : Limites actuelles Dans les déploiements courants de SIEM, les événements touchant ces équipements terminaux ne sont pas centralisés pour des raisons de volumétrie. Les informations liées à ces terminaux sont alors fragmentaires (ex. journaux antivirus, actions touchant Active Directory). Elles permettent la détection de menaces connues ou très visibles (ex. exécution de versions « brutes » de Mimikatz), mais présentent des lacunes sur les opérations plus discrètes, comme un attaquant exploitant des fonctionnalités d’administration légitimes pour se propager de système en système. Projet L’objet de ce document est le déploiement d’un système de collecte et centralisation de journaux issus des équipements terminaux, avec le cahier des charges suivant : S’appuyer au maximum sur des fonctionnalités natives de Windows ; Minimiser l’impact sur l’infrastructure : mise en place d’une machine de collecte de journaux, déploiement des règles par GPO ; Limiter la croissance des données injectées dans le SIEM : collecte ciblée sur un nombre réduit d’événements. Cette démarche comporte ses propres limites : en sélectionnant précisément les événements à surveiller, nous laissons des zones d’ombre apparaître sur tous les scénarios n’étant pas explicitement anticipés. Dans la même veine, le modèle proposé par le MITRE se concentre sur des points précis et n’a pas vocation à être exhaustif. Le système décrit dans ce guide a donc pour vocation d’être transitoire. Une fois en place, il devra être entretenu et étendu jusqu’à atteindre une couverture globale, tenant compte des aspects techniques et métier. Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 5 / 50 Handbook – Amélioration des capacités de détection version 1 1.2 PERIMETRE D’APPLICATION Ce document a vocation à s’appliquer dans un environnement Active Directory, appuyé par un SIEM (Splunk et LogPoint sont documentés ici, mais le raisonnement peut être étendu à toute solution de gestion de journaux, comme Graylog1 pour citer un exemple open-source). Le bon fonctionnement de l’infrastructure de centralisation de journaux nécessite au préalable que les politiques d’audit (journalisation) des systèmes Windows soient correctement configurées. Pour un premier jet de centralisation d’événements « standards », les politiques par défaut sont suffisantes. Le schéma ci-dessous résume de manière très simplifiée les opérations classiques d’un attaquant s’étant introduit sur le réseau (étape 0 : intrus physique, accès via un réseau Wi-Fi mal protégé, utilisateur légitime victime de phishing ou de water holing, compromission d’un logiciel de confiance, etc.) : 1. Persistance, élévation de privilèges locale, découverte du réseau ; 2. Propagation latérale ; 3. Acquisition d’identifiants privilégiés ; 4. Accès aux serveurs métier, recherche d’informations exploitables. Le système proposé permettra une plus grande visibilité sur les phases initiales de l’attaque. 1 Page d’accueil du projet : https://www.graylog.org Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 6 / 50 Handbook – Amélioration des capacités de détection version 1 2 MESURES DE PREMIER NIVEAU 2.1 GENERALITES ET PREREQUIS La stratégie de centralisation s’articule principalement autour du système Windows Event Forwarding (WEF) et fait intervenir les composants suivants : Un collecteur chargé de récupérer les journaux provenant des terminaux (postes de travail, serveurs) ; Le service WinRM (Windows Remote Management) configuré sur les terminaux par stratégie de groupe ; Des abonnements configurés sur le collecteur, définissant les groupes de sécurité concernés et les types d’événements demandés ; Des stratégies de groupe définissant les politiques d’audit (journalisation) sur les terminaux ; Un agent (forwarder Splunk ou LogPoint) déployé sur le collecteur afin d’acheminer les journaux dans le SIEM. Ce guide fait le choix d’un mode de collecte en push : les terminaux se connectent au collecteur pour transférer leurs journaux. Nous estimons que ce modèle est plus sûr, ne nécessitant pas l’ouverture d’un service réseau en écoute sur tous les postes de travail. Le schéma ci-dessous représente une vision simplifiée de l’architecture : Note sur la confidentialité & l’intégrité : par défaut, les communications sont effectuées en HTTP. WEF exploite toutefois Kerberos pour authentifier les terminaux et chiffrer les données échangées. Seul le collecteur peut les déchiffrer. Ce mécanisme est également exploité pour authentifier les connexions entre terminaux et collecteur. Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 7 / 50 Handbook – Amélioration des capacités de détection version 1 Le raisonnement à l’origine de ce guide est d’exploiter au maximum les fonctionnalités natives d’un environnement Windows ; il reste tout de même nécessaire de remplir certains prérequis techniques et organisationnels, décrits cidessous. Versions minimales de Windows requises pour les composants WEF : Intégré par défaut depuis Windows Vista et Windows Server 2008 ; Nécessite une installation pour Windows XP SP2 et Windows Server 2003 SP1 ; Non supporté pour les versions antérieures. Ressources minimales pour le collecteur : Système d’exploitation : Windows, de préférence en déclinaison « serveur », intégré au domaine Processeur : 4 cœurs @ 2 GHz Mémoire : 16 Go Espace disque : 40 Go pour le système, 60 Go de partition de données Cette configuration supporte la charge pour un déploiement sur 3000 postes avec un nombre restreint d’abonnements. Organisation du Domaine Windows et du réseau sous-jacent : Pour l’application des stratégies de groupe : unités d’organisation regroupant les terminaux concernés par la collecte de manière générale (ex. tous les systèmes du domaine) ; Pour la définition des abonnements : groupes de sécurité regroupant les types de terminaux concernés par les différents types de collecte (ex. postes de travail, serveurs) ; Politique de filtrage autorisant les terminaux, le collecteur et le SIEM à communiquer entre eux. Ressources annexes : Lorsque le guide fait référence à des dossiers annexes, il s’agit du contenu accessible en ligne à l’adresse suivante : https://github.com/Intrinsec/WEF-handbook-appendix Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 8 / 50 Handbook – Amélioration des capacités de détection version 1 2.2 CONFIGURER WEF 2.2.1 Déployer le collecteur La machine servant de collecteur devrait être déployée dans un emplacement réseau où elle sera accessible depuis les terminaux et où elle pourra contacter une instance Splunk ou LogPoint. En supposant l’utilisation des ports par défaut, la matrice de flux ci-dessous doit être appliquée (lignes : sources – colonnes : destinations) : Source \ Destination Terminaux Terminaux Collecteur Instance Splunk Instance LogPoint TCP/8089 TCP/9997 TCP/7796 TCP/7797 TCP/7798 TCP/7799 TCP/5985 Collecteur Instance Splunk Instance LogPoint TCP/7794 TCP/7795 Comme indiqué dans les prérequis, voici la configuration matérielle et logicielle minimum du collecteur : Système d’exploitation : Windows, de préférence en déclinaison « serveur », intégré au domaine Processeur : 4 cœurs @ 2 GHz Mémoire : 16 Go Espace disque : 40 Go pour le système, 60 Go de partition de données Cette configuration supporte la charge pour un déploiement sur 3000 postes avec un nombre restreint d’abonnements. Microsoft recommande par ailleurs de ne pas dépasser les limites suivantes pour un collecteur unique : 10 000 terminaux abonnés actifs simultanément 10 000 événements par seconde en moyenne Note importante : les journaux rapatriés via WEF sont localisés dans la langue du système d’exploitation du collecteur. Dans le cas d’un déploiement de plusieurs collecteurs, nous recommandons de systématiquement utiliser les mêmes paramètres de langue afin d’assurer une homogénéité des informations déversées dans le SIEM. Une fois la machine déployée, il ne reste qu’à activer les services « WinRM » et « collecteur d’événements ». Pour ce faire, ouvrir une invite de commandes en tant qu’Administrateur, et exécuter les commandes suivantes : winrm qc o Répondre « y » aux deux propositions wecutil qc o Répondre « o » à la proposition Ces actions auront pour effet de lancer les services, d’activer leur démarrage automatique, ainsi que de configurer les exceptions nécessaires à leur fonctionnement dans le pare-feu Windows. Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 9 / 50 Handbook – Amélioration des capacités de détection version 1 2.2.2 Configurer WEF sur les terminaux via stratégies de groupe Pour activer l’envoi de journaux depuis les terminaux, il est nécessaire de paramétrer trois points : Définir le collecteur souhaité ; Autoriser le compte « Service Réseau » à accéder aux journaux « Sécurité » ; Activer le service WinRM. L’ensemble de ces paramètres peut être configuré par stratégies de groupe, en suivant depuis l’éditeur d’objet stratégies de groupe les instructions pour chaque point. Note : le document référence ici les démarches pas à pas pour la mise en place de stratégies sur des versions françaises de Windows. Un résumé des paramètres et leurs équivalents anglais sont présentés en section 4.2 Référence des paramètres de stratégies de groupe - page 37. Collecteur : Arborescence : Ordinateur > Stratégies > Modèles d'administration > Composants Windows > Transfert d’événements Activer le paramètre « Configurer le Gestionnaire d’abonnements cible » Modifier l’option « SubscriptionManagers » Inscrire la chaîne ci-dessous, qui définit le collecteur qui sera interrogé ainsi que l’intervalle de rafraîchissement (en secondes) des données. Une valeur de 60 peut être appliquée en phase de test, elle pourra être poussée à 180 voire 300 en production : Server=http://<FQDN du collecteur, ex. machine.domaine.local>:5985/wsman/SubscriptionManager/WEC,Refresh=60 Permissions sur le journal « sécurité » : Arborescence : Ordinateur > Stratégies > Paramètres Windows > Paramètres de sécurité > Groupes restreints Dans le panneau latéral, clic droit puis « Ajouter un groupe… » Cliquer sur « Parcourir », entrer « Lecteurs des journaux » dans le champ de recherche, cliquer sur « Vérifier les noms ». Le champ devrait se transformer en « Lecteurs des journaux d’événements » : Valider en cliquant sur « OK » dans les deux fenêtres ouvertes La fenêtre de propriétés du groupe « Lecteurs des journaux d’événements » va s’ouvrir, suivre le bouton « Ajouter… » du cadre « Membres de ce groupe » Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 10 / 50 Handbook – Amélioration des capacités de détection version 1 De la même manière que ci-dessus, cliquer sur parcourir, entrer « SERVICE R » dans le champ de recherche puis cliquer sur « Vérifier les noms » pour étendre la valeur en « SERVICE RÉSEAU » avant de valider les choix : Note importante : la prise en compte de ce paramètre peut nécessiter un redémarrage du système concerné, au-delà de l’application de la stratégie de groupe. Pour ajuster les permissions sur les journaux d’événements sans nécessiter de redémarrage, une procédure alternative basée sur les descripteurs de sécurité est présentée en section 4.3.3 Permissions sur les journaux – descripteurs de sécurité - page 46. Service WinRM : Arborescence : Ordinateur > Préférences > Paramètres du Panneau de configuration > Services Dans le panneau latéral droit, clic droit puis Nouveau > Service Paramétrer les valeurs suivantes : o Démarrage : Automatique o Nom du service : WinRM o Action du service : Démarrer le service Ces paramètres sont suffisants pour activer le service de centralisation des événements sur les terminaux. À ce stade de la configuration, aucun abonnement d’événements n’est défini. Les postes concernés par cette stratégie se contenteront d’interroger le serveur de collecte régulièrement et, sans abonnement configuré, ne transfèreront aucun événement au collecteur. La stratégie peut donc être appliquée à un large groupe de terminaux, peu importe leur type (poste de travail, serveur), du moment qu’ils peuvent joindre le collecteur. 2.2.3 Configurer les abonnements sur le collecteur La stratégie activant le transfert de journaux étant appliquée, l’objectif est désormais de sélectionner les événements qui seront concernés. C’est pour cette étape qu’il faut avoir défini des groupes de sécurité (au sens Windows du terme) comprenant les terminaux classés par types (ex. postes de travail, serveurs). L’exemple ci-dessous présente la création d’un abonnement collectant les événements d’accès distants au poste (connexion réseau type partage de fichiers, PsExec ou RDP). Une liste étendue d’abonnements est décrite plus loin, en section 3.7 Catalogue d’abonnements WEF - page 32. Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 11 / 50 Handbook – Amélioration des capacités de détection version 1 Le déploiement des abonnements par l’interface graphique est accessible et exploitable pour des déploiements à petite échelle. Afin de minimiser les opérations manuelles, il est possible de définir l’ensemble des propriétés d’un abonnement dans un fichier XML directement absorbable par le service de WEF. Cette méthode est détaillée au paragraphe 3.7.5 Automatisation - page 35. Le reste de la présente section décrit l’opération manuelle. Sur le collecteur, ouvrir l’observateur d’événements en tant qu’Administrateur, puis sélectionner la catégorie « Abonnements » dans le panneau latéral de gauche. Effectuer un clic droit sur cette catégorie, puis sélectionner l’option « Créer un abonnement… ». Une nouvelle fenêtre s’affiche ; la remplir avec les valeurs suivantes : Nom d’abonnement : champ libre, par exemple « Postes - accès distants » Journal de destination : vérifier qu’il s’agit bien d’« Événements transférés » Type d’abonnement et ordinateurs sources : sélectionner « Initialisation par l'ordinateur source » o Accéder à « Sélectionner des groupes d'ordinateurs… » o Cliquer sur « Ajouter des ordi. du domaine… » o Choisir un groupe du domaine correspondant au type de terminaux souhaités, pour suivre l’exemple ici : les postes de travail Dans la partie « Événements à recueillir », suivre « Sélectionner des événements… » o Dans la nouvelle fenêtre, naviguer vers l’onglet « XML » o Cocher la case « Modifier la requête ». Un avertissement concernant la non-réversibilité de l’opération apparaîtra, sélectionner « Oui » o Le champ libre peut désormais être rempli par une structure XML décrivant les filtres à appliquer sur la collecte o Afin de poursuivre sur l’exemple des postes de travail, copier-coller les données XML ci-dessous dans le champ de texte libre : Abonnement – Accès distants <QueryList> <Query Id="0" Path="Security"> <Select Path="Security">*[System[(EventID=4624)]]</Select> <Suppress Path="Security"> *[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and (Level=4 or Level=0) and (EventID=4624)]] and *[EventData[ ( (Data[@Name='LogonType']='0' or Data[@Name='LogonType']='2' or Data[@Name='LogonType']='4' or Data[@Name='LogonType']='5' or Data[@Name='LogonType']='7' or Data[@Name='LogonType']='11' or Data[@Name='LogonType']='13') or Data[@Name='TargetUserName']='ANONYMOUS LOGON' or (Data[@Name='TargetUserSID']='S-1-5-18' or Data[@Name='TargetUserSID']='S-1-5-19' or Data[@Name='TargetUserSID']='S-1-5-20') ) ]] </Suppress> </Query> </QueryList> Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 12 / 50 Handbook – Amélioration des capacités de détection version 1 o Valider la requête en cliquant sur « OK » Suivre l’option « Avancé… », qui ouvrira une nouvelle boîte de dialogue o Dans la section « Optimisation de la livraison d’événements », choisir « Minimiser la latence » o Laisser les autres options par défaut Validez les choix en suivant les boutons « OK » jusqu’à fermer la fenêtre de propriétés de l’abonnement Une nouvelle ligne dans l’observateur d’événements va apparaître, correspondant à l’abonnement : Le nombre sous « Ordinateurs sources » devrait augmenter naturellement, en fonction des terminaux concernés par la stratégie de groupe précédemment définie et des groupes d’ordinateurs sélectionnés pour l’abonnement. En cas de problème lié à l’activation des abonnements, les solutions aux causes les plus fréquentes sont référencées en section annexe 4.3.1 Codes d’événements et situations fréquentes - page 46. La dernière étape est alors de configurer le journal « Événements transférés » du collecteur. Depuis l’observateur d’événements, effectuer un clic droit sur ce journal, puis sélectionner dans les propriétés : Journaux : sélectionner un emplacement sur la partition de données Journal max. : 4194304 (représente 4 Go) Lorsque la taille maximale… est atteinte : « Remplacer les événements si nécessaire » Note : il est possible de sélectionner « Archiver le journal lorsqu’il est plein, ne pas effacer d’évènements » pour assurer une meilleure conservation des journaux ; il faut alors prévoir un processus régulier de compression et d’export des événements archivés. Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 13 / 50 Handbook – Amélioration des capacités de détection version 1 2.3 AJOUTER DES CANAUX D’EVENEMENTS À terme, le but de la centralisation est de collecter des événements issus de différentes sources (journaux Sécurité, AppLocker, Sysmon, etc.). Regrouper l’intégralité de ces traces dans le seul journal « Evénements transférés » du collecteur peut compliquer leur traitement. Afin de gérer le déversement des journaux dans le SIEM de manière plus flexible, il est possible de définir des journaux personnalisés. Pour cela, il est nécessaire d’enregistrer un fournisseur d’événements, qui s’appuie sur deux éléments : un fichier de manifeste et une DLL. Nous avons préparé une configuration correspondant aux différentes sources décrites dans ce guide, qui peut être utilisée telle quelle. Si vous souhaitez définir vos propres journaux, reportez-vous à la section 3.6 Canaux d’événements personnalisés - page 31. Le fichier de manifeste et la DLL prêts à l’emploi sont inclus dans le dossier annexe event-channels : EventChannelsFWD.man EventChannelsFWD.dll2 Copier ces deux fichiers dans le dossier C:\Windows\System32 du collecteur, puis exécuter la commande suivante depuis une invite disposant de privilèges Administrateur : wevtutil im C:\Windows\System32\EventChannelsFWD.man La commande ne doit produire aucune sortie sur la console. Une fois l’opération terminée, ouvrir ou relancer l’observateur d’événements. Dans la section « Journaux des Applications et des services », un nouveau dossier « FWD » doit avoir fait son apparition, avec les quatre journaux montrés dans la capture ci-dessous. Ces nouveaux journaux ont les mêmes propriétés que les autres : ils sont enregistrés dans des fichiers .evtx avec des tailles de stockage et des types d’archivage modifiables. Nous recommandons d’augmenter leur taille maximale pour disposer d’un tampon confortable. Par exemple, la commande ci-dessous (à exécuter depuis une invite PowerShell lancée en mode Administrateur) portera la taille maximale de chaque journal à 2 Go : wevtutil el | Select-String -Pattern "^FWD" | %{wevtutil sl $_ /maxsize:2147483648} 2 La DLL incluse a été compilée dans un environnement Windows 7 64 bits en anglais ; nous n’avons rencontré aucun problème en l’utilisant sur des versions plus récentes de Windows configurées avec des langues différentes. Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 14 / 50 Handbook – Amélioration des capacités de détection version 1 2.4 CONFIGURER UN AGENT SPLUNK Au préalable des opérations, télécharger les éléments suivants : Agent Universal Forwarder : https://www.splunk.com/en_us/download/universal-forwarder.html TA Windows : https://splunkbase.splunk.com/app/742/ TA Sysmon : https://splunkbase.splunk.com/app/1914/ Préparer l’instance Splunk Depuis l’interface Web d’administration de l’instance Splunk, effectuer les manipulations suivantes : Settings > Index > « New Index » : valeur libre (ex. « WEF ») Settings > Forwarding and receiving > Configure receiving > New > « Listen on… » : sélectionner 9997 (valeur par défaut) Apps > Manage Apps > « Install app from file » : déployer les TA Windows et Sysmon Installer le forwarder Sur le collecteur, installer l’agent Splunk Universal Forwarder : Au démarrage du setup, cocher la case « accept the License Agreement », laisser la case « on premises » cochée, puis cliquer sur « Customize Options » « Install UniversalForwarder to… » : valeur libre « SSL certificate » : paramétrer en fonction de l’instance Splunk « Install UniversalForwarder as » : choisir « Local System » À l’écran de choix des journaux à transférer : ne rien sélectionner « Deployment server » : indiquer l’adresse IP ou le FQDN de l’instance Splunk, sur le port de l’interface de gestion (par défaut 8089) « Receiving indexer » : indiquer l’adresse IP ou le FQDN de l’instance Splunk, sur le port choisi pour réceptionner les journaux (par défaut 9997) Valider l’installation en choisissant « Install », puis « Finish » Copier le dossier annexe Inputs_WEF vers le dossier C:\SplunkUniversalForwarder\etc\apps et contrôler les points suivants du fichier inputs.conf : Adapter les journaux ciblés (éléments associés aux entrées WinEventLog://) à l’environnement ; les valeurs par défaut correspondent à celles proposées en section 2.3 Ajouter des canaux d’événements - page 14 Adapter l’index « FIXME_WEF » à l’environnement Positionner « disabled » à 0 pour les sources voulues Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 15 / 50 Handbook – Amélioration des capacités de détection version 1 Redémarrer le forwarder pour prendre en compte la nouvelle configuration (commande à exécuter depuis une invite de commandes lancée en mode Administrateur) : C:\SplunkUniversalForwarder\bin\splunk.exe restart Configurer l’instance Splunk Nous présentons ici la procédure pour une infrastructure simple, avec une instance regroupant l’ensemble des rôles « Search Head » et « Indexer ». Pour les cas d’environnements plus complexes, vous pouvez prendre contact avec nos équipes pour prévoir une procédure adaptée à votre contexte. Depuis l’interface d’administration Web de l’instance Splunk, vérifier que le forwarder est bien enregistré : Settings > « Forwarder Management » L’hôte hébergeant le forwarder doit apparaître sur cette page page. Enfin, copier le dossier annexe TA_WEF dans le dossier etc\apps du répertoire d’installation de l’instance. Chemin précis vers les fichiers concernés : Cas d’une instance Windows : <répertoire d’installation>\etc\apps Cas d’une instance Linux : /opt/splunk/etc/apps Pour prendre les changements en compte, l’instance peut nécessiter un redémarrage. Depuis l’interface Web : Settings > Server controls > bouton « Restart Splunk » Une fois cette opération achevée, les journaux devraient commencer à être déversés dans l’instance Splunk. Valider la configuration du système Le bon fonctionnement de l’ensemble peut être vérifié en suivant les étapes suivantes : Générer un événement concerné par les abonnements (par exemple : une connexion réseau) sur une machine du périmètre ; Inspecter les journaux Windows du collecteur et vérifier que l’événement a bien été transféré ; Vérifier la présence de l’événement dans l’index concerné de l’instance Splunk. Depuis l’instance Splunk, les recherches suivantes permettent d’étudier l’état du système de centralisation : index="_*" host="<nom d’hôte du collecteur>" index="_telemetry" "<nom d’un journal, ex. forwardedevents>" Du côté du forwarder déployé sur le collecteur, des journaux de maintenance sont stockés dans le fichier suivant : C:\SplunkUniversalForwarder\var\log\splunk\splunkd.log Des situations d’erreur habituellement rencontrées sont également présentées en section 4.3 Dépannage - page 46. Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 16 / 50 Handbook – Amélioration des capacités de détection version 1 2.5 CONFIGURER UN AGENT LOGPOINT Au préalable des opérations, télécharger les composants suivants de l’agent LogPoint depuis le portail client3 : Agent LogPoint pour Windows Application « LogPoint Agent Collector » Application « LPA Windows » Application « Integrity Scanner » La procédure ci-dessous décrit les étapes à suivre pour LogPoint 6, mais reste similaire pour LogPoint 5. Installer l’agent Sur le collecteur, installer l’agent LogPoint_Agent_<version>.msi. Il n’y a aucune configuration à faire à ce niveau ; l’agent s’installe automatiquement dans « C:\Program Files (x86)\lpagent » et instancie un service « lpagent ». Préparer et configurer l’instance LogPoint Depuis l’interface Web d’administration de l’instance LogPoint, effectuer les manipulations suivantes : Installer les applications Settings > SYSTEM > Applications > « Import » Installer via cet écran les applications LogPoint_Agent_Collector_<version>.pak, LPA_Windows_<version>.pak et Integrity_Scanner_<version>.pak Préparer l’extraction des champs Settings > CONFIGURATION > Normalization Policies > « Add » « Name » : champ libre (ex. « Windows_Forwarded_Events ») Pour « Compiled Normalizer » : sélectionner LPA_Windows Pour « Normalization Packages » : sélectionner LP_Integrity Scanner Valider (submit) Préparer un repo pour les journaux (optionnel) Settings > CONFIGURATION > Repos > « Add » « Repo Name » : champ libre (ex. « wef ») « Retention » : 365 Préparer une routing policy (optionnel) 3 Settings > CONFIGURATION > Routing Policies > « Add Policy » « Name » : champ libre (ex. « wef ») « Catch All » : repo précédemment défini (ex. « wef ») https://customer.logpoint.com/ Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 17 / 50 Handbook – Amélioration des capacités de détection version 1 Préparer une processing policy (optionnel) Settings > CONFIGURATION > Processing Policies > « Add » « Policy Name » : champ libre (ex. « WEF_ProcessingPolicy » « Normalization Policy » : instance créée précédemment (ex. « Windows_Forwarded_Events ») « Enrichment Policy » : None « Routing Policy » : policy définie précédemment (ex. « wef ») Ajouter un agent Settings > CONFIGURATION > Devices > « Add » « Name » : champ libre (ex. « WinEvtCollector01 ») « IP address » : adresse IP du collecteur « Device Groups » : windows « Log Collection Policy » : peut rester vide, adapter en fonction de votre contexte « Distributed Collector » : peut rester vide, adapter en fonction de votre contexte « Risk values » : nous recommandons par défaut C : Minimal / I : Critical / A : Minimal ; adapter en fonction de votre contexte Valider (submit) Définir le type d’agent L’étape précédente doit faire apparaître une grille de sélection du type d’agent. Si ce n’est pas le cas, utiliser le bouton « Add collectors/fetchers » associé à la ligne nouvellement créée : Sélectionner « LogPoint Agent Collector » « Charset » : conserver « utf_8 » « Processing Policy » : policy définie précédemment (ex. « WEF_ProcessingPolicy ») « Template » : « None » Valider (submit) Configurer l’agent L’étape précédente doit faire apparaître une boîte de dialogue demandant « Do you want to configure LogPoint Agent? ». Choisir « Yes ». Si ce n’est pas le cas, l’écran de configuration se trouve dans l’arborescence Settings Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 18 / 50 Handbook – Amélioration des capacités de détection version 1 > SYSTEM > Plugins, filtrer l’affichage en inscrivant « LPA » dans le champ de recherche et cliquer sur le bouton « Manage » associé au plugin « LogPoint Agent Collector » : Onglet « Certificates » : choisir « Generate » Onglet « Global Settings » o Cocher les cases « Enable Batching » et « Enable Buffering » o Laisser les valeurs par défaut et inscrire 768 dans « Warn Limit » o Valider (submit) Onglet « Templates » : choisir « Add » o « Name » : champ libre (ex. WEF) o « Hostname » : optionnel ; nom DNS associé à l’instance LogPoint o « Encryption » : Enabled o « Windows Eventlog Collection » Décocher System, Application et Security Ajouter les catégories personnalisées suivantes (respecter la casse et l’absence d’espace) : ForwardedEvents FWD-AppLocker FWD-PowerShell FWD-Security FWD-Sysmon « Levels » : laisser toutes les cases cochées o Supprimer File Collection, File Integrity Scanner et Windows Registry Scanner o Valider (Save) Onglet « Agents » o Sélectionner le collecteur précédemment créé (ex. « WinEvtCollector01 ») o Choisir le template qui vient d’être défini et valider (Save) o Déployer la nouvelle configuration sur l’agent via le bouton « Push » : Cette dernière étape achève la configuration de l’environnement. Le collecteur devrait commencer à envoyer les événements reçus dans les journaux définis vers l’instance LogPoint. Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 19 / 50 Handbook – Amélioration des capacités de détection version 1 Valider la configuration du système Le bon fonctionnement de l’ensemble peut être vérifié en suivant les étapes suivantes : Générer un événement concerné par les abonnements (par exemple : une connexion réseau) sur une machine du périmètre ; Inspecter les journaux Windows du collecteur et vérifier que l’événement a bien été transféré ; Vérifier la présence de l’événement dans le repo concerné de l’instance LogPoint. Du côté de l’instance LogPoint, la présence de journaux peut être vérifiée en effectuant la recherche suivante : col_type = LPAgent and module_type = event_log Du côté de l’agent déployé sur le collecteur, des journaux de maintenance sont stockés dans le fichier suivant : C:\Program Files (x86)\lpagent\data\lpagent.log Des situations d’erreur habituellement rencontrées sont également présentées en section 4.3 Dépannage - page 46. 2.6 MOTIFS DE RECHERCHE (SIEM) Cette section décrit les motifs à rechercher dans les SIEM. Ils prennent en compte les dispositifs décrits dans le chapitre 3 Mesures étendues (page 24) ; nous recommandons donc d’étudier l’ensemble du document et d’adapter les mesures à vos besoins. À noter que les motifs de recherche présentés ici tiennent compte des stratégies de collecte. Si celles-ci venaient à être élargies, les recherches devront être affinées en conséquence. Enfin, les informations regroupées dans les tableaux permettent d’identifier les cas d’usage généraux. L’extraction des champs pertinents, la définition de motifs d’alertes ou de tableaux de bord devront être réalisées ultérieurement. 2.6.1 Splunk Chaque type d’événement comporte des champs spécifiques. Dans le contexte des journaux transférés, le champ Computer est systématiquement présent et désigne l’hôte source d’un événement transféré. Les requêtes présentées ici sont reproduites dans le fichier README.md du dossier annexe splunk. Authentification réseau Typologie de risque Limites Propagation latérale Une authentification réseau vers un poste de travail peut être un indicateur de compromission fort, il peut s’agir en revanche d’une action légitime pour un serveur. Recherche(s) index="WEF" sourcetype="WinEventLog:ForwardedEvents:Security" EventCode=4624 | table _time, Computer, EventCode, Logon_Type, TargetDomainName, Target_User_Name, Source_Workstation, WorkstationName | sort -_time Corrélations possibles n/a Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 20 / 50 Handbook – Amélioration des capacités de détection version 1 Altération de comptes utilisateurs Typologie de risque Récupération d’identifiants Limites Recherche(s) index="WEF" sourcetype="WinEventLog:ForwardedEvents:Security" EventCode IN (4720, 4740, 4728, 4732, 4756) | table _time, Computer, EventCode, name, SubjectDomainName, SubjectUserName, TargetDomainName, Target_User_Name | sort _time Corrélations possibles n/a Ne couvre pas l’utilisation illégitime d’un compte privilégié. Exécution de programmes suspects Typologie de risque Exécution, Propagation latérale Limites Recherche(s) index="WEF" sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1 | table _time, Computer, user, LogonId, cmdline, Image, CurrentDirectory, SHA256, parent_process | sort -_time Corrélations possibles n/a Collecte effectuée de manière ciblée sur une liste restreinte de processus et d’emplacements. Connexions réseau suspectes Typologie de risque Exécution, Propagation latérale Limites Recherche(s) index="WEF" sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=3 | table _time, Computer, SourceIp, User, DestinationIp, DestinationHostname, DestinationPort, Image | sort -_time Corrélations possibles n/a Collecte effectuée de manière ciblée sur une liste restreinte de processus et d’emplacements. Exécution automatique de programmes au démarrage Typologie de risque Persistance Limites Recherche(s) index="WEF" sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=11 | table _time, Computer, Image, TargetFilename | sort -_time Collecte et recherches ciblées sur une liste restreinte de clés de registre et d’emplacements. index="WEF" sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode IN (12, 13, 14) | table _time, Computer, EventCode, EventType, UserID, Image, TargetObject, object, Details | sort -_time Corrélations possibles n/a Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 21 / 50 Handbook – Amélioration des capacités de détection version 1 Utilisation de PsExec Typologie de risque Propagation latérale Limites Collecte et recherches concentrées exclusivement sur l’outil PsExec. Efficacité limitée du fait du contrôle de l’attaquant sur le nom des binaires et des services PsExec. index="WEF" sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1 Image="*psexe*" Recherche(s) index="WEF" sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=12 TargetObject="*\\Software\\SysInternals\\PsExec*" Corrélations possibles Authentification réseau : identifier l’adresse IP source et le compte utilisé pour exécuter PsExec. 2.6.2 LogPoint Chaque type d’événement comporte des champs spécifiques. Dans le contexte des journaux transférés, le champ « host » est systématiquement présent et désigne l’hôte source d’un événement transféré. Les requêtes présentées ici sont reproduites dans le fichier README.md du dossier annexe logpoint. Authentification réseau Typologie de risque Limites Propagation latérale Une authentification réseau vers un poste de travail peut être un indicateur de compromission fort, il peut s’agir en revanche d’une action légitime pour un serveur. Recherche(s) repo_name = "wef" event_source = "Microsoft-Windows-Security-Auditing" channel = "Security" event_id = 4624 | fields log_ts, host, target_domain, target_user, source_address, workstation Corrélations possibles n/a Altération de comptes utilisateurs Typologie de risque Récupération d’identifiants Limites Recherche(s) repo_name = "wef" event_source = "Microsoft-Windows-Security-Auditing" channel = "Security" (event_id = 4720 OR event_id = 4740 OR event_id = 4728 OR event_id = 4732 OR event_id = 4756) | fields log_ts, host, event_id, group_name, domain, user, target_domain, target_user Corrélations possibles n/a Ne couvre pas l’utilisation illégitime d’un compte privilégié. Exécution de programmes suspects Typologie de risque Exécution, Propagation latérale Limites Collecte effectuée de manière ciblée sur une liste restreinte de processus et d’emplacements. Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 22 / 50 Handbook – Amélioration des capacités de détection version 1 Recherche(s) repo_name = "wef" event_source = "Microsoft-Windows-Sysmon" channel = "Microsoft-Windows-Sysmon/Operational" event_id = 1 | fields log_ts, host, user_id, logonid, commandline, image, currentdirectory, parentimage Corrélations possibles n/a Connexions réseau suspectes Typologie de risque Exécution, Propagation latérale Limites Recherche(s) repo_name = "wef" event_source = "Microsoft-Windows-Sysmon" channel = "Microsoft-Windows-Sysmon/Operational" event_id = 3 | fields log_ts, host, sourceip, domain, user, destinationip, destinationport, image Corrélations possibles n/a Collecte effectuée de manière ciblée sur une liste restreinte de processus et d’emplacements. Exécution automatique de programmes au démarrage Typologie de risque Persistance Limites Recherche(s) repo_name = "wef" event_source = "Microsoft-Windows-Sysmon" channel = "Microsoft-Windows-Sysmon/Operational" event_id = 11 | fields log_ts, host, domain, user, image, targetfilename Collecte et recherches ciblées sur une liste restreinte de clés de registre et d’emplacements. repo_name = "wef" event_source = "Microsoft-Windows-Sysmon" channel = "Microsoft-Windows-Sysmon/Operational" (event_id = 12 OR event_id = 13 OR event_id = 14) | fields log_ts, host, event_id, message, domain, user, image, targetobject, details Corrélations possibles n/a Utilisation de PsExec Typologie de risque Propagation latérale Limites Collecte et recherches concentrées exclusivement sur l’outil PsExec. Efficacité limitée du fait du contrôle de l’attaquant sur le nom des binaires et des services PsExec. repo_name = "wef" event_source = "Microsoft-Windows-Sysmon" channel = "Microsoft-Windows-Sysmon/Operational" event_id = 1 image = "*psexe*" Recherche(s) Corrélations possibles repo_name = "wef" event_source = "Microsoft-Windows-Sysmon" channel = "Microsoft-Windows-Sysmon/Operational" event_id = 12 targetobject = "*\Software\SysInternals\PsExec*" Authentification réseau : identifier l’adresse IP source et le compte utilisé pour exécuter PsExec. Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 23 / 50 Handbook – Amélioration des capacités de détection version 1 3 MESURES ETENDUES 3.1 STRATEGIE D’AUDIT Au-delà de la centralisation des événements, paramétrer une stratégie d’audit et de rétention des journaux sur un système en local permet d’accéder à des informations supplémentaires si une investigation se concentre sur un hôte spécifique. Ces journaux locaux peuvent bien entendu être effacés par un attaquant, mais la stratégie nous semble pertinente si on considère les deux points suivants : Les attaquants doivent obtenir des privilèges d’Administrateur du système pour supprimer des journaux ; L’action d’effacer les journaux peut elle-même être considérée comme un indicateur de compromission. La stratégie décrite ci-dessous augmente la taille de stockage par défaut des journaux « Sécurité » et spécifie un ensemble de paramètres pertinent pour les opérations de réponse à incident. Depuis l’éditeur de stratégies de groupe, suivre l’arborescence suivante : Ordinateur > Stratégies > Paramètres Windows > Paramètres de sécurité > Journal des événements Paramétrer les éléments suivants : Méthode de stockage du journal de sécurité : Activer et paramétrer Remplacer les événements si nécessaire Taille maximale du journal de sécurité : Activer et paramétrer 1048576 (1Go) Depuis l’arborescence Ordinateur > Stratégies > Paramètres Windows > Paramètres de sécurité > Stratégies locales > Options de Sécurité Paramétrer l’élément suivant : Audit : force les paramètres de sous-catégorie de stratégie d’audit (Windows Vista ou version ultérieure) à se substituer aux paramètres de catégorie de stratégie d’audit : Activé Depuis l’arborescence Ordinateur > Stratégies > Paramètres Windows > Paramètres de sécurité > Configuration avancée de la stratégie d’audit > Stratégies d’audit Paramétrer les sous-catégories en suivant le tableau ci-dessous : Stratégie d’audit système Catégorie/Sous-catégorie Système Extension système de sécurité Intégrité du système Pilote IPSEC Autres événements système Modification de l’état de la sécurité Ouverture/Fermeture de session Ouvrir la session Fermer la session Verrouillage du compte Mode principal IPsec Mode rapide IPsec Intrinsec Sécurité – Licence : CC-BY-SA-NC Paramètre Opération réussie Succès et échec Aucun audit Succès et échec Opération réussie Succès et échec Opération réussie Succès et échec Aucun audit Aucun audit Page 24 / 50 Handbook – Amélioration des capacités de détection version 1 Stratégie d’audit système Catégorie/Sous-catégorie Mode étendu IPsec Ouverture de session spéciale Autres événements d’ouverture/fermeture de session Serveur NPS Accès aux objets Système de fichiers Registre Objet de noyau SAM Services de certification Généré par application Manipulation de handle Partage de fichiers Rejet de paquet par la plateforme de filtrage Connexion de la plateforme de filtrage Autres événements d’accès à l’objet Partage de fichiers détaillé Utilisation de privilège Utilisation de privilèges sensibles Utilisation de privilèges non sensibles Autres événements d’utilisation de privilèges Suivi détaillé Fin du processus Activité DPAPI Événements RPC Création du processus Changement de stratégie Modification de la stratégie d’audit Modification de la stratégie d’authentification Modification de la stratégie d’autorisation Modification de la stratégie de niveau règle MPSSVC Modification de la stratégie de plateforme de filtrage Autres événements de modification de stratégie Gestion des comptes Gestion des comptes d’utilisateur Gestion des comptes d’ordinateur Gestion des groupes de sécurité Gestion des groupes de distribution Gestion des groupes d’applications Autres événements de gestion des comptes Accès DS Modification du service d’annuaire Réplication du service d’annuaire Réplication du service d’annuaire détaillé Accès au service d’annuaire Intrinsec Sécurité – Licence : CC-BY-SA-NC Paramètre Aucun audit Succès et échec Succès et échec Succès et échec Aucun audit Aucun audit Aucun audit Aucun audit Aucun audit Aucun audit Aucun audit Aucun audit Aucun audit Aucun audit Succès et échec Aucun audit Aucun audit Aucun audit Aucun audit Aucun audit Succès et échec Succès et échec Aucun audit Succès et échec Succès et échec Succès et échec Succès et échec Succès et échec Aucun audit Succès et échec Succès et échec Succès et échec Succès et échec Succès et échec Succès et échec Aucun audit Succès et échec Aucun audit Succès et échec Page 25 / 50 Handbook – Amélioration des capacités de détection version 1 Stratégie d’audit système Catégorie/Sous-catégorie Connexion de compte Opérations de ticket du service Kerberos Autres événements d’ouverture de session Service d’authentification Kerberos Validation des informations d’identification Paramètre Succès et échec Succès et échec Succès et échec Succès et échec 3.2 PARAMETRAGE DES JOURNAUX OPERATIONNELS D’APPLICATIONS Les paramètres de stratégies de groupe permettent d’agir directement sur les tailles maximales et les modes de conservation des journaux Sécurité, Système et Applications. Pour les journaux opérationnels (situés dans l’arborescence « journaux des applications et des services » de l’observateur d’événements), il est nécessaire d’éditer la base de registre directement. L’opération reste possible via les stratégies de groupe. Depuis l’éditeur de stratégies de groupe, suivre l’arborescence suivante : Ordinateur > Préférences > Paramètres Windows > Registre, puis dans le panneau : Clic droit > Nouveau > Élément Registre Paramétrer les éléments suivants : Action : Mettre à jour Ruche : HKEY_LOCAL_MACHINE Chemin d’accès de la clé : dépendant du journal souhaité. Exemple ci-dessous pour PowerShell SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\Microsoft-Windows-PowerShell/Operational Nom de valeur : MaxSize Type de valeur : REG_DWORD Base : Décimal Données de valeur : à définir, inscrire par exemple 524288000 pour obtenir 500 Mo Note : pour référence, nous incluons ci-dessous d’autres journaux à considérer : AppLocker SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\Microsoft-Windows-AppLocker/EXE and DLL SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\Microsoft-Windows-AppLocker/MSI and Script SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\Microsoft-Windows-AppLocker/Packaged app-Deployment SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\Microsoft-Windows-AppLocker/Packaged app-Execution Sysmon SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\Microsoft-Windows-Sysmon/Operational Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 26 / 50 Handbook – Amélioration des capacités de détection version 1 3.3 JOURNALISATION POWERSHELL PowerShell (aussi appelé Windows Management Framework ou WMF) permet d’interagir en profondeur avec un environnement Windows, et offre des capacités telles que des outils d’attaque entiers sont développés dans ce langage4. Les dernières versions du framework fournissent des capacités de journalisation intéressantes pour des problématiques de réponse à incident. Pour profiter de ces capacités, il faut donc d’abord déployer la dernière version de l’outil (à date : 5.1) : Page d’accueil du projet : https://msdn.microsoft.com/en-us/powershell/mt173057.aspx Page de téléchargement : https://www.microsoft.com/en-us/download/details.aspx?id=54616 En fonction des versions de Windows déployées sur vos contrôleurs de domaine, il est possible que les modèles d’administration de Windows Server 2016 soient nécessaires pour accéder à l’ensemble des options proposées par les stratégies de groupe : Page de téléchargement : https://www.microsoft.com/fr-FR/download/details.aspx?id=53430 Fichiers concernés : PowerShellExecutionPolicy.admx et .adml associés Une des options de journalisation PowerShell offertes par les stratégies de groupe est de retranscrire les commandes et leurs sorties dans des fichiers textes. Par défaut, ces retranscriptions se font dans le dossier de profil de l’utilisateur. Il est possible – et nous recommandons fortement cette approche – de spécifier un emplacement réseau où ces fichiers seront déposés. Nous recommandons donc de prévoir un dossier sur un serveur de fichiers qui sera accessible aux utilisateurs du domaine en écriture seule. Les journaux sont naturellement stockés de manière ordonnée : un dossier est créé par jour, et chaque fichier de journal comprend le nom de la machine source des journaux. Il faut donc prévoir pour ce cas d’usage : Une politique de filtrage autorisant les flux réseau des postes de travail vers le serveur de fichiers (TCP/445) Un dossier qui sera dédié au stockage des journaux PowerShell Des permissions restrictives sur ce dossier, afin de ne pas exposer les journaux aux accès non autorisés. La démarche peut être effectuée par l’intermédiaire des options de sécurité (clic droit sur le dossier > Propriétés > onglet Sécurité > Avancé > Modifier les autorisations) : o Désactiver l’héritage des permissions et choisir de supprimer les permissions héritées o Pour les groupes concernés par la journalisation (ex. « Utilisateurs authentifiés »), définir « Autoriser » sur les permissions suivantes : o Parcours du dossier / exécuter le fichier Création de fichier / écriture de données Création de dossier / ajout de données Attributs d’écriture Écriture d’attributs étendus Pour l’utilisateur spécial « CREATEUR PROPRIETAIRE », définir « Refuser » sur « Contrôle total » 4 Exemple : PowerSploit, un framework comprenant des modules de reconnaissance, d’élévation de privilèges, de récupération d’identifiants, de persistance, et encore d’autres : https://github.com/PowerShellMafia/PowerSploit Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 27 / 50 Handbook – Amélioration des capacités de détection version 1 Si le dossier n’est pas déjà situé dans une arborescence partagée sur le réseau, définir un partage et définir les droits d’accès suivants (clic droit sur le dossier > Propriétés > Partage > Partage avancé > Partager ce dossier > Autorisations) : pour « Tout le monde », appliquer l’autorisation « Modifier » (les permissions sur le dossier sont prioritaires sur les permissions « réseau »). Nous fournissons également dans le dossier annexe powershell un script PrepareTranscriptFolder.ps1 à exécuter sur le serveur de fichiers destiné à accueillir les journaux, qui crée un dossier et lui associe automatiquement un modèle de permissions similaire à celui décrit ci-dessus. Une fois les ces éléments préparés, l’ensemble des paramètres de journalisation se configure via des stratégies de groupe. Depuis l’éditeur de stratégies de groupe, suivre l’arborescence suivante : Ordinateur > Stratégies > Modèles d’administration > Composants Windows > Windows PowerShell Paramétrer les éléments suivants : Activer l’enregistrement des modules Activé Afficher « noms des modules » ; paramétrer en valeur : * Activer la journalisation de blocs de scripts PowerShell Activé Décocher la case « Consigner les événements… » Activer la transcription PowerShell Activé Cocher la case « Inclure les en-têtes de l’appel » « Répertoire de sortie… » : chemin réseau vers le partage décrit plus haut, format type : \\server.domain.tld\shared-folder\ 3.4 SYSMON Sysmon est un outil de la suite SysInternals, permettant de journaliser des événements système (notamment l’exécution de programmes) de manière beaucoup plus fine et flexible que les stratégies d’audit standard. L’utilitaire présente les points forts suivants : Composants standalone : un exécutable et un fichier de configuration, sans dépendances externes Impact négligeable sur les performances des systèmes Configuration sous forme de fichier XML éditable « à la volée » Déploiement et maintenance intégralement opérables par stratégies de groupe Pour déployer Sysmon, nous proposons la procédure suivante : Afin de rendre l’utilitaire accessible aux terminaux, créer un dossier « sysmon » dans un emplacement réseau accessible à tous les postes du domaine (ex. le partage \\domain.tld\ ou \\domain.tld\SYSVOL\domain.tld) Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 28 / 50 Handbook – Amélioration des capacités de détection version 1 Copier le contenu de l'archive sysmon-setup.zip jointe en annexe dans ce dossier Télécharger et copier l’exécutable Sysmon dans ce dossier5 Vérifier les permissions sur les fichiers : pas d'accès en modification pour les utilisateurs du domaine Créer un objet stratégie de groupe o Arborescence Ordinateur > Stratégies > Paramètres Windows > Scripts (démarrage/arrêt) o Double-cliquer sur démarrage, puis Ajouter… et insérer le chemin vers le fichier sysmon-setup.bat (ex. \\domain.tld\sysmon\sysmon-setup.bat) Appliquer la stratégie aux UO souhaitées Le script « sysmon-setup.bat » sera exécuté à chaque démarrage de poste et aura pour effet d’installer Sysmon s’il est absent du système ou de mettre à jour son exécutable et son fichier de configuration. Il est également possible de définir une tâche planifiée exécutant le script à intervalles réguliers pour éliminer la nécessité de redémarrer le poste pour qu’il se mette à jour. Note : nous décrivons ici une méthode générique, qui peut être adaptée en fonction de vos préférences (ex. déploiement par GPO en transformant l’exécutable en .msi). À noter qu’afin de conserver un déploiement homogène, la procédure devra au minimum prévoir les cas suivants : mise à jour du binaire Sysmon, mise à jour du fichier de configuration. 3.5 APPLOCKER AppLocker est un composant intégré à Windows permettant de restreindre l’exécution des programmes sur un système à une liste blanche d’éléments de confiance. Afin d’établir des règles pertinentes sans perturber le bon fonctionnement du S.I., les stratégies peuvent être appliquées en mode audit, où les instances d’applications qui auraient été bloquées sont simplement consignées dans un journal. La fonctionnalité n’est disponible que sur les éditions Enterprise de Windows, et requiert au minimum Windows 7 ou Windows Server 2008R2. La configuration d’AppLocker se fait intégralement par l’intermédiaire de stratégies de groupe. Dans un premier temps, il faut activer le service associé à la fonctionnalité. Depuis l’éditeur de stratégies de groupe, suivre l’arborescence suivante : Ordinateur > Stratégies > Paramètres Windows > Paramètres de sécurité > Services système 5 Éditer le service Identité de l’application, paramétrer Automatique Page de téléchargement de Sysmon : https://docs.microsoft.com/en-us/sysinternals/downloads/sysmon Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 29 / 50 Handbook – Amélioration des capacités de détection version 1 Pour configurer les stratégies, suivre l’arborescence suivante : Ordinateur > Stratégies > Paramètres Windows > Paramètres de sécurité > Stratégies de contrôle de l’application > AppLocker. Ce panneau comporte les différents composants pouvant être contrôlés : Application : applications universelles (anciennement appelées « Metro ») introduites par Windows 8 (.appx) Exécutable : fichiers exécutables (ex. .exe, .com) Windows Installer : fichiers d’installation (ex. .msi) Script : fichiers de script divers (ex. .bat, .ps1, .vbs, .js) L’étape suivante consiste à activer le mode audit : Clic droit > Propriétés sur l’élément AppLocker du panneau latéral, ou clic sur Configurer la mise en application des règles de la fenêtre principale. Dans la nouvelle fenêtre, cocher la case Configuré et choisir l’option Auditer uniquement pour chaque catégorie disponible. Enfin, il s’agit de créer les règles à proprement parler. Pour chacun des composants, effectuer un clic droit sur son intitulé et sélectionner Créer des règles par défaut : Pour affiner les règles, nous recommandons de créer des exceptions ciblées sur les éventuelles applications légitimes en infraction des règles définies. Certains binaires légitimes se trouvent par exemple dans les dossiers « AppData » des utilisateurs. Nous recommandons fortement de ne pas autoriser toutes les exécutions depuis cette arborescence, mais de définir explicitement les applications autorisées. Par exemple, pour OneDrive : Action : Autoriser (Tout le monde) Chemin d’accès : %OSDRIVE%\users\*\appdata\local\microsoft\onedrive\onedrive.exe Aucune exception Les règles venant d’être définies autorisent de manière générale les éléments situés dans les répertoires « privilégiés » de Windows (C:\Windows et C:\Program Files). Il s’agit d’un bon point de départ pour la mise en place d’une stratégie AppLocker, qui pourra suivre les étapes suivantes : Application de la stratégie en mode audit à un échantillon représentatif de systèmes ; Collecte des informations pendant plusieurs jours ; Analyse des journaux & affinage des règles ; Répétition des étapes précédentes jusqu’à obtenir un taux satisfaisant de faux-positifs ; Basculement des règles de Auditer uniquement vers Appliquer les règles. Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 30 / 50 Handbook – Amélioration des capacités de détection version 1 3.6 CANAUX D’EVENEMENTS PERSONNALISES Si les journaux additionnels fournis par la DLL incluse avec ce guide ne conviennent pas, il est tout à fait possible de recompiler une nouvelle DLL présentant une autre convention de nommage. Afin de créer une DLL personnalisée, il faut un fichier de manifeste (inclus dans le dossier annexe event-channels) et le SDK Windows. Nous recommandons de l’installer sur une machine virtuelle jetable portant la même version de Windows que celle du collecteur. Pour télécharger le SDK, suivre les liens ci-dessous en fonction de l’environnement utilisé : Windows 7 / 2008 : https://www.microsoft.com/en-us/download/details.aspx?id=8279 Windows 8.1 / 2012 : https://developer.microsoft.com/fr-fr/windows/downloads/windows-8-1-sdk Windows 10 / 2016 : https://developer.microsoft.com/fr-fr/windows/downloads/windows-10-sdk Une fois le framework installé, nous recommandons d’utiliser l’invite de commandes Windows SDK (Windows SDK Command Prompt) pour la suite des manipulations de cette section ; les chemins vers les différents exécutables sont déjà enregistrés. En cas de problème, les exécutables se trouvent dans les dossiers ci-dessous : MC.exe, RC.exe, ecmangen.exe : C:\Program Files\Microsoft SDKs\Windows\<version>\Bin\<architecture>\ csc.exe : C:\Windows\Microsoft.NET\<architecture>\<version> Pour personnaliser la structure des journaux publiés par la DLL, lancer le générateur de manifeste (ecmangen.exe), et ouvrir le fichier EventChannelsFWD.man : Le nom du fournisseur (FWD) apparaît en haut de l’arborescence, il est possible de le modifier. Les quatre canaux correspondent à ceux que nous avons prédéfinis ; ils peuvent être modifiés ou supprimés à loisir. Il est également possible d’en ajouter, dans la limite de huit canaux par fournisseur. Une fois le contenu prêt, exécuter les commandes suivantes : MC.exe C:\<chemin_manifest>\EventChannelsFWD.man MC.exe -css C:\<chemin_manifest>\EventChannelsFWD.DummyEvent C:\<chemin_manifest>\EventChannelsFWD.man RC.exe C:\<chemin_manifest>\EventChannelsFWD.rc csc.exe /win32res:C:\<chemin_manifest>\EventChannelsFWD.res /unsafe /target:library /out:C:\<chemin_manifest>\EventChannelsFWD.dll C:\<chemin_manifest>\EventChannelsFWD.cs Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 31 / 50 Handbook – Amélioration des capacités de détection version 1 Après la compilation de la DLL, transférer les fichiers EventChannelsFWD.man et EventChannelsFWD.dll sur le collecteur et les déposer dans le dossier \Windows\System32. Pour achever l’opération, ouvrir une invite de commandes en mode Administrateur et exécuter la ligne suivante : wevtutil im C:\Windows\System32\EventChannelsFWD.man Si l’import s’est bien passé, la commande ne doit produire aucune sortie dans la console. Pour vérifier le bon fonctionnement du mécanisme, se reporter à la section 2.3 Ajouter des canaux d’événements - page 14. 3.7 CATALOGUE D’ABONNEMENTS WEF La section 2.2.3 Configurer les abonnements sur le collecteur (page 11) indique la méthodologie pour mettre en place une stratégie de journaux par le système d’abonnements WEF. Ci-dessous, nous présentons des schémas XML correspondant à de nouveaux abonnements pour étendre le périmètre des événements centralisés. Nous recommandons d’associer à chaque abonnement une ou plusieurs catégories de terminaux cibles (postes de travail, serveurs, etc.) afin de conserver une granularité dans les informations collectées. Il est possible d’automatiser cette démarche. Ce point est traité plus loin, en section 3.7.5 Automatisation - page 35. 3.7.1 Journaux « Sécurité » Authentifications réseau Intérêt : Repérer la propagation latérale d’un attaquant Périmètre d’application : Postes de travail <QueryList> <Query Id="0" Path="Security"> <!-- 4624: An account has logged on --> <Select Path="Security">*[System[(EventID=4624)]]</Select> <!-- Excludes logons that are not network-related --> <!-- Excludes anonymous logons --> <!-- Excludes "Local System", "NT Authority (local)", "NT Authority (network)" accounts -> <Suppress Path="Security"> *[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and (Level=4 or Level=0) and (EventID=4624)]] and *[EventData[ ( (Data[@Name='LogonType']='0' or Data[@Name='LogonType']='2' or Data[@Name='LogonType']='4' or Data[@Name='LogonType']='5' or Data[@Name='LogonType']='7' or Data[@Name='LogonType']='11' or Data[@Name='LogonType']='13') or Data[@Name='TargetUserName']='ANONYMOUS LOGON' or (Data[@Name='TargetUserSID']='S-1-5-18' or Data[@Name='TargetUserSID']='S-1-5-19' or Data[@Name='TargetUserSID']='S-1-5-20') )]] </Suppress> </Query> </QueryList> Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 32 / 50 Handbook – Amélioration des capacités de détection version 1 Manipulation de comptes Intérêt : Détecter certaines catégories d’élévation de privilèges Périmètre d’application : Postes de travail, Serveurs <QueryList> <Query Id="0" Path="Security"> <!-- 4720: User account was created --> <!-- 4740: User account locked out --> <!-- 4728: User account was added to security-enabled global group --> <!-- 4732: User account was added to security-enabled local group --> <!-- 4756: User account was added to security-enabled universal group --> <Select Path="Security">*[System[(EventID=4720 or EventID=4740 or EventID=4728 or EventID=4732 or EventID=4756)]]</Select> </Query> </QueryList> Effacement des journaux Intérêt : Détecter des tentatives de suppression des traces d’un attaquant Périmètre d’application : Postes de travail, Serveurs <QueryList> <Query Id="0" Path="Security"> <Select Path="Security"> <!-- 110: Security event log cleared (XP/2003) --> <!-- 1102: Security event log cleared (2008+) --> *[System[Provider[@Name='Microsoft-Windows-EventLog'] and (EventID=110 or EventID=1102)]] </Select> </Query> </QueryList> 3.7.2 PowerShell PowerShell – activité suspecte Intérêt : Repérer l’utilisation de motifs considérés comme suspects par Windows Périmètre d’application : Postes de travail, Serveurs <QueryList> <Query Id="0" Path="Microsoft-Windows-PowerShell/Operational"> <Select Path="Microsoft-Windows-PowerShell/Operational">*[System[(Level=3)]]</Select> </Query> </QueryList> Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 33 / 50 Handbook – Amélioration des capacités de détection version 1 PowerShell – Script Blocks & Modules Intérêt : Assurer la traçabilité des commandes PowerShell Périmètre d’application : Postes de travail, Serveurs <QueryList> <Query Id="0" Path="Microsoft-Windows-PowerShell/Operational"> <Select Path="Microsoft-Windows-PowerShell/Operational">*[System[(Level=4 or Level=0 or Level=5) and (EventID=4103 or EventID=4104)]]</Select> </Query> </QueryList> 3.7.3 Sysmon Sysmon – activité Intérêt : Détecter les motifs définis dans la configuration Sysmon Périmètre d’application : Postes de travail, Serveurs <QueryList> <Query Id="0" Path="Microsoft-Windows-Sysmon/Operational"> <Select Path="Microsoft-Windows-Sysmon/Operational">*[System[((EventID &gt;= 1 and EventID &lt;= 21))]]</Select> <Suppress Path="Microsoft-Windows-Sysmon/Operational">*[System[(EventID=4 or EventID=16 or EventID=255)]]</Suppress> </Query> </QueryList> Sysmon – maintenance Intérêt : Superviser l’état du déploiement de Sysmon, repérer d’éventuelles tentatives d’altération du service Périmètre d’application : Postes de travail, Serveurs <QueryList> <Query Id="0" Path="Microsoft-Windows-Sysmon/Operational"> <Select Path="Microsoft-Windows-Sysmon/Operational">*[System[(EventID=4 or EventID=16 or EventID=255)]]</Select> </Query> </QueryList> 3.7.4 AppLocker AppLocker – Infractions aux règles Intérêt : Identifier l’exécution d’applications en infraction de la stratégie Périmètre d’application : Postes de travail, Serveurs <QueryList> <Query Id="0" Path="Microsoft-Windows-AppLocker/EXE and DLL"> <Select Path="Microsoft-Windows-AppLocker/EXE and DLL">*[System[(EventID=8003)]]</Select> <Select Path="Microsoft-Windows-AppLocker/MSI and Script">*[System[(EventID=8003)]]</Select> </Query> </QueryList> Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 34 / 50 Handbook – Amélioration des capacités de détection version 1 3.7.5 Automatisation L’ensemble des opérations manuelles décrites en section 2.2.3 Configurer les abonnements sur le collecteur (page 11) peut être accéléré avec les ressources incluses dans le dossier annexe subscriptions. Il contient : Un script setup-subscriptions.ps1 permettant l’ajout et l’activation automatique d’abonnements, qui pourra être utilisé directement sur le collecteur ; Des modèles reprenant les abonnements décrits dans ce chapitre avec des propriétés prédéfinies : o Nom d’abonnement : explicite et référence son journal de destination ; o Journal de destination : fournisseur personnalisé avec les valeurs prédéfinies détaillées en section 3.6 Canaux d’événements personnalisés - page 31. o Type d’abonnement : initialisé par l’ordinateur source ; o Ordinateurs sources : définis avec le script setup-subscriptions.ps1 (détaillé plus bas) ; o Événements à recueillir : définition XML comme présentée dans la section précédente ; o Organisation de la livraison : minimiser la latence. Note : le script setup-subscriptions.ps1 nécessite le module Active Directory pour PowerShell, intégré dans les fonctionnalités « outils d’administration de serveur distant ». Sur les versions « serveur » de Windows, il est simplement nécessaire d’activer le module, mais il faut télécharger le composant au préalable pour les versions « poste de travail » : Windows 7 : https://www.microsoft.com/fr-FR/download/details.aspx?id=7887 (KB958830) Windows 10 : https://www.microsoft.com/fr-FR/download/details.aspx?id=45520 (KB2693643) Pour activer le module à proprement parler, ouvrir le composant « Ajouter des fonctionnalités » du Gestionnaire de Serveur ou « Activer ou désactiver des fonctionnalités Windows » du panneau de configuration. Dans la liste proposée, activer le module en suivant l’arborescence suivante : Outils d’administration de serveur distant > Outils d’administration de rôles > Outils AD DS et AD LDS > Module Active Directory pour Windows PowerShell. Pour activer les abonnements, copier le contenu du dossier subscriptions sur le collecteur, puis préparer un ou plusieurs fichiers texte contenant la description des groupes d’ordinateurs sources souhaités : un par ligne, sans préfixe de domaine, en respectant la langue originale de l’Active Directory. Pour l’exemple : Ordinateurs du domaine Contrôleurs de domaine Une fois le fichier de groupes finalisé, ouvrir une invite de commandes PowerShell en mode Administrateur dans le dossier du script setup-subscriptions.ps1 pour l’exploiter. Son mode d’utilisation le plus simple : .\setup-subscriptions.ps1 -TargetGroupsFile <.\fichier_groupes.txt> -Import Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 35 / 50 Handbook – Amélioration des capacités de détection version 1 Le script va commencer par obtenir les SID des groupes décrits dans le fichier désigné par TargetGroupsFile, puis charger les modèles d’abonnements (situés par défaut dans le sous-dossier subscription_templates), puis injecter ces SID dans des fichiers d’abonnement complets, créés dans le sous-dossier subscription_files. L’argument Import entraîne l’activation dans la foulée de ces nouveaux abonnements. Seul l’argument Import nécessite les privilèges d’Administrateur. Il est tout à fait possible de préparer les fichiers à part, puis d’activer les abonnements créés dans le dossier subscription_files ultérieurement, par exemple via la commande PowerShell suivante : Get-ChildItem -Filter "*.xml" | %{ wecutil cs $_.FullName } Il est par ailleurs possible de préparer plusieurs fichiers de groupes cibles et de répartir les modèles d’abonnement dans plusieurs dossiers sources pour définir des périmètres d’abonnements plus granulaires. Exemple d’utilisation : > > > > .\setup-subscriptions.ps1 -TargetGroupsFile .\all_computers.txt -TemplatesFilesPath .\subs_all .\setup-subscriptions.ps1 -TargetGroupsFile .\sub_group_1.txt -TemplatesFilesPath .\subs_custom_1 .\setup-subscriptions.ps1 -TargetGroupsFile .\sub_group_2.txt -TemplatesFilesPath .\subs_custom_2 Get-ChildItem .\subscription_files -Filter "*.xml" | %{ wecutil cs $_.FullName } Un dossier complémentaire de modèles d’abonnements subscription_templates-2_month_history est inclus en annexe. Il limite la récupération des événements aux deux derniers mois, permettant de ne pas saturer le collecteur lors du déploiement des abonnements sur des systèmes existants. La limite des deux mois est fixée par la condition « TimeCreated » et une valeur en secondes ; qui peut être modulée en fonction des besoins : (TimeCreated[timediff(@SystemTime) &lt;= 5256000000]) 3.7.6 Aller plus loin Les abonnements décrits dans ce document sont prévus pour se concentrer sur un nombre restreint de motifs de malveillance. Comme indiqué en introduction, le système a pour vocation d’être entretenu et développé. Des ressources présentant des abonnements WEF étendus sont par exemple inclus en section 4.4 Remerciements et Bibliographie - page 48. Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 36 / 50 Handbook – Amélioration des capacités de détection version 1 4 ANNEXES 4.1 RESSOURCES ET FICHIERS L’ensemble des données annexes référencées dans ce guide est accessible en ligne à l’adresse suivante : https://github.com/Intrinsec/WEF-handbook-appendix 4.2 REFERENCE DES PARAMETRES DE STRATEGIES DE GROUPE 4.2.1 Français Configurer WEF sur les terminaux Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 37 / 50 Handbook – Amélioration des capacités de détection version 1 Stratégie d’audit Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 38 / 50 Handbook – Amélioration des capacités de détection version 1 Paramétrage des journaux opérationnels Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 39 / 50 Handbook – Amélioration des capacités de détection version 1 Journalisation PowerShell 4.2.2 Anglais Paramètres d’audit System audit policy Category/Subcategory System Security System Extension System Integrity IPsec Driver Other System Events Security State Change Logon/Logoff Logon Logoff Account Lockout IPsec Main Mode IPsec Quick Mode IPsec Extended Mode Special Logon Other Logon/Logoff Events Network Policy Server Object Access File System Registry Kernel Object SAM Certification Services Application Generated Handle Manipulation File Share Filtering Platform Packet Drop Setting Success Success and Failure No Auditing Success and Failure Success Success and Failure Success Success and Failure No Auditing No Auditing No Auditing Success and Failure Success and Failure Success and Failure No Auditing No Auditing No Auditing No Auditing No Auditing No Auditing No Auditing No Auditing No Auditing Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 40 / 50 Handbook – Amélioration des capacités de détection version 1 System audit policy Category/Subcategory Filtering Platform Connection Other Object Access Events Detailed File Share Privilege Use Sensitive Privilege Use Non Sensitive Privilege Use Other Privilege Use Events Detailed Tracking Process Termination DPAPI Activity RPC Events Process Creation Policy Change Audit Policy Change Authentication Policy Change Authorization Policy Change MPSSVC Rule-Level Policy Change Filtering Platform Policy Change Other Policy Change Events Account Management User Account Management Computer Account Management Security Group Management Distribution Group Management Application Group Management Other Account Management Events DS Access Directory Service Changes Directory Service Replication Detailed Directory Service Replication Directory Service Access Account Logon Kerberos Service Ticket Operations Other Account Logon Events Kerberos Authentication Service Credential Validation Setting No Auditing Success and Failure No Auditing No Auditing No Auditing No Auditing No Auditing Success and Failure Success and Failure No Auditing Success and Failure Success and Failure Success and Failure Success and Failure Success and Failure No Auditing Success and Failure Success and Failure Success and Failure Success and Failure Success and Failure Success and Failure No Auditing Success and Failure No Auditing Success and Failure Success and Failure Success and Failure Success and Failure Success and Failure Groupes et utilisateurs o Lecteurs des journaux d’événements : Event Log Readers o Service réseau : Network Service Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 41 / 50 Handbook – Amélioration des capacités de détection version 1 Composants PowerShell o Outils d’administration du serveur distant : Remote Server Administration Tools (RSAT) o Activer ou désactiver des fonctionnalités Windows : Turn Windows features on or off o Chemin pour le module PowerShell : Remote Server Administration Tools > Role Administration Tools > AD DS and AD LDS Tools > Active Directory Module for Windows PowerShell Configurer WEF sur les terminaux Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 42 / 50 Handbook – Amélioration des capacités de détection version 1 Stratégie d’audit Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 43 / 50 Handbook – Amélioration des capacités de détection version 1 Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 44 / 50 Handbook – Amélioration des capacités de détection version 1 Paramétrage des journaux opérationnels Journalisation PowerShell Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 45 / 50 Handbook – Amélioration des capacités de détection version 1 4.3 DEPANNAGE 4.3.1 Codes d’événements et situations fréquentes Sur le collecteur, dans le journal « Evénements transférés » : ID 111 : l’ordinateur source s’est correctement enregistré auprès du collecteur. Sur les terminaux, dans l’arborescence Journaux des applications […] > Microsoft > Windows > EventLog- ForwardingPlugin : ID 102, code d’erreur 5004 : le journal concerné par l’abonnement ne peut pas être lu ; la cause probable est le manque de permissions du compte « Service Réseau » (voir sections 2.2.2 Configurer WEF sur les terminaux via stratégies de groupe - page 10 et 4.3.3 Permissions sur les journaux – descripteurs de sécurité - page 46. ID 105, message « Accès refusé » : peut se produire lors de l’utilisation de sources hors-domaine ou lorsque le collecteur s’appuie sur Windows 7/2008. Un correctif Microsoft est disponible6. 4.3.2 Structures XML et limites des abonnements WEF Le système d’abonnement WEF utilise XPath 1.0 pour interpréter les données XML. Cette version du langage est limitée à 15 opérateurs « OR » au sein d’une même paire de balises. Cette limite se contourne en répartissant la requête dans plusieurs balises <query>. 4.3.3 Permissions sur les journaux – descripteurs de sécurité La section 2.2.2 Configurer WEF sur les terminaux via stratégies de groupe (page 10) indique comment paramétrer l’export des journaux en ajoutant le compte « Service Réseau » au groupe « Lecteurs des journaux d’événements ». Dans certaines conditions, ce mode peut occasionner des dysfonctionnements sans raison apparente. Il est alors possible de configurer les permissions de manière plus fine, comme indiqué ci-dessous. Tous les journaux Windows sont associés à un descripteur de sécurité représentant les groupes et leurs permissions sur ce journal. Ce descripteur de sécurité peut être obtenu depuis un terminal quelconque joint au domaine. Il suffit d’exécuter la commande suivante depuis une invite de commandes ouverte en mode Administrateur : wevtutil gl <journal> Exemple pour le journal « Sécurité » : wevtutil gl security La sortie de la commande doit comporter une ligne intitulée « channelAccess », suivie d’une chaîne de caractères commençant par « O:BAG:SYD:». La chaîne doit contenir la valeur (A;;0x1;;;NS), qui correspond aux permissions suivantes : 6 Type d’accès : « A » correspond à « ACCESS_ALLOWED » ; Article Microsoft détaillant les symptômes et le correctif : EN : https://support.microsoft.com/en-us/help/2884172/fix-access-is-denied-error-occurs-on-some-source-initiated-subscriptio FR : https://support.microsoft.com/fr-fr/help/2884172/fix-access-is-denied-error-occurs-on-some-source-initiated-subscriptio Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 46 / 50 Handbook – Amélioration des capacités de détection version 1 Permissions : « 0x1 » correspond à « GENERIC_ALL » ; Compte concerné : « NS » correspond à « Network Service ». Si ce n’est pas le cas, il est possible de configurer manuellement le descripteur de sécurité par stratégie de groupe. Par exemple, pour le journal « Sécurité », créer un objet Stratégie de groupe avec les paramètres suivants : Arborescence : Ordinateur > Stratégies > Modèles d'administration > Composants Windows > Service Journal des événements > Sécurité Activer le paramètre « Configurer l’accès au journal » Dans le champ « Accès au journal », inscrire la chaîne de caractères correspondant au descripteur de sécurité du journal, et y concaténer la valeur (A;;0x1;;;NS). Par exemple, pour un journal « Sécurité » : O:BAG:SYD:(A;;0xf0005;;;SY)<...valeurs intermédiaires...>(A;;0x1;;;NS) Pour les journaux « opérationnels », ce paramètre ne peut pas être modifié par la méthode décrite ci-dessus. Il est nécessaire d’effectuer des manipulations au niveau du registre, qui peuvent toujours être appliquées par stratégie de groupe. Dans un premier temps, il s’agit de vérifier si le journal en question nécessite une autorisation particulière. Les journaux suivants nécessitent un traitement ; nous recommandons de vérifier manuellement en cas d’ajout d’autres sources de données : Sysmon (journal Microsoft-Windows-Sysmon/Operational) La procédure suivante prend pour exemple Sysmon. Depuis une invite de commandes privilégiée exécutée sur un hôte du domaine, exécuter les commandes suivantes : Si nécessaire, pour identifier le journal souhaité : wevtutil el | findstr /I sysmon Obtenir les propriétés du journal souhaité : wevtutil gl Microsoft-Windows-Sysmon/Operational Noter la valeur de la ligne « channelAccess » (chaîne de caractères O:BAG:SYD:<…>) Ajouter à cette chaîne le suffixe suivant : (A;;0x1;;;NS) Conserver cette nouvelle chaîne pour utilisation ultérieure Depuis l’éditeur de stratégies de groupe, suivre l’arborescence suivante : Ordinateur > Préférences > Paramètres Windows > Registre, puis dans le panneau : Clic droit > Nouveau > Élément Registre Paramétrer les éléments suivants : Action : Mettre à jour Ruche : HKEY_LOCAL_MACHINE Chemin d’accès de la clé : dépendant du journal souhaité. Exemple ci-dessous pour Sysmon : SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\Microsoft-Windows-Sysmon/Operational Nom de valeur : ChannelAccess Type de valeur : REG_SZ Données de valeur : chaîne de l’étape précédente : O:BAG:SYD:<...valeurs intermédiaires...>(A;;0x1;;;NS) Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 47 / 50 Handbook – Amélioration des capacités de détection version 1 4.4 REMERCIEMENTS ET BIBLIOGRAPHIE Merci à Emmanuel Mocquet, Arthur Chagnier, Thomas Millochau, Aurélien Marteau et Quentin Lemaire pour leur aide et leurs contributions. Un grand merci aux autrices et auteurs des articles référencés ici pour le partage et la diffusion de leurs connaissances. Microsoft. Windows Event Forwarding. 2016. https://aka.ms/WEF - page d’agrégation de ressources ; référence plusieurs des articles présentés ci-dessous. Jessica Payne. Monitoring what matters – Windows Event Forwarding for everyone (even if you already have a SIEM.). 2015. https://blogs.technet.microsoft.com/jepayne/2015/11/23/monitoring-what-matters-windows-event-forwarding-for-everyone-even-if-you-already-have-a-siem/ Ted Hardy, Brian Lich. Use Windows Event Forwarding to help with intrusion detection. 2017. https://docs.microsoft.com/en-us/windows/threat-protection/use-windows-event-forwarding-to-assist-in-instrusion-detection Chris L., Dane S., Joshua B. Windows Event Forwarding for Network Defense. 2017. https://medium.com/@palantir/windows-event-forwarding-for-network-defense-cb208d5ff86f https://github.com/palantir/windows-event-forwarding Russel Tomkins. Creating Custom Windows Event Forwarding Logs. 2016. https://blogs.technet.microsoft.com/russellt/2016/05/18/creating-custom-windows-event-forwarding-logs/ Russel Tomkins. Introducing Project Sauron – Centralised Storage of Windows Events – Domain Controller Edition. 2017. https://blogs.technet.microsoft.com/russellt/2017/05/09/project-sauron-introduction/ https://github.com/russelltomkins/Project-Sauron Andrei Miroshnikov. Windows 10 and Windows Server 2016 security auditing and monitoring reference. 2016. https://www.microsoft.com/en-us/download/details.aspx?id=52630 ANSSI. Recommandations de sécurité relatives à Active Directory. 2014. https://www.ssi.gouv.fr/guide/recommandations-de-securite-relatives-a-active-directory/ Malware Archaeology. Windows Logging Cheat Sheet. 2016. https://www.malwarearchaeology.com/cheat-sheets/ Mark Russinovich. Tracking Hackers on Your Network with Sysinternals Sysmon. 2016. https://www.rsaconference.com/writable/presentations/file_upload/hta-w05-tracking_hackers_on_your_network_with_sysinternals_sysmon.pdf Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 48 / 50 Handbook – Amélioration des capacités de détection version 1 @SwiftOnSecurity. sysmon-config | A Sysmon configuration file for everybody to fork. 2017. https://github.com/SwiftOnSecurity/sysmon-config @ionstorm. Advanced Threat detection Configurations for Graylog. 2017. https://github.com/ion-storm/Graylog_Sysmon Tom Ueltschi. Advanced Incident Detection and Threat Hunting using Sysmon (and Splunk). 2016. https://www.botconf.eu/wp-content/uploads/2016/11/PR12-Sysmon-UELTSCHI.pdf Alec Randazzo, Thomas Aneiro, James Espinosa. Splunkmon — Taking Sysmon to the Next Level. 2016. http://www.crypsisgroup.com/images/site/CG_WhitePaper_Splunkmon_1216.pdf https://github.com/crypsisgroup/Splunkmon/blob/master/sysmon.cfg Lee Holmes. Advances in Scripting Security and Protection in Windows 10. 2015. https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components. WeblogFiles/00/00/00/63/74/5483.Scripting%20Security%20and%20Protection%20Advances%20in%20Windows%2010.docx Version en ligne : PowerShell♥ the Blue Team. 2015. https://blogs.msdn.microsoft.com/powershell/2015/06/09/powershell-the-blue-team/ MITRE. Adversarial Tactics, Techniques & Common Knowledge. 2015. https://attack.mitre.org David J. Bianco. Threat Hunting Project. 2016. http://www.threathunting.net/ https://github.com/ThreatHuntingProject/ThreatHunting/tree/master/hunts JPCERT/CC. Detecting Lateral Movement through Tracking Event Logs. 2017. Version 1 : https://www.jpcert.or.jp/english/pub/sr/20170612ac-ir_research_en.pdf Version 2 : https://jpcertcc.github.io/ToolAnalysisResultSheet/ Jonathon Poling. Windows RDP-Related Event Logs: Identification, Tracking, and Investigation. 2018. https://ponderthebits.com/2018/02/windows-rdp-related-event-logs-identification-tracking-and-investigation/ Intrinsec Sécurité – Licence : CC-BY-SA-NC Page 49 / 50 Handbook – Amélioration des capacités de détection version 1 5 À PROPOS D’INTRINSEC Intrinsec est une société spécialisée en cybersécurité, appartenant au groupe Neurones, et proposant des services d’accompagnement et d’expertise autour de tous les enjeux de cybersécurité : protection du patrimoine informationnel et de l’image de marque, continuité d’activité, lutte contre la cybercriminalité et cyberdéfense. Labélisée par l’ANSSI pour ses activités d’audit, Intrinsec est un acteur de confiance appuyant son positionnement sur l’expertise et le développement d’une relation partenariale avec ses clients. Quatre pôles d’activités sont développés au sein de la structure : Évaluation de la sécurité (test d’intrusion & audit de sécurité) Maîtrise des risques numériques (accompagnement RSSI, management SSI & sensibilisation) Services managés (services de détection des incidents, réponse aux incidents, cyber threat intelligence) Innovation contact@intrinsec.com 01 41 91 77 77 https://www.intrinsec.com Intrinsec Sécurité – Licence : CC-BY-SA-NC @Intrinsec Page 50 / 50