Con le notizie che si susseguono in merito a Log4Shell (CVE-2021-44228) e ai sempre più diffusi tentativi di sfruttarlo, gli MSP e i team IT stanno lavorando senza sosta per monitorare i file Log4j, capire se sono stati esposti alla minaccia, per rilevare potenziali IoC, applicare forme di riduzione del rischio e risolvere i problemi.
Poiché questa vulnerabilità riguarda un così elevato numero di applicazioni e poiché non tutti i fornitori sono stati in grado di fornire informazioni chiare sull’eventualità che i loro prodotti siano stati interessati (nota: NinjaOne non è stato interessato), stabilire quali sistemi sono potenzialmente vulnerabili costituisce una grande sfida.
Questo problema ha spinto alcuni ricercatori e membri della comunità della sicurezza a creare script e strumenti da utilizzare per scansionare gli ambienti alla ricerca di file Log4j potenzialmente vulnerabili e di segni di IoC.
Tra gli esempi ci sono:
- Il tester di vulnerabilità a Log4Shell di Huntress
- Lo script per il rilevamento dei file Log4j di Kelvin Tegelaar
- Ninja-Log4shell-Scanner di Jan Scholte
- get-log4jrcevulnerability.ps1 di Prejay Shah
- Lo strumento di enumerazione, riduzione del rischio e rilevamento degli attacchi Log4Shell di Datto
- Log4j/Log4Shell PowerShell Scan, progettato da AshtonSolutions per essere usato con NinjaOne
- CVE-2021-44228-Log4Shell-Hashes di Rob Fuller
- log4shell-detector di Florian Roth (che rileva i tentativi di exploitation e NON le applicazioni vulnerabili)
La decisione di utilizzare uno degli script disponibili dipende esclusivamente da te (naturalmente ti consigliamo di fare sempre delle prove e le necessarie ricerche); se trovi uno script che desideri provare, questo post ti mostrerà un esempio di come distribuirlo sulla tua rete sfruttando i campi personalizzati di NinjaOne.
Prima di approfondire questo argomento, se stai cercando di migliorare le tue conoscenze su Log4Shell ti consigliamo di consultare le seguenti eccellenti risorse:
- Una eccellente spiegazione di cosa sia Log4Shell di John Strand, sul canale YouTube di Black Hills Information Security
- Una buona panoramica di Log4Shell con aggiornamenti regolari da parte di Huntress
- La guida alle vulnerabilità di Log4j di CISA
Ecco un esempio di come monitorare i file Log4j utilizzando NinjaOne
Per configurare un monitoraggio personalizzato che rilevi la presenza di file di libreria Log4J sugli endpoint in NinjaOne, avrai bisogno di:
- Un campo personalizzato
- Uno script che raccolga e memorizzi i dati (vedi l’esempio che segue; in alternativa fai riferimento ad altri esempi citati in precedenza)
- Una condizione personalizzata per creare un avviso
- Un metodo per distribuire lo script di rilevamento
Configurare il campo personalizzato
Il campo personalizzato sarà utilizzato per memorizzare i dati restituiti dallo script di rilevamento.
1) Aggiungi un nuovo campo personalizzato. Dal momento che monitoreremo il risultato dello script su tutti gli endpoint, creeremo un campo personalizzato globale.
2) Il campo personalizzato avrà come nome log4j e sarà impostato come tipo Multilinea. Utilizziamo il tipo multilinea perché ogni endpoint può avere più file con vulnerabilità. Il tipo multilinea consentirà di rendere più leggibili queste informazioni.
3) Poi dovremo configurare il campo personalizzato. Procederemo quindi impostando Accesso script su Lettura/Scrittura.
Nota: se l’accesso script non è impostato su “Scrittura” o “Lettura/Scrittura”, non sarai in grado di scrivere in questo campo con uno script.
Se stiamo configurando un campo personalizzato globale, questo è tutto ciò che serve fare.
Creazione di uno script per estrarre i dati
A scopo illustrativo, utilizzeremo uno script di esempio basato su quello di Kelvin Tegelaar fornito su CyberDrain e nella NinjaOne Community Dojo. La differenza principale con lo script di Kelvin è che questo utilizza uno strumento esterno chiamato “Everything” che ne velocizza l’esecuzione.
Tieni presente che sono disponibili altri script a cui puoi fare riferimento e che possono essere personalizzati , tra cui:
Questi script potrebbero fornire risultati più rapidi ed efficienti.
*** Dichiarazione di non responsabilità: L’utilizzo di questi script in NinjaOne avviene a tua discrezione e a tuo rischio. ***
$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”