Android-Apps schützen!

Überblick: DexGuard vs. ProGuard

27.04.2017
Von   
Mark Zimmermann leitet hauptberuflich das Center of Excellence (CoE mobile) zur mobilen Lösungsentwicklung bei der EnBW Energie Baden-Württemberg AG in Karlsruhe. Er weist mehrere Jahre Erfahrung in den Bereichen Mobile Sicherheit, Mobile Lösungserstellung, Digitalisierung und Wearables auf. Der Autor versteht es, seine Themen aus unterschiedlichsten Blickwinkeln für unternehmensspezifische Herausforderungen darzustellen. Neben seiner hauptberuflichen Tätigkeiten ist er Autor zahlreicher Artikel in Fachmagazinen.
Wer seine Android-App vor Angriffen und fremden Blicken schützen will, hatte bisher die Qual der Wahl, welches Tool ihm dabei helfen kann. Welches Produkt für das jeweilige Projekt am besten geeignet ist, versuche ich in dieser kurzen Gegenüberstellung darzulegen.
Für Programmierer, die ihre Android-App vor Angriffen und fremden Blicken schützen wollen, stehen Tools wie ProGuard und DexGuard bereit.
Für Programmierer, die ihre Android-App vor Angriffen und fremden Blicken schützen wollen, stehen Tools wie ProGuard und DexGuard bereit.
Foto: welcomia - shutterstock.com

Um Ihnen eine Möglichkeit zu geben, welches Produkt evtl. besser für Ihr Projekt geeignet ist, habe ich versucht, die wesentlichen Unterschiede aus meiner persönlichen Sicht aufzuzeigen:

ProGuard ist ein vielseitiges Produkt zur Optimierung von Java-Bytecode im Allgemeinen, nicht nur für Android-Apps. Das Produkt erlaubt es, sowohl Desktop-Anwendungen, Embedded-Anwendungen als auch mobile Anwendungen (Android) zu komprimieren, zu optimieren und zu obfuskieren (verschleiern). Diese Optimierung hilft, den Speicherbedarf zu reduzieren, und wirkt sich auch positiv auf den Akkuverbrauch beim Nutzen der App aus. Vereinfacht ausgedrückt, kann ProGuard als ein generischer Optimierer für Java Bytecode bezeichnet werden.

DexGuard, auf der anderen Seite, widmet sich speziell dem Schutz und der Optimierung von Android-Apps. Dabei versucht der Hersteller, den schnelllebdigen Entwicklungen in der mobilen Plattform gerecht zu werden. So bietet DexGuard spezielle, auf Android abgestimmte, Schutzfunktionen. Dafür nutzt DexGuard abgestimmten Konfiguration für die jeweilige Android-Laufzeit-Umgebung und für gemeinsame Bibliotheken (Google Play Services, Dagger, Realm, SQLCipher etc.). Zusätzlich teilt DexGuard Dex-Dateien, die die Größenbeschränkungen überschreiten, automatisch auf (MultiDex). Während ProGuards Aktivitäten sich auf den Bytecode von Java-Anwendungen beschränken, bietet DexGuard auch einen Schutz für eigene Dateien, native Bibliotheken, Ressourcen-Dateien und Asset-Dateien.

Das Überführen von Android-Apps in lesbaren Java Code ist für Angreifer meistens problemfrei möglich. Hierzu stehen diesem zwei Ansätze zur Verfügung. Zum einen die Möglichkeit per Decompilierung (statische Analyse) und zum anderen die Analyse des Verhaltens der App zu Laufzeit (dynamische Analyse).

Dieses Metamodell zeigt die stetig identische Vorgehensweise von statischen Analysen (Decompilierung) und dynamischen Analysen zur Laufzeit (Hooking).
Dieses Metamodell zeigt die stetig identische Vorgehensweise von statischen Analysen (Decompilierung) und dynamischen Analysen zur Laufzeit (Hooking).
Foto: Mark Zimmermann

Sowohl ProGuard als auch DexGuard härten den Quellcode einer App. Dies soll diesen vor Reverse-Engineering-Ansätzen schützen.

ProGuard bietet - aufgrund seines generischen Optimierens - einen grundlegenden Schutz vor statischer Analyse. Hierfür bietet ProGuard einen Grundschutz in Form von Namensverschleierung. DexGuard hingegen nutzt Verschlüsselungs- und Obfuscationstechniken nicht für Namen von Klassen, Feldern und Methoden, sondern auch arithmetische und logische Ausdrücke im Quellcode. Auch der Kontrollfluss des Codes innerhalb der Methoden wird angepasst. Damit schützt DexGuard eine App wirkungsvoller vor Analysen.

Obfuskierungstechniken können auf den kompletten Quellcode Einfluss nehmen. Es ist daher unabdingbar, die Funktionsfähigkeit zu überprüfen, damit bei dieser Art der "Manipulation" keine zusätzlichen Bugs auftreten.
Obfuskierungstechniken können auf den kompletten Quellcode Einfluss nehmen. Es ist daher unabdingbar, die Funktionsfähigkeit zu überprüfen, damit bei dieser Art der "Manipulation" keine zusätzlichen Bugs auftreten.
Foto: Mark Zimmermann

Zusätzlich implementiert DexGuard eine Reihe von Runtime-Sicherheitsmechanismen (Runtime Application Self-Protection), die zur Laufzeit die Integrität der App überprüfen. Dynamische Analysen werden damit erschwert. Wird eine Anomalie erkannt, kann die App darauf reagieren. DexGuard stellt damit ein spezialisiertes Tool zum Schutz von Android-Apps dar.

Sie entscheiden

Es mag sich komisch anhören, aber der Weg ist das Ziel. ProGuard hilft an vielen Stellen. Das als Open Source verfügbare Produkt sollte auf alle Fälle eingesetzt werden. Wer schützenswerte Apps mit noch schätzenswerteren Daten hat, sollte aber seien Blick auf das kommerzielle Produkt DexGuard werfden. Die Schutzmauern werden damit merklich höher gezogen. (mb)