Entropie: gepackte und verschlüsselte Dateien erkennen
Lesezeit: 5 Min.
Entropie ist ein Maß dafür, wie zufällig die Bytes einer Datei verteilt sind. Für die Malware-Analyse ist das nützlich, weil Angreifer ihre Programme oft packen oder verschlüsseln, um sie vor Virenscannern zu verstecken. Solche Daten sehen nahezu zufällig aus und haben eine hohe Entropie. Hier erfährst du, wie du die Werte und das Diagramm im Werkzeug liest.
Was misst die Entropie?
Das Werkzeug berechnet die Shannon-Entropie, benannt nach dem Informationstheoretiker Claude Shannon. Vereinfacht gesagt zählt es, wie oft jeder der 256 möglichen Bytewerte vorkommt, und berechnet daraus, wie gleichmäßig die Werte verteilt sind. Das Ergebnis liegt zwischen 0 und 8 Bit pro Byte.
- 0: Die Datei besteht nur aus einem einzigen Bytewert, etwa lauter Nullen.
- 8: Alle 256 Bytewerte kommen gleich oft vor. So sehen gut verschlüsselte oder stark komprimierte Daten aus.
Normale Inhalte liegen dazwischen, weil sie Muster haben. In deutschem Text kommen Buchstaben wie „e“ und „n“ viel häufiger vor als „q“. Programmcode enthält wiederkehrende Befehle. Je mehr Muster, desto niedriger die Entropie.
Typische Werte
- Reiner Text, Skripte, HTML: etwa 4 bis 5,5.
- Normaler Programmcode: etwa 5 bis 6,5.
- Programm mit vielen Bildern oder Ressourcen: 6 bis 7.
- Komprimierte Formate wie ZIP, PNG, JPEG, MP4 und Office-Dokumente: 7,5 bis knapp 8.
- Gepackte oder verschlüsselte Programmteile: meist über 7,2, oft nahe 8.
Die Einordnung im Werkzeug folgt diesen Grenzen: unter 6 unauffällig, 6 bis 7,2 erhöht, über 7,2 hoch. Die Grenzen sind Erfahrungswerte, keine Naturgesetze.
Was zeigt das Werkzeug?
Im Reiter Entropie siehst du zwei Dinge:
- Die Gesamtentropie der Datei mit Einordnung. Sie erscheint auch in der Übersicht.
- Den Verlauf als Diagramm. Die Datei wird dafür in Blöcke zu 1024 Byte zerlegt, und für jeden Block wird die Entropie einzeln berechnet. Die x-Achse zeigt die Position in der Datei (Offset), die y-Achse die Entropie. Die gestrichelten Linien markieren 6 und 7,2. Bei großen Dateien werden mehrere Blöcke zu einem Punkt zusammengefasst, dann siehst du zusätzlich eine graue Linie mit dem Höchstwert.
Bei Windows-Programmen zeigt der Reiter PE-Details außerdem die Entropie jeder einzelnen Sektion. Das ist oft aussagekräftiger als der Gesamtwert.
Liegt die Gesamtentropie über 7,2 und ist die Datei kein von Natur aus komprimiertes Format, erscheint eine Auffälligkeit. Bei ZIP, Office-Dokumenten, 7z, RAR, GZIP und PDF verzichtet das Werkzeug darauf, weil hohe Entropie dort normal ist.
Wie liest du das Diagramm?
Der Verlauf ist oft interessanter als die eine Zahl, denn er zeigt, wo in der Datei die zufällig wirkenden Daten liegen.
- Gleichmäßig um 5 bis 6, mit Einbrüchen: typisch für ein normales, ungepacktes Programm. Die Einbrüche sind oft Füllbereiche aus Nullen zwischen den Sektionen.
- Ein kurzer Anfang, danach fast durchgehend nahe 8: klassisches Bild eines gepackten Programms. Ein kleiner Entpacker am Anfang, dahinter der komprimierte oder verschlüsselte eigentliche Code.
- Normaler Verlauf, dann am Ende ein langes Plateau nahe 8: Hier hängt etwas hinter dem eigentlichen Programm. Das kann ein harmloser Installer mit seinen Archivdaten sein, oder eine versteckte Nutzlast. Im Reiter PE-Details siehst du dazu das Overlay.
- Ein einzelner hoher Block mitten im Programm: oft eingebettete Ressourcen wie ein Symbol oder ein Bild. Manchmal auch ein verschlüsselter Konfigurationsblock.
Packer und warum Schadsoftware sie nutzt
Ein Packer komprimiert oder verschlüsselt ein Programm und setzt einen kleinen Entpacker davor. Beim Start entpackt sich das Programm im Speicher und läuft dann normal weiter. Ursprünglich diente das dazu, Programme kleiner zu machen oder vor Nachbau zu schützen. Für Angreifer hat es einen anderen Vorteil: Virenscanner sehen auf der Festplatte nur den Entpacker und zufällig wirkende Daten, nicht den eigentlichen Schadcode.
Bekannte Beispiele sind UPX (Open Source, weit verbreitet, auch bei harmloser Software), MPRESS, ASPack, Themida und VMProtect. Die letzten beiden sind kommerzielle Schutzlösungen, die auch in legitimer Software stecken, etwa in Spielen gegen Cheats. Daneben gibt es unzählige selbstgebaute Crypter aus kriminellen Foren.
Weitere Hinweise auf einen Packer, die das Werkzeug zeigt:
- Sektionsnamen wie
UPX0,UPX1,.MPRESS1oder.themida. - Eine Sektion, die beschreibbar und ausführbar zugleich ist.
- Eine Sektion mit Rohgröße 0, die im Speicher trotzdem Platz bekommt: Hier landet der entpackte Code.
- Sehr wenige Importe, meist nur
LoadLibraryundGetProcAddress.
Mehrere dieser Merkmale zusammen mit hoher Entropie sind ein starker Hinweis. Jedes für sich allein ist schwach.
Typische Fehlinterpretationen
- „Hohe Entropie heißt Malware.“ Nein. Installer, Spiele mit Kopierschutz, Programme mit großen Bildern und viele komprimierte Formate haben hohe Entropie. Entropie zeigt nur, dass etwas komprimiert oder verschlüsselt ist, nicht warum.
- „Niedrige Entropie heißt harmlos.“ Auch nein. Viele Schadprogramme sind gar nicht gepackt, und Skripte sind immer Text mit niedriger Entropie. Ein ungepackter Keylogger hat eine völlig normale Entropie.
- „Die Linie im Diagramm erreicht nie 8, also ist nichts verschlüsselt.“ Ein Block von 1024 Byte kann statistisch kaum genau 8 erreichen. Zufallsdaten liegen dort meist um 7,8. Der Gesamtwert über die ganze Datei kommt näher an 8.
- „Ein Einbruch auf 0 ist verdächtig.“ Meist sind das nur Füllbereiche aus Nullen, die der Compiler zwischen Sektionen setzt.
- „Das PDF hat 7,9, das ist gefährlich.“ PDFs enthalten meist komprimierte Datenströme. Hohe Entropie ist dort normal, deshalb meldet das Werkzeug keine Auffälligkeit. Bei PDFs zählen andere Merkmale wie eingebettetes JavaScript.
Was tun bei hoher Entropie?
- Prüfe den Dateityp: Ist die Datei von Natur aus komprimiert? Dann ist der Wert erklärt.
- Bei Programmen: Schau in PE-Details, welche Sektion hoch ist und ob es ein Overlay gibt.
- Prüfe die Importe: Wenige Importe plus hohe Entropie deuten auf einen Packer.
- Schlage den Hash nach. Gepackte Schadsoftware ist oft trotzdem bekannt.
- Für mehr Klarheit braucht es eine dynamische Analyse in einer Sandbox, in der sich das Programm selbst entpackt. Das leistet ein statisches Werkzeug bewusst nicht.