Funktionsanalyse von ausführbaren Dateien – Aufspüren von kryptographischer Funktionalität mittels Visualisierung

Master-Studiengang Information Security

Dipl.-Ing. Patrick Kochberger, BSc

Betreuer: FH-Prof. Dipl.-Ing. Dr. Sebastian Schrittwieser, Bakk. 

Ausgangslage

Die Untersuchung von unbekannten Programmen oder Schadsoftware macht es oft notwendig, kryptographische oder andere Funktionalität aufzuspüren. Funktionalität, als ein bestimmtes mögliches Verhalten, kann verwendet werden, um Software zu klassifizieren oder den/die BenutzerIn auf etwaige Folgen oder vorhandene, nicht erwünschte Bestandteile hinzuweisen.

Diese Analyse von Binärdateien kann ein unübersichtlicher und schwieriger Prozess sein. Um diesen zu vereinfachen und angenehmer zu gestalten, ist es notwendig, neben Automatisierung, dem Analysten oder der Analystin einen Überblick zu verschaffen. Die Darstellung als Bild kann nicht nur dabei helfen, sondern bietet auch die Möglichkeit, visuelle Muster aufzudecken. Graphische Muster ermöglichen einen einfacheren Vergleich und haben einen hohen Wiedererkennungswert.

Diese Arbeit untersucht daher den Begriff Funktionalität sowie die vorhandenen Herangehensweisen bezüglich Visualisierung von Frameworks zur Analyse von Binärdateien. 

Ziel

Das Ziel dieser Arbeit ist, festzustellen, welche Möglichkeiten es gibt, kryptographische Operationen in einer ausführbaren Datei zu lokalisieren. Dazu werden die Eigenschaften und der Aufbau von kryptographischen Routinen, stellvertretend durch den AES (Advanced Encryption Standard) oder Rijndael-Algorithmus, erläutert. Des Weiteren wird der typische Vorgang beim Compilieren und Decompilieren näher beleuchtet.

Ergebnis

Durch eine Recherche der vorhandenen Literatur im Bereich der Identifikation von Kryptographie wurden diverse Charakteristiken von kryptographischem Code entdeckt. Neben der Benutzung von Konstanten ist auch ein hohes Aufkommen von arithmetischen und bitweisen Anweisungen eine typische Eigenschaft.

Aufbauend auf diesen Erkenntnissen wurde eine Vorgehensweise zur visuellen Darstellung von ausführbaren Programmen vorgeschlagen, welche abschließend auf Praktikabilität überprüft wurde, indem Bilder von mehreren Proben erstellt und ausgewertet wurden.