Hashes: MD5, SHA-1 und SHA-256 prüfen und verstehen

Lesezeit: 7 Min.

Ein Hash ist der digitale Fingerabdruck einer Datei. Er ist das Erste, was das Werkzeug berechnet, und oft das Nützlichste: Mit einem Hash kannst du eine Datei eindeutig benennen, in Datenbanken nachschlagen und mit Kollegen besprechen, ohne die Datei selbst weiterzugeben. Hier erfährst du, wie Hashes funktionieren, wie du sie selbst prüfst und wo ihre Grenzen liegen.

Was ist ein Hash-Wert?

Eine Hashfunktion nimmt beliebig viele Daten entgegen, etwa eine 20 MB große Datei, und berechnet daraus einen Wert fester Länge. Bei SHA-256 sind das immer 256 Bit, als Text geschrieben 64 Hexadezimalzeichen. Egal ob die Eingabe ein einzelnes Zeichen oder ein ganzes Installationsprogramm ist, das Ergebnis hat dieselbe Länge.

Für die Praxis sind drei Eigenschaften entscheidend:

  • Eindeutig reproduzierbar: Dieselbe Datei ergibt auf jedem Rechner und mit jedem Programm denselben Hash. Du kannst deinen Wert also mit einem Wert aus einer Datenbank oder einer Warnmeldung vergleichen.
  • Lawineneffekt: Ändert sich auch nur ein einziges Bit der Datei, entsteht ein völlig anderer Hash. Es gibt kein „fast gleich“.
  • Nicht umkehrbar: Aus dem Hash lässt sich die Datei nicht zurückrechnen. Deshalb kannst du einen Hash gefahrlos teilen, auch wenn die Datei vertrauliche Inhalte hat.

Oft liest man auch „Prüfsumme“ oder „Checksumme“. Umgangssprachlich ist damit dasselbe gemeint. Streng genommen sind einfache Prüfsummen wie CRC32 aber nur zum Erkennen von Übertragungsfehlern gebaut, nicht gegen absichtliche Manipulation. Für Sicherheitsfragen brauchst du eine kryptografische Hashfunktion wie SHA-256.

Was zeigt das Werkzeug?

Im Reiter Hashes & Reputation siehst du drei Werte, die direkt in deinem Browser berechnet werden. Die Datei wird dafür nicht hochgeladen.

  • MD5 (128 Bit, 32 Zeichen): alt und kryptografisch gebrochen, aber in vielen Datenbanken, Berichten und älteren Werkzeugen noch verbreitet.
  • SHA-1 (160 Bit, 40 Zeichen): ebenfalls gebrochen, taucht aber in älteren Threat-Intelligence-Quellen weiterhin auf.
  • SHA-256 (256 Bit, 64 Zeichen): der heutige Standard. Wenn du nur einen Wert weitergibst, dann diesen.

Alle drei gibt es, weil verschiedene Quellen unterschiedliche Werte verwenden. Ein älterer Sicherheitshinweis nennt vielleicht nur einen MD5, eine aktuelle Meldung nur den SHA-256. Mit allen drei Werten findest du die Datei überall wieder.

Bei Windows-Programmen zeigt das Werkzeug im Reiter Importe zusätzlich den Imphash. Er wird nicht über die ganze Datei gebildet, sondern nur über die Liste der importierten Funktionen. Was das bringt, steht weiter unten.

Den SHA-256 einer Datei selbst prüfen

Du brauchst kein zusätzliches Programm, alle gängigen Betriebssysteme bringen die nötigen Befehle mit. Das ist praktisch, um einen Wert aus dem Werkzeug gegenzuprüfen oder um einen Download mit der vom Hersteller veröffentlichten Prüfsumme zu vergleichen.

Windows

In der PowerShell berechnet Get-FileHash standardmäßig den SHA-256:

Get-FileHash .\rechnung.pdf
Get-FileHash .\rechnung.pdf -Algorithm MD5

In der klassischen Eingabeaufforderung geht es mit certutil:

certutil -hashfile rechnung.pdf SHA256

macOS und Linux

# Linux
sha256sum rechnung.pdf
md5sum rechnung.pdf

# macOS
shasum -a 256 rechnung.pdf
md5 rechnung.pdf

Groß- und Kleinschreibung spielt beim Vergleich keine Rolle. A1B2 und a1b2 sind derselbe Wert. Vergleiche aber immer den vollständigen Hash und nicht nur die ersten Zeichen.

Einen Download überprüfen

Viele Hersteller veröffentlichen neben dem Download einen SHA-256. Stimmt dein berechneter Wert überein, ist die Datei unterwegs weder beschädigt noch ausgetauscht worden.

Wie nutzt du Hashes in der Analyse?

In der Malware-Analyse ist der Hash vor allem ein Name. Er beantwortet die Frage: Kennt jemand genau diese Datei schon? Typische Einsätze:

  • Nachschlagen: Mit dem SHA-256 fragst du Datenbanken wie MalwareBazaar oder VirusTotal ab, ohne die Datei hochzuladen. Wie du die Antworten liest, erklärt die Seite Hash-Reputation.
  • Suchen: Liegt dieselbe Datei auch auf anderen Rechnern im Netz? Viele EDR-Lösungen und SIEM-Systeme können nach Datei-Hashes suchen.
  • Kommunizieren: In einem Ticket oder einer Warnung an Kollegen ist „SHA-256 e3b0c442…“ eindeutig, „die Rechnung von gestern“ nicht.
  • Beweise sichern: In der Forensik dokumentiert der Hash, dass eine gesicherte Datei später nicht verändert wurde.
  • Sperren: Viele Schutzprodukte erlauben das Blockieren einzelner Hashes.

