Malware & Reverse Engineering

Statische Analyse

[object Object]

Statische Analyse

Bei der statischen Analyse wird Malware untersucht, ohne sie auszuführen.

Das ist oft der erste Schritt, weil dadurch erste Hinweise gewonnen werden können, ohne das Risiko einer Ausführung einzugehen.

Ziele

Statische Analyse hilft bei:

  • Identifikation einer Datei
  • Erkennen bekannter Malware
  • Finden verdächtiger Strings
  • Analyse von PE-Struktur
  • Erkennen von Imports und Abhängigkeiten
  • Einschätzung von Packer- oder Obfuscation-Techniken
  • Vorbereitung einer dynamischen Analyse

Hashing

Hashwerte dienen zur Identifikation und zum Vergleich von Samples.

Typische Hashes:

  • MD5
  • SHA1
  • SHA256

SHA256 wird heute oft bevorzugt, weil ältere Hashfunktionen wie MD5 und SHA1 kollisionsanfällig sind.

Hashwerte beantworten:

  • Ist die Datei identisch mit einer bekannten Datei?
  • Wurde das Sample verändert?
  • Gibt es öffentliche Informationen zu diesem Hash?

PE-Dateianalyse

Bei Windows-Dateien werden PE-Informationen untersucht:

  • Architektur
  • Entry Point
  • Sektionen
  • Importe
  • Exporte
  • Abhängigkeiten
  • Ressourcen
  • Sektionsentropie

Verdächtig können ungewöhnliche Sektionsnamen, sehr hohe Entropie oder versteckte Imports sein.

Strings-Analyse

Strings sind lesbare Zeichenketten in einer Datei.

Sie können Hinweise geben auf:

  • URLs
  • IP-Adressen
  • Dateipfade
  • Registry-Schlüssel
  • Kommandos
  • Fehlermeldungen
  • Benutzernamen
  • Passwörter oder Tokens

Strings können sehr hilfreich sein, aber auch bewusst irreführend platziert werden.

Disassembler

Ein Disassembler wandelt Maschinencode in Assembly um.

Das Ergebnis ist oft schwer lesbar, weil fehlen:

  • Kommentare
  • Variablennamen
  • ursprüngliche Funktionsnamen
  • Typinformationen
  • Entwicklungsstruktur

Trotzdem ist Disassembly zentral, wenn man den tatsächlichen Codefluss verstehen will.

Decompiler

Ein Decompiler versucht, aus Maschinencode wieder Hochsprachencode zu rekonstruieren.

Das Ergebnis ist selten perfekt, kann aber helfen:

  • Kontrollstrukturen besser zu erkennen
  • Funktionslogik grob zu verstehen
  • komplexe Assembly-Abschnitte schneller einzuordnen

Bei Bytecode- oder Laufzeitumgebungen wie Java oder .NET können Decompiler besonders nützlich sein.

Grenzen

Statische Analyse ist wertvoll, aber nicht vollständig.

Grenzen:

  • verschleierter Code
  • gepackte Dateien
  • polymorphe Malware
  • dynamisch geladene Funktionen
  • Code, der erst zur Laufzeit entsteht
  • verschlüsselte Strings
  • Anti-Disassembly-Tricks

Vorteile

Vorteile der statischen Analyse:

  • keine Ausführung nötig
  • geringeres Risiko
  • schnelle Erstbewertung
  • Datei kann unabhängig vom Laufzeitverhalten untersucht werden
  • Sample kann nicht aktiv auf Analyse reagieren

Merksatz

Statische Analyse zeigt, was in einer Datei steckt. Sie zeigt aber nicht immer, was zur Laufzeit wirklich passiert.

Zuletzt aktualisiert: 6. Juni 2026