Avec les dernières nouvelles concernant la généralisation de Log4Shell (CVE-2021-44228) et des tentatives de piratage, 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 et des outils permettant de rechercher des fichiers Log4j potentiellement vulnérables et des signes d’IoC dans les environnements.
En voici quelques exemples :
- Testeur de vulnérabilités Log4Shell de Huntress
- Script de détection des fichiers Log4j de Kelvin Tegelaar
- Ninja-Log4shell-Scanner de Jan Scholte
- get-log4jrcevulnerability.ps1 par Prejay Shah
- Outil d’énumération, d’atténuation et de détection des attaques Log4Shell de Datto
- Scan Powershell Log4j/Log4Shell d’AshtonSolutions, conçu pour être utilisé avec Ninja.
- 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, vous trouverez ci-dessous d’excellentes ressources si vous souhaitez vous familiariser avec Log4Shell (en anglais) :
- Une excellente explication 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 depuis NinjaOne une surveillance personnalisée qui détecte la présence de fichiers de la bibliothèque Log4J sur les terminaux, il vous faudra :
- 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 un 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) Il faut ensuite configurer le champ personnalisé. Nous allons définir l’accès du script sur lecture/écriture.
Remarque : si l’accès du script n’est pas défini sur « écriture seulement » ou « lecture/écriture », ce champ ne sera pas éditable à partir d’un script.
C’est tout en ce qui concerne la configuration d’un champ personnalisé si nous configurons un champ personnalisé général.
Créer un script pour extraire des données
À des fins d’exemple, nous utiliserons ci-dessous un script inspiré de celui 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
Ces derniers 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”