Wissenschaftliches Arbeiten E185/1

Betreuer

Jens Knoop, Anton Ertl

Termine

Alle Termine finden in der Bibiothek 185/1, in der Argentinierstrasse 8, 4. Stock Mitte statt.
Themenvergabe für alle:
Mo, 27.3.2017, 14h-15h

1. Vortrag:
Mo, 15.5.2017, 14h s.t.-18h Thema  4-10
Mo, 22.5.2017, 14h s.t.-18h Thema 11-17
Mo, 29.5.2017, 14h s.t.-18h Thema 18-23

2. Vortrag:
Mo, 12.6.2017, 14h s.t.-18h Thema  4-10
Mo, 19.6.2017, 14h s.t.-18h Thema 11-17
Mo, 26.6.2017, 14h s.t.-18h Thema 18-23

Abgabe schriftliche Arbeit:
Do, 6.7.2017, 24h
Es herrscht Anwesenheitspflicht.

Ablauf

JedeR TeilnehmerIn erarbeitet sich einen Teilbereich des Themas selbständig anhand vorgegebener sowie selbst gefundener Literatur und gibt die gewonnenen Erkenntnisse durch zwei Vorträge (jeweils 15min plus 5min Diskussion) an die KollegInnen weiter. In anschließenden Diskussionen werden die Ergebnisse verdeutlicht.

Der erste Vortrag ist über einen vorgegebenen wissenschaftlichen Artikel; fassen Sie die wesentlichen Inhalte des Artikels zusammen. Für den zweiten Vortrag müssen Sie dann selbst einen späteren, verwandten Artikel finden, ihn kurz zusammenfassen, und ihn mit dem ursprünglich vorgegebenen Artikel vergleichen.

Die schriftliche Arbeit (Umfang: 6-8 Seiten) soll beide Arbeiten zusammenfassend bewerten und vergleichen und mindestens fünf Literaturreferenzen enthalten, wobei mindestens eine Referenz auf ein Konferenzpaper, eine auf einen Artikel in einem Journal, und eine auf ein Buch dabei sein muss. Beim ersten Termin des zweiten Vortrags geben sie eine Vorab-Version ab (und zwar zwei Ausdrucke), die dann von zwei Ihrer Kollegen begutachtet wird; umgekehrt müssen Sie für zwei Kollegen bis zum zweiten Termin des zweiten Vortrags ein Gutachten erstellen (Begutachtungsformular, in LaTeX ) und Verbesserungsvorschläge machen; die Gutachten sind auf Papier abzugeben und werden beurteilt, die Vorabversionen noch nicht. Schließlich müssen Sie bis [Termin steht noch nicht fest] die Endversion per email an anton@mips.complang.tuwien.ac.at im PDF- oder Postscript-Format abgeben.

Die Beurteilung beruht auf Ihren Vorträgen, Ihren Gutachten, und Ihrer schriftlichen Arbeit.

Thema

Software-Obfuskation

Software-Obfuskation (engl. software obfuscation) bezeichnet das Verschleiern oder Verstecken der Arbeitsweise und Funktionalität von Programmen durch Programmtransformationen, die das Verständnis oder die Rückgewinnung durch automatische oder nicht-automatische Verfahren verhindern oder erschweren sollen.

Techniken zur Programmobfuskation werden u.a. eingesetzt zum Schutz intellektueller Rechte an der Arbeits- und Funktionsweise proprietärer Software, zum Verstecken softwaretechnisch abgeschalteter Funktionalität innerhalb von Programmen, um verschieden mächtige Programmversionen für unterschiedliche Kundengruppen und Marktsegmente zu ermöglichen, aber auch zum Verbergen oder Verschleiern der Funktionalität von Schadsoftware.

Techniken zur automatischen und halbautomatischen Analyse von Programmen werden eingesetzt, um die Arbeitsweise und Funktionalität obfuszierter Programme wieder aufzudecken, sog. Deobfuskationstechniken.

