Secure Software Development: Schutz gegen Reverse Engineering – „Game of Codes“ – Hands-on

Zurück

Zielsetzung

Dieses Training vermittelt praxisnah, wie Softwareanwendungen gegen Man-At-The-End-Angriffe geschützt werden können. Da derartige Angriffe oft auf Binärniveau durchgeführt werden, liegt der Schwerpunkt des Trainings auf Anwendungen, welche in der Programmiersprache  C geschrieben wurden.

In sehr praktischer Form werden sowohl Angriffs- als auch entsprechende Verteidigungstechniken und – Werkzeuge behandelt:

  • Reverse Engineering mittels statischer und dynamischer Angriffe
  • Verteidigungstechniken des State-of-the-art-Softwareschutzes, wie z. B. Obfuscation (Verschleierung), Integritätsschutz, Anti-Disassembly, Antidebugging, usw..

Effizientes Lernen durch Hands-on:

Die Trainingsteilnehmer werden abwechselnd Verteidiger- und Angreiferrollen einnehmen: Die Verteidiger versuchen, den Code mit den erlernten Methoden und Mitteln gegen Angreifer zu schützen, welche Reverse Engineering-Techniken anwenden werden.
Anmelden

Hintergrundinformationen

Man-At-The-End (MATE)-Angreifer haben laut Definition ungehinderten Zugriff auf eine Softwareapplikation oder ein ganzes System. MATE-Angreifer stehen somit viel umfangreichere Angriffsmöglichkeiten zur Verfügung als klassischen Remote-Angreifern. So können MATE-Angreifer ein schrittweises Debugging der Softwareapplikation durchführen und deren Code- und/ oder Speicherwerte während der Ausführung ändern. Daher sind sie in der Lage nach Belieben Algorithmen zu analysieren, zu extrahieren und zu verändern. Somit können sie z.B. Lizenz- und Code-Integritätsprüfungen umgehen sowie geheime Schlüssel und Geschäftsgeheimnisse auslesen. Dabei müssen diese Angreifer nicht einmal unbedingt Schwachstellen in der Anwendung ausnutzen.

Zielgruppe

Das Training richtet sich an Software-Entwickler, -Architekten, -Tester, und Auditoren.

Inhalte

1. Tag, 09:00-17:00 Uhr

Phase 1 – Application Protection

Software Verschleierung (Obfuscation) und Diversität

  • Szenarien für den Einsatz von Software Protection
  • Statische und Dynamische Verschleierungstechniken (z.B. Opaque Predicates, Virtualisierung)
  • Verschleierung, die von Computervieren und Malware benutzt wird
  • Software Diversität (räumlich und zeitlich)

Hands-on:

  • Aufgabe: Ein kleines Spiel mit Hilfe von bestehenden Werkzeugen zur Verschleierung schützen.
  • Jedes Team erhält einige zu schützenden Programmteilen (Assets) und versucht diese gegen MATE-Angriffe zu schützen.

2. Tag, 09:00-17:00 Uhr

Phase 2 – Reverse Engineering

Händische Programm Analyse

  • Verschiedene Angriffsziele
  • Disassembly von x86 Binaries
  • De-Kompilieren
  • Kontrollfluss-Analyse
  • Cracking mit dem GNU Debugger (GDB)

Hands-on:

  • Aufgabe: Reverse Engineering aus der Sicht eines Angreifers
  • Jedes Team tauscht die von Ihnen geschützte Anwendung mit den anderen Teams
  • Anschließend versuchen die Teams, die eingebauten Schutzmechanismen zu analysieren und zu überwinden.
  • Alle gelösten Aufgaben werden dokumentiert (z.B. Anleitungen, automatische Skripte, Screenshots), sodass andere Teams sie in der nächsten Phase nachvollziehen können.

3. Tag, 09:00-17:00 Uhr

Phase 3 – Application Hardening

Kurzpräsentation der Ergebnisse aus Phase 2

Nachweis von Manipulationen (Tamper-proofing)

  • Überprüfen der Laufzeitumgebung
  • Introspection
  • Self-Checksumming
  • Oblivious-Hashing
  • Mögliche Reaktionen

Hands-on:

  • Aufgabe: Härten einer Anwendung gegen Manipulationen
  • Jedes Team fügt neue Mechanismen zum Erkennen von Manipulationen zu seinen Programmen aus Phase 1 hinzu, sodass möglichst viele Angriffe aus Phase 2 abgewehrt werden.
  • Dabei dokumentiert jedes Team, welche zusätzlichen Schutzmechanismen hinzugefügt wurden und welche Angriffe mit ihnen abgewehrt werden können bzw. sollten.

4. Tag, 09:00-17:00 Uhr

Phase 4 – Automated Reversing

Kurzpräsentation der Ergebnisse aus Phase 3

Automatisierte Programmanalyse

  • verschiedene Frameworks zur automatischen Binäranalyse
  • Symbolische und (konkret + symbolisch) konkolische Ausführung
  • SMT (satisfiability modulo theories) Löser zur Software-Sicherheit-Analyse
  • Extrahieren eines vereinfachten Kontrollfluss-Graphen (simplified CFG) aus verschleierten Binaries

Hands-on:

  • Aufgabe: Analyse der Schutzmechanismen aus der Sicht eines Angreifers
  • Jedes Team erhält Zugang zu den geschützten Binärdateien und der Dokumentation der anderen Teams aus allen vorherigen Phasen. Anschließend benutzen sie die vorgestellten Analyse-Werkzeuge um möglichst viele dieser Programme weitgehend automatisiert zu brechen.

Voraussetzungen

Programmierkenntnisse in C / C ++ werden vorausgesetzt. Empfohlen werden Kenntnisse bezüglich Assembler- Sprache und Linux. Nicht notwendig sind Vorkenntnisse im Bereich IT-Sicherheit.

Referenten

Thomas Hutzelmann

Thomas Hutzelmann ist wissenschaftlicher Mitarbeiter am Lehrstuhl für Software Engineering der Technischen Universität München.
Er hat einen Master of Science with honors als Softwareingenieur von der Ludwig-Maximilians-Universität München, der Universität Augsburg und der Technischen Universität München.

Termine

Veranstaltungshinweise

Die Teilnehmer haben die Möglichkeit, ihr eigenes Notebook in den Hands-on-Sessions zu nutzen, um somit auf vertrauter Desktopumgebung zu arbeiten. Auf Wunsch werden den Teilnehmern auch Arbeitsplätze zur Verfügung gestellt. Im Training werden Software-Tools genutzt, die frei aus dem Internet heruntergeladen werden können.

Preis

2.390,- Euro zzgl. MwSt.

Im Preis enthalten sind Trainingsunterlagen, Pausengetränke und Mittagessen.

Ähnliche Trainings

Copyright ESG Elektroniksystem- und Logistik-GmbH 2018. All rights reserved.