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 individuare la propria esposizione, rilevare potenziali IoC, applicare forme di attenuazione 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 sul fatto che i loro prodotti siano o meno interessati (nota: NinjaOne non lo è), 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 impiegabili per scansionare gli ambienti alla ricerca di file Log4j potenzialmente vulnerabili e di segni di IoC.
Tra gli esempi è possibile citare:
- 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, mitigazione e rilevamento degli attacchi Log4Shell di Datto
- Log4j/Log4Shell PowerShell Scan, progettato da AshtonSolutions per essere usato con Ninja
- CVE-2021-44228-Log4Shell-Hashes di Rob Fuller
- log4shell-detector di Florian Roth (che rileva i tentativi di sfruttamento 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 con la necessaria diligenza); 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:
- Fantastic explanation of Log4Shell di John Strand presso Black Hills Information Security
- Una buona panoramica di Log4Shell con aggiornamenti regolari da parte di Huntress
- La guida alle vulnerabilità di Log4j di CISA
Esempio di come monitorare i file Log4j utilizzando NinjaOne
Per configurare un monitor personalizzato che rilevi la presenza di file di libreria Log4J sugli endpoint in Ninja, sono necessari:
- 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
Configurazione del 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 consente di rendere più leggibili queste informazioni.
3) Fatto ciò è necessario configurare il campo personalizzato. Procederemo quindi impostando Accesso agli script su Lettura/Scrittura.
Nota:se l’accesso agli script non è impostato su “Scrittura” o “Lettura/Scrittura”, non sarai in grado di scrivere in questo campo da 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 in NinjaOne Community Dojo. La differenza principale con lo script di Kelvin è che questo utilizza uno strumento esterno chiamato “Everything” che ne velocizza l’esecuzione.
Nota che sono disponibili altri script a cui puoi fare riferimento e che possono essere personalizzati , tra cui:
Questi script possono fornire risultati più rapidi ed efficienti.
*** Dichiarazione di non responsabilità: l’utilizzo di questi script in Ninja 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 } If ($array -ne $null) { $array += “Possible Threat Detected”} Ninja-Property-Set log4j $array
*Nota: per i dispositivi Windows 8 può essere necessario rimuovere il comando “-force” nel comando Get-ChildItem (gci).
Ninja-Property-Set è il comando Powershell di Ninja che permette di impostare un campo personalizzato su un valore specifico. La sintassi è:
Ninja-Property-Set fieldName Value
In questo caso, stiamo impostando il campo log4j sul valore memorizzato nella variabile $array.
Aggiungere questo script a Ninja è facile.
1) Naviga su “Configurazione” > “Scripting”
2) Fai clic su “Aggiungi uno script”
3) Copia il codice qui sopra nell’IDE
- Se il campo personalizzato non ha il nome “log4j”, aggiorna il nome del campo accanto a Ninja-Property-Set
4) Configura i parametri dello script su
- Nome: Log4J Detection
- Lingua: PowerShell
- Sistema operativo: Windows
- Architettura: Tutti
5) Salva lo script
Configurazione del monitoraggio
Le condizioni in Ninja sono utilizzate per monitorare le variazioni di stato di un endpoint. Ninja comprende la possibilità di monitorare i campi personalizzati. Imposteremo un monitor in modo che emetta un avviso basato sui risultati restituiti al nostro campo Log4J.
1) Nella politica prescelta, passa alle condizioni e fai clic su “Aggiungi una condizione”
2) Seleziona il tipo di condizione “Campi personalizzati”
3) Sotto “Il valore del campo personalizzato deve soddisfare eventuali condizioni”, seleziona “Aggiungi” e cerca “Log4J”
4) Imposta il selettore su “contiene” e aggiungi “Rilevata una possibile minaccia”
5) Imposta gli eventuali valori di gravità, priorità, canale di notifica e creazione di ticket in base alle tue preferenze, quindi fai clic su “Aggiungi”.
6) Se hai integrato il tuo PSA o utilizzi la creazione di ticket di Ninja, puoi anche utilizzare la condizione per creare un ticket
Distribuzione dello script
La fase finale di questo processo è l’esecuzione dello script. Puoi eseguire lo script:
- Come operazione ad hoc su singoli dispositivi tramite la libreria degli script
- Come operazione ad hoc su più dispositivi online tramite la funzione di ricerca
- Automaticamente tramite attività pianificate
- Automaticamente tramite le politiche
Scopri cos’altro puoi ottenere utilizzando i campi personalizzati in NinjaOne
Questo è solo un esempio di come l’utilizzo di campi personalizzati in NinjaOne può aiutarti a implementare un monitoraggio personalizzato e una potente automazione. Stiamo iniziando una nuova serie dedicata alla condivisione di altri esempi di cui puoi vedere il primo post qui.