Die Entwicklung und der Einsatz von Techniken zur Obfuskation und Deobfuskation zeigen die Janusköpfigkeit vieler Anwendungen in der Informatik. Legitime Anliegen (wie der Schutz von Eigentumsrechten durch Obfuskation oder das Brechen von Obfuskation von Schadsoftware durch Programmanalyse) und illegimite Anliegen (wie das Brechen von Eigentumsrechten durch Programmrekonstruktion (engl. reverse engineering), verbergen der Schädlichkeit von Schadsoftware) werden durch grundsätzlich dieselben Techniken unterstützt und ermöglicht.

Im Seminar beschäftigen wir uns mit ausgewählten typischen Verfahren zur Programmobfuskation und Deobfuskation und ihrer Mächtigkeit.

Gemeinsame Grundlage für alle Teilnehmer am Seminar sowie alle Vorträge und Ausarbeitungen ist der folgende Überblicksartikel aus der Zeitschrift ACM Computing Surveys:

Sebastian Schrittwieser, Stefan Katzenbeisser, Johannes Kinder, Georg Merzdovnik, Edgar Weippl. Protecting Software through Obfuscation: Can It Keep Pace with Progress in Code Analysis? ACM Computing Surveys 49(1):4.1-37, 2016.

Im einzelnen werden wir uns mit folgenden wissenschaftlichen Arbeiten zu Obfuskation und Deobfuskation beschäftigen:

1 Zu Mächtigkeit, Grenzen und neuen Möglichkeiten von Obfuskation:

1) B. Barak, O. Goldreich, R. Impagliazzo, S. Rudich, A. Sahai, S. Vadhan, and K. Yang. 2001. On the (im)possibility of obfuscating programs. In Advances in Cryptology-Crypto 2001. Springer, Berlin, 1-18, 2001.

2) Roberto Giacobazzi and Isabella Mastroeni. 2012. Making abstract interpretation incomplete: Modeling the potency of obfuscation. In Proceedings of the 19th International Symposium Static Analysis (SAS 2012). Springer, Berlin, 129-145.

und (zusammen mit obigem Artikel zu bearbeiten)

Roberto Giacobazzi, Isabella Mastroeni, Mila Dalla Preda: Maximal incompleteness as obfuscation potency. Formal Asp. Comput. 29(1): 3-31 (2017)

3) Roberto Giacobazzi. 2008. Hiding information in completeness holes: New perspectives in code obfuscation and watermarking. In Proceedings of the 6th IEEE International Conference on Software Engineering and Formal Methods (SEFM 2008). IEEE, 7-18.

2 Obfuskationstechniken

2.1 Datenobfuskation

4) Christian Collberg, Clark Thomborson, and Douglas Low. 1998. Breaking abstractions and unstructuring data structures. In Proceedings of the 1998 International Conference on Computer Languages. IEEE, 28-38.

5) Bertrand Anckaert, Mariusz H. Jakubowski, Ramarathnam Venkatesan, and Chit Wei Saw. 2009. Runtime protection via dataflow flattening. In Proceedings of the 3rd International Conference on Emerging Security Information, Systems and Technologies (SECURWARE 2009). IEEE, 242-248.

6) Stanley Chow, Phil Eisen, Harold Johnson, and Paul C. Van Oorschot. 2003b. A white-box DES implementation for DRM applications. In Digital Rights Management. Vol. 2696. Springer, Berlin, 1-15.

2.2 Statische Programmumschreibung

7) Stanley Chow, Yuan Gu, Harold Johnson, and Vladimir A. Zakharov. 2001. An approach to the obfuscation of control-flow of sequential computer programs. In Information Security. Springer, Berlin, 144-155.

8) Christophe Foket, Bjorn De Sutter, Bart Coppens, and Koen De Bosschere. 2013. A novel obfuscation: Class hierarchy flattening. In Foundations and Practice of Security. Springer, Berlin, 194-210.

