Software (De)-Obfuscation

Was haben Spieleentwickler, Banken und Autoren von Schadsoftware gemeinsam? Das große Interesse daran, dass ihre Software schwerer zu analysieren und zu verstehen ist; Reverse Engineering soll erschwert werden.

Code Obfuscation beschreibt eine Reihe an Techniken, die klassisches Reverse Engineering sehr mühselig machen. Um den Code trotzdem analysieren zu können, muss er durch Code Deobfuscation in eine einfachere Darstellung überführt werden.

In diesem Training schauen wir uns gemeinsam den aktuellen Stand der Industrie und Forschung zu Code Obfuscation an und analysieren, wie diese Reverse Engineering erschweren. Danach werden wir schrittweise Techniken kennenlernen, mit welchen wir dann in praktischen Übungen Code Obfuscation brechen. Wer Interesse an Code Obfuscation/Deobfuscation hat, ist in diesem Training genauso willkommen wie diejenigen, die ihr Wissen in Programmanalysetechniken vertiefen möchten.

Trainer und Dozenten

Tim Blazytko ist Reverse Engineer sowie Chief Scientist und Mitgründer von emproof. Seit dem Abschluss seiner Promotion an der Ruhr-Universität Bochum leitet Tim ein Team, welches eingebettete Software gegen Reverse Engineering und Exploitation absichert. Neben seiner Forschung führt Tim Sicherheitsanalysen durch und gibt Trainings als Freiberufler.

Voraussetzungen

  • Grundkenntnisse im Umgang mit der Linuxkonsole, wie wir sie in unserer Schulung Linux Grundlagen vermitteln
  • Grundkenntnisse in der Programmiersprache Python, wie wir sie in unserer Schulung Python Programmierung vermitteln
  • Grundkenntnisse in x86-Assembler und Reverse Engineering, wie wir sie in unserer Schulung Reverse Engineering vermitteln

Inhalt

Code (De)-Obfuscation

  • Motivation
  • Szenarien und Anwendungen
  • Techniken der Programmanalyse

Techniken zur Code Obfuscation

  • Opaque Predicates
  • Control-flow Flattening
  • mixed Boolean-Arithmetic
  • virtuelle Maschinen

Techniken zur Code Deobfuscation

  • Compiler Optimierungen
  • Wiederherstellung des Kontrollflusses
  • Taint Analyse
  • symbolische Ausführung

Compiler Optimierungen

  • toten Code eliminieren
  • Konstanten vereinfachen
  • Static Single Assignment (SSA)
  • Anwendungen zur Deobfuscation

Symbolische Ausführung

  • Zwischensprachen (intermediate languages) im Reverse Engineering
  • symbolische und semantische Vereinfachung von obfuskiertem Code
  • Automatisierung von Reverse Engineering/Code Analyse
  • Deobfuscation vom VM-basierten Techniken
  • Brechen von Opaque Predicates

Kurszeiten

Wer möchte, reist bis 22 Uhr am Vortag an und nutzt den Abend bereits zum Fachsimpeln am Kamin oder im Park.

An den Kurstagen dann von 9-18 Uhr (mit 2 Kaffee- und 1 Mittagspause) etwa 60% Schulungen und 40% Übungen. Selbstverständlich arbeitet jeder Teilnehmer am von uns gestellten Notebook oft parallel zum Referenten mit.

Anschließend Abendessen und Angebote für Fachsimpeln, Ausflüge uvm. Wir schaffen eine Atmosphäre, in der Fachleute sich ungezwungen austauschen. Wer das nicht will, wird zu nichts gezwungen und findet auch jederzeit Ruhe.