Avec les dernières nouvelles concernant la généralisation de Log4Shell (CVE-2021-44228) et des tentatives d’exploitation, les MSP et les équipes informatiques ont travaillé sans relâche pour évaluer leur exposition, rechercher des Indicateurs de Compromission (IoC) potentiels, appliquer des mesures d’atténuation et appliquer des correctifs.
Le problème est que, puisque cette vulnérabilité affecte beaucoup d’applications, et que tous les fournisseurs n’ont pas été en mesure de fournir une réponse claire sur le fait que leurs produits sont affectés ou non (remarque : NinjaOne ne l’est pas), déterminer quels systèmes sont potentiellement vulnérables est un grand défi.
Ce problème a conduit un certain nombre de chercheurs en sécurité et de membres de la communauté à créer des scripts pouvant être utilisés pour analyser les environnements à la recherche de fichiers Log4j potentiellement vulnérables et de signes d’Indicateurs de Compromission (IoC).
En voici quelques exemples :
- Script de détection des fichiers Log4j de Kelvin Tegelaar
- Ninja-Log4shell-Scanner de Jan Scholte
- get-log4jrcevulnerability.ps1 par Prejay Shah
- CVE-2021-44228-Log4Shell-Hashes de Rob Fuller
- Log4shell-detector de Florian Roth (détecte les tentatives d’exploitation, mais PAS les applications vulnérables)
La décision d’utiliser l’un ou l’autre des scripts disponibles vous appartient entièrement (il faut toujours tester et effectuer les contrôles préalables appropriés, bien sûr), mais si vous trouvez un script que vous voulez essayer, cet article vous montrera comment le déployer sur votre réseau en utilisant les champs personnalisés dans NinjaOne.
Avant de nous plonger dans le vif du sujet, si vous souhaitez vous familiariser avec Log4Shell, vous trouverez ci-dessous d’excellentes ressources :
- Une explication fantastique de Log4Shell par John Strand de chez Black Hills Information Security
- Bonne vue d’ensemble de Log4Shell avec des mises à jour régulières de Huntress
- Conseils de la « Cybersecurity and Infrastructure Security Agency » (CISA) sur les vulnérabilités de Log4j
Exemple de surveillance des fichiers Log4j à l’aide de NinjaOne
Pour configurer un monitoring personnalisé qui détecte la présence de fichiers Log4J de la bibliothèque des terminaux dans Ninja, vous aurez besoin de :
- Un champ personnalisé
- Un script pour collecter et stocker les données (exemple ci-dessous, ou vous pouvez vous référer aux autres exemples cités ci-dessus)
- Une condition personnalisée pour créer une alerte
- Une méthode pour déployer le script de détection
Configurer le champ personnalisé
Le champ personnalisé sera utilisé pour stocker les données renvoyées par le script de détection.
1) Ajoutez un nouveau champ personnalisé. Comme nous allons contrôler le résultat du script sur tous les terminaux, nous allons créer un champ personnalisé général.
2) Le champ personnalisé sera nommé log4j et sera défini comme étant de type Multi-ligne. Nous utilisons le terme « multi-ligne » car chaque terminal peut avoir plusieurs fichiers présentant des vulnérabilités. La présence de plusieurs lignes rendra cette information plus lisible.
3) Nous devons ensuite configurer le champ personnalisé. Nous allons définir l’ accès du script en lecture/écriture.
Remarque : si l’accès du script n’est pas défini sur ‘Écriture seulement’ ou ‘Lecture/écriture’, vous ne pourrez pas écrire dans ce champ à partir d’un script.
C’est tout ce qui est nécessaire pour configurer le champ personnalisé si nous configurons un champ personnalisé général.
Créer un script pour extraire des données
À des fins d’illustration, nous utiliserons un script d’exemple ci-dessous, inspiré du script de Kelvin Tegelaar disponible sur CyberDrain et dans la Communauté du Dojo de NinjaOne. La principale différence avec le script de Kelvin est qu’il utilise un outil externe appelé « Everything » qui permet d’accélérer son exécution.
Veuillez noter qu’il existe d’autres scripts en circulation auxquels vous pouvez également vous référer et que vous pouvez personnaliser , notamment :
- Ninja-Log4shell-Scanner de Jan Scholte
- get-log4jrcevulnerability.ps1 par Prejay Shah
Ceux-ci peuvent fournir des résultats plus rapides et plus efficaces.
*** Attention : L’utilisation de l’un de ces scripts dans Ninja relève de votre propre responsabilité et de vos propres risques. ***
$array = @() $Drives = Get-PSDrive -PSProvider 'FileSystem' foreach($Drive in $Drives) { $drivePath = $Drive.name + ":" $array += gci $drivePath -rec -force -include *.jar -ea 0 | foreach {select-string "JndiLookup.class" $_} | select -exp Path } If ($array -ne $null) { $array += “Menace Potentielle Détectée”} Ninja-Property-Set log4j $array
*Remarque : pour les appareils sous Windows 8, vous devrez peut-être supprimer la commande ‘-force’ de la commande Get-ChildItem (gci).
Ninja-Property-Set est la commande Powershell de Ninja permettant de définir un champ personnalisé à une valeur spécifique. La syntaxe est la suivante :
Ninja-Property-Set NomDuChamp Valeur
Dans ce cas, nous définissons le champ log4j à la valeur stockée dans la variable $array.
L’ajout de ce script à Ninja est facile.
1) Naviguez vers « Configuration » -> « Écriture de script »
2) Cliquez sur « Créer un nouveau script »
3) Copiez le code ci-dessus dans l’environnement de développement intégré (EDI)
- Si votre champ personnalisé n’est pas nommé « log4j », mettez à jour le nom du champ à côté de Ninja-Property-Set
4) Définissez les paramètres du script comme suit
- Nom : Détection de Log4J
- Langue : PowerShell
- Système d’exploitation : Windows
- Architecture : Toutes
5) Enregistrez le script
Configuration du moniteur de surveillance
Les conditions dans Ninja sont utilisées pour surveiller les changements d’état d’un terminal. Ninja inclut la possibilité de contrôler les champs personnalisés. Nous allons configurer un moniteur qui émettra une alerte en fonction des résultats renvoyés dans notre champ Log4J.
1) Dans la stratégie que vous avez choisie, allez dans la rubrique « Conditions » et cliquez sur « Ajouter une condition »
2) Sélectionnez le type de condition « Champs Personnalisés »
3) Sous « La valeur du champ personnalisé doit répondre à toutes les conditions », sélectionnez « Ajouter » et cherchez « Log4J »
4) Réglez le choix sur « contient » et ajoutez « Menace Potentielle Détectée »
5) Définissez les paramètres de gravité, de priorité, de canal de notification et de ticketing selon vos préférences, puis cliquez sur « Ajouter »
6) Si vous avez intégré votre PSA ou si vous utilisez Ninja Ticketing, vous pouvez également créer un ticket via la condition
Déployer le script
La dernière étape de ce processus consiste à exécuter le script. Vous pouvez exécuter le script :
- Ponctuellement sur des appareils individuels via la bibliothèque de scripts
- Ponctuellement sur plusieurs appareils en ligne via la fonction de recherche
- Automatiquement via des tâches planifiées
- Automatiquement via les stratégies
Découvrez ce que vous pouvez accomplir d’autre en utilisant les champs personnalisés dans NinjaOne
Ce n’est qu’un exemple de la façon dont l’utilisation de champs personnalisés dans NinjaOne peut vous aider à déployer une surveillance personnalisée et une automatisation puissante. Nous commençons une nouvelle série consacrée au partage d’autres exemples, et vous pouvez voir le premier article ici.