Schritt für Schritt zur geschützten Java-Anwendung · Enigma 39. D4J 40. Lython 41. JD-GUI 42....

Post on 03-Nov-2019

0 views 0 download

Transcript of Schritt für Schritt zur geschützten Java-Anwendung · Enigma 39. D4J 40. Lython 41. JD-GUI 42....

Schritt für Schritt zur geschützten Java-Anwendung

Wolfgang Völker | Produktmanagement

Wolfgang.Voelker@wibu.com

Günther Fischer | Professional Services

Guenther.Fischer@wibu.com

1

Agenda

Java Rückblick

Schutz-Technologien für Java-Anwendungen

Grundprinzip des AxProtector Java

Optionen des AxProtetcor Java

Schutz auf Klassen-Ebene / Methoden-Ebene

Kurze Einführung in die Lizenzierung von Java-Anwendungen

2

Java Rückblick

3

Java und die JVM/JRE

Java: von Sun 1995 entwickelte Programmiersprache.

Die JVM ist eine abstrakte Maschine.

Der Befehlssatz ist der Java Byte Code.

Kompilierte Java Programme bestehen aus vielen Klassendateien, die Bytecode (keinen

nativen Code) enthalten.

JARS sind ZIP-Archive mit zusätzlichem Manifest

Bytecode wird zur Laufzeit durch Java Virtual Machine (JVM) interpretiert und ausgeführt.

Bytecode lässt sich einfach Reverse Engineeren.

Mit dem OpenJDK gibt es eine quelloffene Implementierung der JVM.

4

JAVA - Write Once, Run Anywhere (WORA)

Java Program (.java)

Interpreter (JVM)

Java Compiler

JAVAC

Java Byte Code (.class /.jar)

Windows

Interpreter (JVM)

Linux

Interpreter (JVM)

MacOS

5

Java Architektur

ClassloaderJava Program

*.class Files

Bytecode Verifier

Interpreter (JVM)

Host Operating System

(Windows, Linux, MacOS,..)

Java API

*.class Files

6

7

Java und Sicherheit

Java-Klassen lassen sich

Leicht extrahieren

Leicht ersetzen (auch Systemklassen!)

Leicht modifizieren

Der Java Byte Code ist kein „Geheimnis“

Fazit

Alles was in Java geschrieben ist, ist generell unsicher!

Schutzziele

Schutz gegen Raubkopien (Lizenzierung)

Schutz des geistigen Eigentums (Reverse Engineering)

Schutz gegen Analyse durch Mitbewerber

Schutz gegen Verwendung von Code

Integritätsschutz von Daten und Code

Schutz von Daten als Bestandteil des Produktes (Wettbewerbsvorteil)

9

Das Waffenarsenal der Angreifer (Java Decompiler .jar/.class -> .java)

10

Schutz-Technologien für

Java-Anwendungen

11

Betrachtete Optionen

Obfuskierung

Basic Obfuscation

Heavy Duty Protection (Klassmaster)

Java2Exe (JET Engine)

Umwandlung in nativen Code

Evtl. weitere Verschlüsselung durch native Tools

Java Verschlüsselung

AxProtector

Sonstige Methoden

Beispiel CodeMeter Core API

12

Java Obfuscation Tools (KlassMasterAltaori/ProGuard….)

13

Basic obfuscation

14

Basic Obfuscation (Name Obfuscation)

Quelle: Zelix Webseite

15

Decompilieren einer Basic Obfuscation

Quelle: Zelix Webseite

Decompile

16

Heavy Duty Protection

17

Zelix KlassMaster

18

Heavy Duty Protection (Flow, Exception, String Obfuscation …)

Quelle: Zelix Webseite

19

JDO: Java Deobfuscator / JMD: Java bytecode deobfuscation tool

20

JAVA2EXE

Excelsior JET Engine

21

Prinzip Java2ExeJa

va C

ode

Java

Byt

e C

ode

Nat

iver

Cod

e

JAVAC

Compiler

Excelsior

JIT

Compiler

22

Zusätzlicher Schutz durch VerschlüsselungJa

va C

ode

Java

Byt

e C

ode

Nat

iver

Cod

e

Ver

schl

üsse

lter

nativ

erC

ode

JAVAC

Compiler

Excelsior

JIT

CompilerAxProtector

23

Verschlüsselung

24

Verschlüsselung des Codes

25

Verschlüsselung des ausführbaren Codes vor der Auslieferung

Entschlüsselung der benötigten Klassen/Methoden

zur Laufzeit im Speicher

VerschlüsselungUngeschützte

Anwendung

Entschlüsselung

AxEngine

AxEngine

Die AxProtector Suite

AxProtector nativ

Windows 32-/64-bit

Mac OS X

Linux

AxProtector .NET

.Net 2.0, 3.0, 3.5, 4.0, 4.5

AxProtector Java

Java 1.6

Java 1.7

Java 1.8

Java Anwendungen

Java Applets

Java Servlets

26

AxProtector Java - Funktionsprinzip

AxProtector Java automatischer Schutz auf Klassen/Methodenebene durch Verschlüsselung des Bytecodes

Jede Klasse wird automatisch beim Laden entschlüsselt. Dazu muss die AxProtector Runtime initialisiert werden:

Java-Anwendungen mit Main-Klasse => Wrapper (com.wibu.xpm.Wrapper)

manuelles Laden durch EntryPoint

manuelles Laden durch ProtectionManager

Einbau erweiterter Schutzmaßnahmen (IxProtector)

Einbau von Lizenzabfragen (CoreAPI)

27

Java-Anwendungen mit Main-Klasse

28

EntryPoint

29

Einbau erweiterter Schutzmaßnahmen (IxProtector)

30

Unterstützte Anwendungstypen

