Bernauer, A. J. (2011). PPJ - a polymorphic runtime packer for Java [Diploma Thesis, Technische Universität Wien]. reposiTUm. https://resolver.obvsg.at/urn:nbn:at:at-ubtuw:1-41502
Üblicherweise nutzt schadhafte Software eine oder mehrere Techniken zum Verschleiern von ausführbaren Dateien, um den eigenen Code zu verstecken. Die Transformation in ein solches geschütztes Programm nennt man "Packen". Wird ein bestimmtes Programm mehrfach gepackt, so unterscheiden sich die einzelnen Instanzen des gepackten Programms zwar im inaktiven Zustand auf dem Speichermedium voneinander, ...
Üblicherweise nutzt schadhafte Software eine oder mehrere Techniken zum Verschleiern von ausführbaren Dateien, um den eigenen Code zu verstecken. Die Transformation in ein solches geschütztes Programm nennt man "Packen". Wird ein bestimmtes Programm mehrfach gepackt, so unterscheiden sich die einzelnen Instanzen des gepackten Programms zwar im inaktiven Zustand auf dem Speichermedium voneinander, im laufenden Zustand aber, wenn das Programm in den Speicher geladen und ausgeführt wird, werden für jede Instanz äquivalente Instruktionen ausgeführt. Es ist schwierig, für eine solche Art von Programmen Signaturen für statische Virenscanner zu erstellen, da die Eindeutigkeit nicht mehr mithilfe vom Programmcode auf dem Speichermedium ermittelt werden kann, sondern vorrangig durch den Code im Speicher oder durch das dynamische Verhalten gegeben ist. Diese Arbeit gibt einen Einblick in aktuelle Verschleierungstechniken und deren Gegenmaßnahmen. Weiters wird gezeigt, dass effektive Verschleierungstechnologien, die auf nativen Programmcode angewendet werden, auch auf die Java-Umgebung übertragen werden können.<br />Da Java-basierte Plattformen und Frameworks einen immer größeren Anteil an etablierten Technologien einnehmen, wird es auch in diesem Bereich immer wichtiger, sich mit Schadsoftware und auch deren Verschleierung auseinanderzusetzen. Neben einer Zusammenfassung und Besprechung von aktuellen Verschleierungstechniken, wird im Rahmen dieser Arbeit ein neuartiges, Java-basiertes Verschleierungsprogramm, ein "Runtime-Packer", vorgestellt. Dieser implementiert eine effektive Technik zum Verschleiern von Java-Programmen. Der Packer basiert auf polymorpher Verschleierung, die eine Hülle, einen "Wrapper", um das originale Programm legt, und so dessen Eigenschaften vor Virenscannern versteckt.<br />Um die Effektivität unseres Packers zu testen, wurde ein Prototyp entwickelt. Als Ziel sollten die implementierten Techniken so geschaffen sein, dass sie die Ausführungsgeschwindigkeit des gepackten Programms nicht signifikant verlangsamen. Trotzdem soll eine signatur-basierte Überprüfung für ein gepacktes Programm sehr schwierig werden oder sich die Analyse desselben durch einen menschlichen "Reverse Engineer" erheblich zeitaufwändig gestalten. Letztendlich soll der Packer die Funktionalität des originalen Programms nicht verändern.<br />In einer Evaluierungsphase konnte gezeigt werden, dass unser Packer alle drei dieser Anforderungen erfüllt. Die Effektivität des Packers wurde mit Hilfe eines definierten Schemas evaluiert, welches den Grad der Verschleierung, die Ausführungsgeschwindingkeit und die Bewahrung der originalen Funktionalität berücksichtigt.<br />
de
Malware utilizes one or more obfuscation techniques to camouflage executables in order to conceal their own code. Thus in its dormant state on disk the program's code may vary for every copy, however when executed it carries out equivalent instructions to achieve its goal. It is difficult to generate signatures for this kind of malware, as its unambiguousness cannot be measured anymore by its prov...
Malware utilizes one or more obfuscation techniques to camouflage executables in order to conceal their own code. Thus in its dormant state on disk the program's code may vary for every copy, however when executed it carries out equivalent instructions to achieve its goal. It is difficult to generate signatures for this kind of malware, as its unambiguousness cannot be measured anymore by its provided code on disk but rather by its code in mem- ory during runtime and by its dynamic behavior. This work gives an insight into current obfuscation techniques and their counteractive measures. Furthermore it is shown that effective obfuscation techniques that currently work in native machines can be applied to the Java environment. As Java-based platforms have gained increased market share, it has become more and more important to deal with obfuscation also in this sector.<br />Along with a summarization and a review of state-of-the-art obfuscation techniques, in line with this work a novel obfuscator in the form of a runtime packer is introduced which implements an effective obfuscation technique for the Java language. It is based on polymorphic obfuscation which puts a wrapper around an arbitrary executable in order to hide its potentially malicious nature from static malware scanners.<br />In order to test the effectiveness of our packer a prototype was developed. The tech- niques are expected to not significantly slow down the execution speed of the obfuscated program in comparison to its unobfuscated counterpart. Still, it has to yield excellent effectiveness, which means that an automated signature-based detection should become difficult and human reverse engineers should be impeded considerably with their work once a program is packed. Last but not least the packer should not alter the original functionality of the packed program.<br />In a final evaluation phase it could be demonstrated that our packer fulfills all three of the stated conditions. The effectiveness of our packer is evaluated against a defined mea- surement scheme taking into account the degree of obfuscation, execution performance and the preservation of functionality.