Seit die Nachrichten zu Log4Shell (CVE-2021-44228) bekannt wurden und sich die Ausnutzungsversuche rasant verbreiten, arbeiten MSPs und IT-Teams ununterbrochen daran, das Ausmaß ihrer Gefährdung einzuschätzen, nach möglichen IoCs zu suchen, Minderungsmaßnahmen umzusetzen und zu patchen.
Das Problem: Da diese Schwachstelle so viele Anwendungen betrifft und nicht jeder Anbieter eine klare Auskunft darüber geben konnte, ob seine Produkte betroffen sind oder nicht (Hinweis: NinjaOne ist es nicht), ist es eine große Herausforderung, herauszufinden, welche Systeme potenziell verwundbar sind.
Aus diesem Grund haben etliche Sicherheitsforscher:innen und Community-Mitglieder Skripte und Tools entwickelt, mit denen sich Umgebungen nach potenziell verwundbaren Log4j-Dateien und Anzeichen für IoCs durchsuchen lassen.
Einige Beispiele:
- Huntress Log4Shell Vulnerability Tester
- Kelvin Tegelaars Skript Detecting Log4j Files
- Jan Scholtes Ninja-Log4shell-Scanner
- get-log4jrcevulnerability.ps1 von Prejay Shah
- Datto Log4Shell Enumeration, Mitigation, and Attack Detection Tool
- Log4j/Log4Shell PowerShell Scan für den Einsatz mit Ninja von AshtonSolutions
- Rob Fullers CVE-2021-44228-Log4Shell-Hashes
- Florian Roths log4shell-detector (dieser erkennt Ausnutzungsversuche, NICHT verwundbare Anwendungen)
Ob Sie eines der verfügbaren Skripte einsetzen, bleibt vollständig Ihnen überlassen (testen Sie vorher selbstverständlich immer und kommen Sie Ihrer Sorgfaltspflicht nach). Falls Sie jedoch ein Skript finden, das Sie ausprobieren möchten, zeigt Ihnen dieser Beitrag an einem Beispiel, wie Sie es mithilfe von benutzerdefinierten Feldern in NinjaOne in Ihrem gesamten Netzwerk bereitstellen.
Bevor wir einsteigen: Wenn Sie sich zunächst mit Log4Shell vertraut machen möchten, sind die folgenden Quellen sehr hilfreich:
- Hervorragende Erklärung von Log4Shell durch John Strand von Black Hills Information Security
- Gute Übersicht zu Log4Shell mit regelmäßigen Updates von Huntress
- Hinweise der CISA zur Log4j-Schwachstelle
Beispiel: Log4j-Dateien mit NinjaOne überwachen
Um in Ninja eine benutzerdefinierte Überwachung einzurichten, die das Vorhandensein von Log4j-Bibliotheksdateien auf Endpunkten erkennt, benötigen Sie:
- ein benutzerdefiniertes Feld
- ein Skript, das die Daten erfasst und speichert (Beispiel weiter unten, alternativ können Sie die oben genannten Beispiele heranziehen)
- eine benutzerdefinierte Bedingung, die eine Alarmierung auslöst
- eine Methode, um das Erkennungsskript bereitzustellen
Das benutzerdefinierte Feld einrichten
Im benutzerdefinierten Feld werden die Daten gespeichert, die das Erkennungsskript zurückgibt.
1) Legen Sie ein neues benutzerdefiniertes Feld an. Da wir das Ergebnis des Skripts auf allen Endpunkten überwachen, erstellen wir ein globales benutzerdefiniertes Feld.

2) Das benutzerdefinierte Feld erhält den Namen log4j und den Typ Multi-line. Wir verwenden „Multi-line“, weil auf jedem Endpunkt mehrere Dateien mit Schwachstellen vorhanden sein können. So bleiben diese Informationen besser lesbar.

3) Anschließend konfigurieren wir das benutzerdefinierte Feld. Wir setzen Script Access auf Read / Write.
Hinweis: Wenn der Skriptzugriff nicht auf „Write“ oder „Read / Write“ gesetzt ist, können Sie aus einem Skript heraus nicht in dieses Feld schreiben.

Mehr ist nicht nötig, um das benutzerdefinierte Feld einzurichten, sofern wir ein globales benutzerdefiniertes Feld anlegen.
Ein Skript zum Abrufen der Daten erstellen
Zur Veranschaulichung verwenden wir unten ein Beispielskript, das sich an Kelvin Tegelaars Skript auf CyberDrain und im NinjaOne Community Dojo orientiert. Der wesentliche Unterschied zu Kelvins Skript besteht darin, dass dieses ein externes Tool namens „Everything“ nutzt, wodurch die Ausführung schneller sein kann.
Bitte beachten Sie, dass noch weitere Skripte im Umlauf sind, die Sie ebenfalls heranziehen und anpassen können, darunter:
Diese liefern möglicherweise schnellere und effizientere Ergebnisse.
*** Haftungsausschluss: Der Einsatz dieser Skripte in Ninja erfolgt nach eigenem Ermessen und auf eigenes Risiko. ***
$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"