Welche Anwendungstypen kann der AxProtector Java schützen?

Konsolen- und Desktopanwendungen

Applets, Web Start Anwendungen

Servlets

Eclipse RCP, Eclipse Plugin

OSGi

31

Unverschlüsselter Code (CAFEBABE)

32

Magic Number Version

Constant Pool

Access Flag

this Class

super Class

Interfaces

Fields

Methods

Attributes

Mit AxProtector Java geschützter Code

33

Magic Number Version

Constant Pool

Access Flag

this Class

super Class

Interfaces

Fields

Methods

Attributes

Prinzip des AxProtector Java

Verschlüsselte Klasse auf der

Festplatte

Klasse im Speicher

AxProtector RuntimeJVM

loadClass

34

AxProtector Klassen

Automatischer Schutz (in das JAR integriert oder als WibuXpm4JRuntime.jar)

Anpassungen im Code

Laufzeit der geschützten Anwendung

Integriert in die geschützte Anwendung

WibuXpm4JRuntime.jar im classpath

35

Parameterdatei im XML-Format (Lizenzliste)

36

Quelle: CodeMeter Entwicklerhandbuch

Beispiel

37

Decompilieren nach

Verschlüsselung

38

Enigma

39

D4J

40

Lython

41

JD-GUI

42

Angriffe via Tools

43

In Java gibt es einige „Tools“ Interfaces

Gedacht, um Byte-Code zu analysieren / modifizieren

Debugger, Profiler

JVMPI: Java Virtual Machine Profiling Interface

Bis einschließlich Java 6

JVMTI: Java Virtual Machine Tools Interface

Ab Java 7, Nachfolger von JVMPI

Besondere Schutzmaßnahmen

WibuXPM4J32/64.dll Absicherung

Callback Check

Prüft, dass keine JNI Funktionen geändert wurden

JVMPI / JVMTI Check

Prüft, ob ein JVMPI/JVMTI Agent vorhanden ist

44

JVM Manipulation / Ändern des JVM Quellcodes

45

OpenJDK ist eine quelloffene Implementierung der JVM

Seit Version 6

Kann somit mit Hintertür gebaut werden

Einfügen von Code, der geladene Klassen mitschreibt, somit einfach möglich

Lösung:

JVM Verifizierung

Update der Signaturen

46

Weitere Verfahren

47

Schutz von Daten

Annahme

Geistiges Eigentum sind die Daten

z.B. Fahrzeugdaten für Werkstätten

Schutzziel

Schützen der Daten gegen unbefugte Benutzung (Lizenzierung)

Schützen der Daten gegen „Extraktion“ und Nachbau durch Mitbewerber

Lösung:

Verschlüsselung der Daten

48

Schutz von Daten

Nur sicher, wenn die Schlüssel in einem vertrauenswürdigem Speicher liegen.

49

CodeMeter Core API

com.wibu.CodeMeter

Grundlage aller Schutzmechanismen

Schnittstelle zur Kommunikation mit CodeMeter

Erweiterte Schutzmöglichkeiten

Einheitliches Interface durch CodeMeter License Server

Lizenz in einem Dongle oder in einer verschlüsselten Lizenzdatei

Einheitliche Lizenzoptionen

Mischen in einer Anwendung möglich

Dongle

Ihre Software

Aktivierung

Java Native Interface

CodeMeter License Server

50

Schutz von Daten - Verschlüsselung

Schutz durch Ver-/Entschlüsselung in der Anwendung

cmCrypt2 ()

51

Integritätsschutz - Signatur

Integritätsschutz von Daten/Bibliotheken

cmCalculateDigest()

cmCalculateSignature()

cmValidateSignature()

52

Core API – Dokumentation und Beispiele

CodeMeter Java API Help (HTML Format)

Servlet Sample

CmCalculator

CmDemo

Lizenzzugriff

Auslesen von Lizenzen

Verschlüsselung

53

Ein paar Worte über

CodeMeter

54

Flexible Lizenzierungs Modelle für Lizenzgeber

Single User

Network

Feature On Demand

Perpetual

Trial version

Rent / Leasing / Subscription

Pay-Per-Use

Maintenance period

Downgrade

Grace Period

Volume

Version

Standby

High Availability

Overflow

Borrowing

Name/PC

Time zone

55

Zusammenfassung

56

Erreichung Schutzziele bei Obfuscation

Schutz gegen Raubkopien (Lizenzierung)

Schutz des geistigen Eigentums (Reverse Engineering)

Schutz gegen Analyse durch Mitbewerber

Schutz gegen Verwendung von Code

Integritätsschutz von Daten und Code

Schutz von Daten als Bestandteil des Produktes (Wettbewerbsvorteil)

57

Erreichung Schutzziele bei Java2Exe

Schutz gegen Raubkopien (Lizenzierung)

Schutz des geistigen Eigentums (Reverse Engineering)

Schutz gegen Analyse durch Mitbewerber

Schutz gegen Verwendung von Code

Integritätsschutz von Daten und Code

Schutz von Daten als Bestandteil des Produktes (Wettbewerbsvorteil)

58

Erreichung Schutzziele bei Verschlüsselung

Schutz gegen Raubkopien (Lizenzierung)

Schutz des geistigen Eigentums (Reverse Engineering)

Schutz gegen Analyse durch Mitbewerber

Schutz gegen Verwendung von Code

Integritätsschutz von Daten und Code

Schutz von Daten als Bestandteil des Produktes (Wettbewerbsvorteil)

59

Wir sind gewappnet!

60

Vielen Dank!

WIBU-SYSTEMS

Germany +49-721-93172-0

USA +1-425-775-6900

China +86-21-55661790

www.wibu.com | info@wibu.com

61