
Entropie-Scanner für Linux zur Erkennung von gepackten oder verschlüsselten Binärdateien im Zusammenhang mit Malware. Findet bösartige Dateien und Linux-Prozesse und gibt Ausgaben mit kryptografischen Hashes.
sandfly-entropyscan ist ein Dienstprogramm, um schnell Dateien oder laufende Prozesse zu scannen und über deren Entropie (Maß für Zufälligkeit) zu berichten sowie darüber, ob es sich um einen Linux/Unix ELF-ausführbaren Dateityp handelt. Einige Malware für Linux ist gepackt oder verschlüsselt und weist eine sehr hohe Entropie auf. Dieses Tool kann schnell ausführbare Dateien und Prozesse mit hoher Entropie finden, die oft bösartig sind.
Entropie ist ein Maß für Zufälligkeit. Für Binärdaten ist 0,0 nicht zufällig und 8,0 perfekt zufällig. Gute Kryptographie sieht aus wie zufälliges weißes Rauschen und liegt nahe 8,0. Gute Komprimierung entfernt redundante Daten, wodurch sie zufälliger erscheinen als unkomprimiert, und liegt normalerweise bei 7,7 oder höher.
Viele Malware-Executables sind gepackt, um Erkennung zu vermeiden und Reverse Engineering zu erschweren. Die meisten Standard-Linux-Binärdateien sind nicht gepackt, da sie nicht versuchen zu verbergen, was sie sind. Die Suche nach Dateien mit hoher Entropie ist eine gute Möglichkeit, Programme zu finden, die allein aufgrund dieser beiden Attribute – hohe Entropie und Ausführbarkeit – bösartig sein könnten.
Verwendung von sandfly-entropyscan:
-csv
Ausgabe der Ergebnisse im CSV-Format (Dateiname, Pfad, Entropie, elf_file [true|false], MD5, SHA1, SHA256, SHA512)
-delim
Ändert das Standardtrennzeichen für CSV-Dateien von "," auf ein selbst gewähltes ("|" usw.)
-dir string
Name des zu analysierenden Verzeichnisses
-file string
vollständiger Pfad zu einer einzelnen zu analysierenden Datei
-proc
Überprüft laufende Prozesse (Standardmäßig nur ELF-Check)
-elf
nur ELF-Executables überprüfen
-entropy float
Zeigt Dateien/Prozesse mit einer Entropie größer oder gleich diesem Wert an (0,0 min - 8,0 max, Standard 0 = alle Dateien anzeigen)
-version
Zeigt Version an und beendet
Suche nach jeder ausführbaren Datei unter /tmp:
sandfly-entropyscan -dir /tmp -elf
Suche nach ausführbaren Dateien mit hoher Entropie (7,7 und höher) (oft gepackt oder verschlüsselt) unter /var/www:
sandfly-entropyscan -dir /var/www -elf -entropy 7.7
Erzeugt Entropie und kryptografische Hashes aller laufenden Prozesse im CSV-Format:
sandfly-entropyscan -proc -csv
Suche nach jedem Prozess mit einer Entropie höher als 7,7, was darauf hindeutet, dass er wahrscheinlich gepackt oder verschlüsselt ist:
sandfly-entropyscan -proc -entropy 7.7
Erzeugt Entropie und kryptografische Hashwerte aller Dateien unter /bin und Ausgabe im CSV-Format (z. B. zum Speichern und Vergleichen von Hashes):
sandfly-entropyscan -dir /bin -csv
Durchsucht ein Verzeichnis nach allen Dateien (ELF oder nicht) mit einer Entropie größer als 7,7: (Potentiell große Liste von Dateien, die komprimiert sind, PNG, JPG, Objektdateien usw.)
sandfly-entropyscan -dir /path/to/dir -entropy 7.7
Schnell eine Datei überprüfen und Entropie, kryptografische Hashes erzeugen sowie anzeigen, ob sie ausführbar ist:
sandfly-entropyscan -file /dev/shm/suspicious_file
Führen Sie Stichproben auf Systemen durch, bei denen Sie ein Malware-Problem vermuten. Oder automatisieren Sie den Scan, sodass Sie eine Ausgabe erhalten, wenn etwas mit hoher Entropie an einer unerwarteten Stelle auftaucht. Oder markieren Sie einfach jeden ausführbaren ELF-Dateityp, der sich an einem ungewöhnlichen Ort befindet (z. B. in /tmp oder im HTML-Verzeichnis eines Benutzers). Zum Beispiel:
Ist ein Binärprogramm mit hoher Entropie im Systemverzeichnis /var/www aufgetaucht? Könnte jemand einen Malware-Dropper auf Ihre Website gelegt haben:
sandfly-entropyscan -dir /var/www -elf -entropy 7.7
Richten Sie einen Cron-Job ein, um Ihre Verzeichnisse /tmp, /var/tmp und /dev/shm auf jede Art von ausführbarer Datei zu scannen, egal ob mit hoher Entropie oder nicht. Ausführbare Dateien unter tmp-Verzeichnissen sind häufig Malware-Dropper.
sandfly-entropyscan -dir /tmp -elf
sandfly-entropyscan -dir /var/tmp -elf
sandfly-entropyscan -dir /dev/shm -elf
Richten Sie einen weiteren Cron-Job oder eine automatisierte Sicherheitsüberprüfung ein, um Stichproben auf Ihren Systemen nach stark komprimierten oder verschlüsselten Binärdateien zu durchsuchen, die gerade ausgeführt werden:
sandfly-entropyscan -proc -entropy 7.7
git clone https://github.com/sandflysecurity/sandfly-entropyscan.git
go build
./sandfly-entropyscan
Es gibt einige grundlegende Build-Skripte, die für verschiedene Plattformen bauen. Sie können diese verwenden oder nach Ihren Wünschen anpassen. Für Incident-Responder könnte es nützlich sein, vorkompilierte Binärprogramme auf Ihrem Untersuchungsrechner bereitzuhalten.
build.sh – Baut für das aktuelle Betriebssystem, auf dem Sie es ausführen.
Wir verwenden eine einfache Methode, um zu prüfen, ob eine Datei ein ausführbarer ELF-Typ sein könnte. Wir können ELF-Formatdateien für mehrere Plattformen erkennen. Selbst wenn Malware Intel/AMD-, MIPS- und Arm-Dropper-Binärdateien hat, können wir sie dennoch alle erkennen.
Es ist möglich, eine legitime Binärdatei mit hoher Entropie zu markieren, weil sie auf eine bestimmte Weise kompiliert wurde oder aus legitimen Gründen gepackt wurde. Andere Dateien wie .zip, .gz, .png, .jpg usw. haben ebenfalls eine sehr hohe Entropie, da es sich um komprimierte Formate handelt. Komprimierung entfernt Redundanz in einer Datei, wodurch sie zufälliger erscheint und eine höhere Entropie aufweist.
Unter Linux können bestimmte Bibliotheksdateien (.so-Dateien) markiert werden, wenn Sie Bibliotheksverzeichnisse scannen.
Nach unserer Erfahrung sind ausführbare Binärdateien mit hoher Entropie jedoch oft bösartig. Dies gilt insbesondere, wenn Sie sie in Bereichen finden, in denen normalerweise keine ausführbaren Dateien sein sollten (wie z. B. in tmp- oder html-Verzeichnissen).
Die Entropieberechnung erfordert das Einlesen aller Bytes der Datei und deren Aufsummierung, um eine endgültige Zahl zu erhalten. Dies kann viel CPU- und Datenträger-I/O verbrauchen, insbesondere bei sehr großen Dateisystemen oder sehr großen Dateien. Das Programm hat eine interne Grenze, bei der es keine Entropie für Dateien über 2 GB berechnet und auch nicht versucht, Entropie für Dateien zu berechnen, die kein regulärer Dateityp sind (z. B. wird nicht versucht, Entropie für Geräte wie /dev/zero zu berechnen).
Anschließend berechnen wir MD5-, SHA1-, SHA256- und SHA512-Hashes. Jeder dieser Schritte erfordert ebenfalls das Durchgehen der Datei. Auf modernen Systemen ist die Geschwindigkeit akzeptabel, aber wenn Sie ein sehr großes Dateisystem durchsuchen, kann es einige Zeit dauern.
Wenn Sie das Programm anweisen, nur nach ELF-Dateien zu suchen, werden die Entropie-/Hash-Berechnungen nur durchgeführt, wenn es sich um einen ELF-Typ handelt, was viel Zeit spart (z. B. werden massive Datenbankdateien ignoriert, die nicht ausführbar sind).
Wenn Sie dieses Programm automatisieren möchten, ist es am besten, es nicht das gesamte Root-Dateisystem durchsuchen zu lassen, es sei denn, Sie möchten das gezielt. Ein gezielter Ansatz ist schneller und für Stichproben nützlicher. Verwenden Sie auch das ELF-Flag, da dies die Suchzeiten drastisch reduziert, indem nur ausführbare Dateitypen verarbeitet werden.
Für Incident-Responder kann es eine gute Idee sein, sandfly-entropyscan gegen das gesamte oberste Verzeichnis "/" auszuführen, um schnell eine Liste wahrscheinlich gepackter Kandidaten zur Untersuchung zu erhalten. Dies wird CPU- und Datenträger-I/O in die Höhe treiben. Allerdings ist Ihnen das zu diesem Zeitpunkt wahrscheinlich egal, da die Kiste ohnehin schon 598 Stunden lang Kryptowährung geschürft hat, als die Admins es bemerkten.
Verwenden Sie erneut das ELF-Flag, um zu den wahrscheinlich verdächtigen ausführbaren Dateien zu gelangen und das Rauschen zu ignorieren.
Es gibt ein Skript namens scripts/testfiles.sh, das zwei Dateien erstellt. Eine wird mit zufälligen Daten gefüllt, die andere überhaupt nicht zufällig. Wenn Sie das Skript ausführen, werden die Dateien erstellt und sandfly-entropyscan im Erkennungsmodus für ausführbare Dateien ausgeführt. Sie sollten zwei Dateien sehen. Eine mit sehr hoher Entropie (bei oder nahe 8,0) und eine voller nicht-zufälliger Daten, die eine niedrige Entropie von 0,00 haben sollte. Beispiel:
./testfiles.sh
Erstelle eine ausführbare Datei mit hoher Entropie und zufälligen Daten im aktuellen Verzeichnis.
Erstelle eine ausführbare Datei mit niedriger Entropie im aktuellen Verzeichnis.
high.entropy.test, entropy: 8.00, elf: true
low.entropy.test, entropy: 0.00, elf: true
Sie können auch das Dienstprogramm upx laden und eine ausführbare Datei komprimieren, um zu sehen, welche Werte zurückgegeben werden.
Sandfly Security bietet eine agentenlose Endpunkt-Erkennungs- und Incident-Response-Plattform (EDR) für Linux. Automatisierte Entropieprüfungen sind nur eine von Tausenden von Dingen, nach denen wir suchen, um Eindringlinge zu finden, ohne Software auf Ihren Linux-Endpunkten zu installieren.
Erhalten Sie eine kostenlose Lizenz und erfahren Sie mehr unten:
https://www.sandflysecurity.com @SandflySecurity