9) Christophe Foket, Bjorn De Sutter, and Koen De Bosschere. 2014. Pushing java type obfuscation to the limit. IEEE Trans. Dependable Secure Comput. 6 (2014), 553-567.

10) Sebastian Schrittwieser, Stefan Katzenbeisser, Peter Kieseberg, Markus Huber, Manuel Leithner, Martin Mulazzani, and Edgar Weippl. 2013. Covert computation: Hiding code in code for obfuscation purposes. In Proceedings of the 8th ACM SIGSAC Symposium on Information, Computer and Communications Security. ACM, 529-534.

2.3 Dynamische Programmumschreibung

11) Yuichiro Kanzaki, Akito Monden, Masahide Nakamura, and Ken-ichi Matsumoto. 2003. Exploiting selfmodification mechanism for program protection. In Proceedings of the 27th Annual International Conference on Computer Software and Applications. IEEE, 170-179.

12) J. Riordan and B. Schneier. 1998. Environmental key generation towards clueless agents. Mobile Agents and Security (1998), 15-24.

13) Matias Madou, Bertrand Anckaert, Patrick Moseley, Saumya Debray, Bjorn De Sutter, and Koen De Bosschere. 2006. Software protection through dynamic code mutation. In Information Security Applications. Springer, Berlin, 194-206.

3 Zu Deobfuskation:

3.1 Statische Analyse

14) Sebastien Bardin, Philippe Herrmann, and Franck Vedrine. 2011. Refinement-based CFG reconstruction from unstructured programs. In Proceedings of the 12th International Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI 2011). 54-69.

15) Christopher Krügel, William K. Robertson, Fredrik Valeur, and Giovanni Vigna. 2004. Static disassembly of obfuscated binaries. In Proceedings of the USENIX Security Symposium. 255-270.

16) Gogul Balakrishnan and Thomas W. Reps. 2004. Analyzing memory accesses in x86 executables. In Compiler Construction, Evelyn Duesterwald (Ed.). Vol. 2985. Springer, Berlin, 5-23.

17) David Brumley, Ivan Jager, Thanassis Avgerinos, and Edward J. Schwartz. 2011. BAP: A binary analysis platform. In Proceedings of the 23th International Conference on Computer Aided Verification (CAV 2011). 463-469.

und (zusammen mit obigem Artikel zu bearbeiten)

J. Kinder, H. Veith. Jakstab: A static analysis platform for binaries. In Proceedings of the 20th International Conference on Computer Aided Verification (CAV 2008), Springer, LNCS, 423-427

3.2 Dynamische Analyse

18) Patrice Godefroid, Nils Klarlund, and Koushik Sen. 2005. DART: Directed automated random testing. In Proceedings of the 2005 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2005). 213-223.

19) Koushik Sen, Darko Marinov, and Gul Agha. 2005. CUTE: A concolic unit testing engine for C. In Proceedings of the 10th European Software Engineering Conference held jointly with 13th ACM SIGSOFT International Symposium on Foundations of Software Engineering. 263-272.

20) Cristian Cadar, Vijay Ganesh, Peter M. Pawlowski, David L. Dill, and Dawson R. Engler. 2006. EXE: Automatically generating inputs of death. In Proceedings of the 13th ACM Conference on Computer and Communications Security. 322-335.

3.3 Werkzeugunterstützte Programmrekonstruktion (Human-assisted reverse Engineering)

21) Cristina Cifuentes and K. John Gough. 1995. Decompilation of binary programs. Software Pract. Exp. 25, 7 (1995), 811-829.

22) Edward J. Schwartz, J. Lee, Maverick Woo, and David Brumley. 2013. Native x86 decompilation using semantics-preserving structural analysis and iterative control-flow structuring. In Proceedings of the Usenix Security Symposium.

23) Carsten Willems and Felix C. Freiling. 2012. Reverse code engineering-state of the art and countermeasures. Inform. Technol. 54, 2 (2012), 53-63.

Hinweise


Anton Ertl