ausgewählter Download

Zurück zur Übersicht

Find-Log4j

Dieses Script biete ich ausdrücklich als ungetestet an!
Es sollte auch sichergestellt werden, dass verlässliche Backups existieren! Ein Probelauf bei mir hat zwar wunderbar funktioniert - aber das muss nicht zwangsweise für andere Systeme sprechen.
Es sollte nur von erfahrenen Administratoren verwendet werden. Es ist auch sicherlich gut, vorher noch einmal einen Blick darauf zu werfen.
Auch sollte man Bewerten, ob man wirklich die "automatische" Bereinigung verwenden möchte, - oder ob man das dann nicht lieber manuell anhand der Ergebnisse macht.



Was macht das Powershell Script nun genau?
Letztlich durchläuft es einen ganzen Netzwerkbereich (muss aktuell aber ein /24 Netz sein) und überprüft, ob dahinter ein System erreichbar ist.
Sofern es ein Windows-System ist, werden dann über WMI die Laufwerke abgefragt.
Diese Laufwerke werden dann einzeln nach log4j*-Dateien durchsucht. Wenn etwas gefunden wurde, wird das .jar-Archiv in ein temporäres Verzeichnis entpackt und aus der Manifest-Datei die Version ausgelesen.
Und sollte hierbei herauskommen, dass es eine Version ab 2.0 ist - so wird in dem .jar-Archiv nach der Jdni-Klasse gesucht.
Fällt auch diese Suche positiv aus, so erfolgt die Rückmeldung direkt in die Powershell, als auch in eine Log-Datei.
Zusätzlich besteht noch die Möglichkeit, die Datei, bzw. Klasse automatisch löschen (was ja eine der vorgeschlagenen Mitigationen ist). Die .jar-Datei wird angeschließend neu gepackt und die Originaldatei ersetzt.



Die Datei führt ihr von einem System aus, das mindestens PowerShell v5.0 installiert hat. Aber das sollte heutzutage ja die Regel sein. Das System sollte Zugriff auf SMB und WMI der Remote-Systeme haben. - Und letztlich sollte es auch unter einem geeigneten Account (z.B. Mitglied der Domänen-Admins) laufen.



Damit das nun funktioniert, sollte man ein eigenes Verzeichnis erstellen, bspw. C:\log4j
Dort kann man dann auch gleich seine log4j-scanner.ps1 (oder wie ihr sie nennen wollt) ablegen.
Hierin erstellt man nun noch ein Unterverzeichnis mit dem Namen "temp" - also C:\log4j\temp
Im letzten Schritt müsst ihr noch die Datei bearbeiten:



Unter dem Dateikopf findet sich der Eintrag:
$ipnet = "192.168.1" - diesen müsst ihr anpassen. Wenn ihr z.B. "192.168.200.0/24" scannen wollt, dann tragt ihr dort "192.168.200" ein - ohne das letzte Oktett.



Ebenfalls solltet ihr $workdir anpassen, sofern ihr nicht meinem Vorschlag folgt und C:\log4j verwendet. Die Datei ist aber hoffentlich auch ausreichend kommentiert.



Aber wie gesagt: Die Nutzung erfolgt ausschließlich auf eigene Gefahr! Ich übernehme keine Verantwortung!

  • Dateiname:Find-Log4j.ps1
  • Version:1.0.0
  • Erstellt:2021-12-14 21:10:00
  • Größe:0 MB
  • Downloads:474