Ein Tipp für die Praxis: Wenn ein Hash in einer Datenbank auftaucht, schau auf das Datum der ersten Sichtung. Eine Datei, die dort seit Jahren als harmlos geführt wird, ist etwas anderes als eine, die gestern zum ersten Mal auftauchte.

MD5, SHA-1 und SHA-256 im Vergleich

MD5 und SHA-1 gelten als gebrochen, weil sich gezielt zwei unterschiedliche Dateien mit demselben Hash erzeugen lassen. Man spricht von einer Kollision. Für MD5 ist das seit 2004 praktisch möglich. Die Schadsoftware Flame nutzte 2012 eine MD5-Kollision, um sich mit einem gefälschten Microsoft-Zertifikat zu tarnen. Für SHA-1 gelang 2017 die erste öffentliche Kollision (SHAttered), 2020 folgte eine noch gefährlichere Variante mit frei wählbarem Anfang.

Was heißt das für dich? Wer beide Dateien selbst baut, kann eine harmlose und eine bösartige Datei mit demselben MD5 erzeugen. Eine beliebige fremde Datei nachträglich auf einen vorgegebenen Hash zu bringen, ist dagegen auch bei MD5 bisher nicht praktikabel. Zum schnellen Nachschlagen taugt MD5 deshalb noch. Für Freigaben, Sperrlisten und alles, worauf du dich verlassen musst, nimm SHA-256.

  • Zum Nachschlagen in alten Quellen: MD5 oder SHA-1 sind in Ordnung.
  • Für Sperrlisten, Freigaben und Dokumentation: SHA-256.
  • Für den Austausch mit anderen: immer SHA-256, bei Bedarf zusätzlich MD5 für ältere Systeme.

Imphash und Fuzzy Hashes: Verwandtschaft statt Gleichheit

Klassische Hashes erkennen nur exakt gleiche Dateien. Angreifer wissen das und verändern ihre Programme minimal, etwa durch ein angehängtes Byte oder eine neu gepackte Version. Schon hat jede Kopie einen anderen SHA-256. Dagegen helfen Hashes, die Ähnlichkeit messen:

  • Imphash: 2014 von Mandiant eingeführt. Er wird aus der Liste der importierten Windows-Funktionen in ihrer Reihenfolge berechnet. Programme aus demselben Quellcode und derselben Build-Umgebung haben oft denselben Imphash, auch wenn sich der Rest unterscheidet. Das Werkzeug berechnet ihn wie das verbreitete Python-Modul pefile, die Werte sind also vergleichbar.
  • ssdeep und TLSH: sogenannte Fuzzy Hashes. Sie liefern keinen Treffer „gleich oder ungleich“, sondern einen Ähnlichkeitswert. Das Werkzeug berechnet sie nicht, du findest sie aber in vielen Datenbanken.

Grenzen des Imphash: Gepackte Programme importieren oft nur eine Handvoll Funktionen, und viele verschiedene Programme mit demselben Packer haben dann denselben Imphash. Auch .NET-Programme haben fast immer denselben Imphash, weil sie nur mscoree.dll importieren. Ein Imphash-Treffer ist also ein Hinweis auf Verwandtschaft, kein Beweis.

Typische Fehlinterpretationen

  • „Der Hash ist unbekannt, also ist die Datei harmlos.“ Falsch. Gezielte Angriffe verwenden oft Dateien, die eigens für ein Opfer erzeugt wurden. Ein unbekannter Hash heißt nur: Diese exakte Datei hat noch niemand gemeldet.
  • „Der Hash ist bekannt, also ist die Datei bösartig.“ Auch falsch. Datenbanken enthalten viele harmlose Dateien, und manche Einträge sind Fehlalarme. Entscheidend ist, was über den Hash bekannt ist, nicht dass er bekannt ist.
  • „Zwei Dateien mit demselben Namen sind dieselbe Datei.“ Nein. Nur der Hash sagt das. Umgekehrt kann dieselbe Datei unter vielen Namen auftauchen.
  • „Ein anderer Hash bedeutet ein anderes Programm.“ Nicht unbedingt. Ein einzelnes geändertes Byte reicht. Für Verwandtschaft ist der Imphash oder ein Fuzzy Hash aussagekräftiger.
  • „Die Datei im Archiv hat denselben Hash wie das Archiv.“ Nein. Ein ZIP-Archiv hat einen eigenen Hash. Datenbanken führen oft beides, du musst also wissen, welchen Wert du nachschlägst.
  • „MD5 ist unsicher, also sind MD5-Treffer wertlos.“ Für das Nachschlagen stimmt das nicht. Ein zufälliger Zusammenstoß zweier Dateien ist praktisch ausgeschlossen. Unsicher ist MD5 dort, wo ein Angreifer beide Dateien kontrolliert.

Häufige Fragen

Kann ich aus einem Hash die Datei wiederherstellen? Nein. Der Hash enthält nicht die Datei, sondern nur einen daraus berechneten Wert fester Länge.

Ist es sicher, einen Hash öffentlich zu teilen? Ja, der Hash verrät den Inhalt nicht. Er verrät aber, dass du diese Datei hast. Bei einem laufenden Vorfall kann das für einen aufmerksamen Angreifer ein Signal sein, dass er entdeckt wurde.

Warum zeigt ein anderes Programm einen anderen Hash? Meist wurde ein anderer Algorithmus gewählt oder eine andere Datei geprüft, zum Beispiel das Archiv statt der enthaltenen Datei. Bei gleichem Algorithmus und gleicher Datei ist der Wert immer identisch.

Warum hat eine leere Datei einen Hash? Auch null Byte sind eine gültige Eingabe. Der SHA-256 einer leeren Datei beginnt mit e3b0c442. Taucht dieser Wert in einem Bericht auf, war die Datei leer.

Zum Werkzeug