Übersicht

Beginnend mit Version 3.5.33, spezifiziert der Wrapper, dass seine Programmdateien mit dem Windows Data Execution Prevention (DEP, Datenausführungsverhinderung)-Feature kompatibel sind, es gibt an, dass dieses auf zufällige Art bei der Ladezeit durch das Betriebssystem unter Nutzung des Address Space Layout Randomization (ASLR, Zufallsgestaltung des Adressraum-Aufbaus)-Feature umbasiert werden sollte.

Die Nutzung dieser 2 Features hat keine spürbare Auswirkung auf die Leistung und erlaubt dem Wrapper, auf eine sichere Art ausgeführt zu werden. DEP markiert Speicherbereiche, die vom Wrapper zugeteilt wurden, als nicht ausführbar und verhindert so, dass Shellcode, welches von einer Malware injiziert wurde, ausgeführt wird. ASLR schützt gegen Pufferüberlaufangriffe, indem die Speicherorte von verschiedenen Programmteilen im Speicher zufällig angeordnet werden. Jedes Mal, wenn der Wrapper läuft, werden der Stapel, Heap, und Bibliotheken an eine andere Adresse im virtuellen Speicher verschoben, so dass Angreifer nicht mehr durch Versuche lernen können, wo sich Ihr Target befindet.

Es gibt keine einzurichtende Eigenschaft in der Wrapper-Konfigurationsdatei, um DEP und ASLR zu aktivieren. Beide Features werden automatisch aktiviert, wenn irgendeine Version des Wrappers ausgeführt wird, die größer gleich der Version 3.5.33 ist.

Verstehen von DEP

DEP wurde das erste Mal in Windows XP eingeführt und ist kompatibel mit dem Wrapper von Windows XP SP3 und neuer. "java.exe" und "javaw.exe" sind verknüpft mit der /NXCOMPAT-Option, die in dem Programmheader hinzugefügt wurden, um den DEP-Suupport zu spezifizieren. Diese Option wird von Windows Vista und neuer verstanden. Um mit diesem Verhalten übereinzustimmen, wird die von dem Java-Prozess genutzte native Bibliothek (wrapper.dll) auch mit der gleichen Option verbunden und aktiviert DEP für die gleichen Windows-Versionen.

Das Vorhandensein dieser Option kann bestätigt werden, indem überprüft wird, dass dumpbin.exe "NX-kompatibel" unter den DLL-Eigenschaften anzeigt:

dumpbin /headers <PATH_TO_WRAPPER_DLL>

Bitte beachten Sie, dass Windows DEP bei der Ausführung von 64-Bit-Programmdateien erzwingt und dass daher 64-Bit Editionen des Wrappers ( beinhaltet Versionen älter als 3.5.33) stets mit aktiviertem DEP ausgeführt werden.

Beachten Sie auch, dass der Wrapper normalerweise auch auf alten Windows-Versionen, die kein DEP unterstützen, ausgeführt wird (aber auf eine weniger sichere Weise).

DEP kann auf Systemebene mit 4 verschiedenen Richtlinien konfiguriert werden:

OptIn/OptOut: Unter Windows 10 machen Sie einen Rechtsklick auf "Dieser Computer", dann "Eigenschaften".

Auf der linken Seite der Systemsteuerung, klicken Sie auf "Fortgeschrittene Systemeinstellungen".

In dem "Systemeigenschaften"-Fenster drücken Sie auf die "Einstellungen"-Schaltfläche unter "Leistung".

In dem "Leistungsoptionen"-Fenster, klicken Sie auf "Datenausführungsverhinderung".

"OptIn", welches die voreingestellte und erste Option in dem oben gezeigten Screenshot ist, spezifiziert, dass Windows DEP für Windows-Prozesse,-Dienste, 64-Bit-Prozesse sowohl für alle Programmdateien, die auf "opt-in" eingestellt sind, aktiviert wird (was für die Wrapper-Version 3.5.33 und neuer der Fall ist).

"OptOut", welches die zweite Option in dem obengenannten Screenshot ist, aktiviert DEP für alle Prozesse mit Ausnahme dieser, die in dem Feld unter dieser Option gelistet sind, sowohl für alle Programmdateien, die auf "opt-out" eingestellt sind (was für keine Wrapper-Version jemals der Fall sein wird). Diese Einstellung kann genutzt werden, um DEP für 32-Bit-Edition des Wrappers älter als 3.5.33 zu aktivieren, aber aktiviert DEP auch für andere Systemprozesse.

AlwaysOn/AlwaysOff: diese Einstellungen sollten in der Mehrheit der Fälle nicht notwendig sein, aber Windows ermöglicht es, DEP für alle Prozesse zu erzwingen (durch Ignorieren von Ausnahmeliste und "opt-out"-Optionen, die in Programmdateien eingebettet sind), oder umgekehrt durch vollständiges Abschalten von DEP für alle auf dem System laufenden Prozesse. Dies kann erledigt werden, indem bcdedit.exe in einer Befehlszeile genutzt wird, ausgeführt als Admin (oder boot.ini auf Windows XP).

Verstehen von ASLR

ASLR wurde in Windows Vista eingeführt und ist in allen weiteren Versionen von Windows implementiert. "java.exe" and "javaw.exe" sind mit der /DYNAMICBASE-Option verbunden,die dem Programmheader hinzugefügt wurde, um zu spezifizieren, dass die Java-Anwendung bei der Ladezeit unter Nutzung von ASLR umbasiert wird. "wrapper.exe", "wrapperw.exe" und "wrapper.dll" sind mit der gleichen Option verbunden, um ASLR zu aktivieren.

Das Vorhandensein dieser Option kann dadurch bestätigt werden, dass überprüft wird, dass dumpbin.exe "Dynamic base" in den DLL-Eigenschaften anzeigt:

dumpbin /headers <PATH_TO_WRAPPER_DLL_OR_EXE>

Auf der Systemebene für ASLR wird keine Konfiguration benötigt. Windows Vista und neuer haben ASLR für Programmdateien aktiviert und DLL verbunden, ASLR aktiviert zu sein. Aus Kompatibilitätsgründen ist es standardmäßig für andere Anwendungen nicht aktiviert. Die Wrapper-Version 3.5.33 und höher werden mit aktiviertem ASLR ausgeführt.

Beachten Sie, dass der Wrapper normalerweise auf alten Windows-Versionen, die ASLR nicht unterstützen, ausgeführt wird.

Wie überprüft werden kann, ob der Wrapper mit aktiviertem DEP/ASLR ausgeführt wird?

Von der Registerkarte Details des Windows Task Managers ist es möglich, eine Spalte hinzuzufügen, um dargestellt zu bekommen, ob DEP aktiviert ist oder nicht: Klicken Sie mit rechter Maustaste auf die Kopfzeile der Spalte, wählen Sie "Spalten auswählen" und kreuzen Sie das Kontrollkästchen "Data Execution Prevention" an.

Die Spalte zeigt "Aktiviert" für alle Prozesse an, die mit aktivierten DEP ausgeführt werden, und "Deaktiviert", wenn Prozesse ohne diesen Schutz laufen.

Leider gibt es solch eine Spalte nicht im Task-Manager, um sehen zu können, ob ASLR aktiviert ist oder nicht.

Eine bessere Art zu prüfen, ob DEP und ASLR aktiviert sind, ist es, das von Microsoft angebotene Prozess-Explorer-Tool zu nutzen. Es kann von folgender Internetseite heruntergeladen werden:

https://technet.microsoft.com/en-us/sysinternals/processexplorer.aspx

Nach dem Herunterladen extrahieren Sie einfach die Dateien in einen Ordner und führen procexp.exe oder procexp64.exe aus, je nachdem, ob Ihr Betriebssystem 32-Bit oder 64-Bit ist.

Es erscheint ein Fenster, welches die Prozesse hierarchisch gegliedert anzeigt. Wenn der Wrapper läuft, können wir den Wrapper-Prozess und seinen verwalteten Java-Kindprozess sehen.

Um darzustellen, ob DEP und ASLR für jeden Prozess aktiviert sind, klicken Sie bitte mit der rechten Maustaste auf die Spaltentitel und wählen Sie "Spalten auswählen...". Klicken Sie auf die Registerkarte "Bild verarbeiten" und kreuzen Sie die Kontrollkästchen "DEP-Status" und "ASLR-aktiviert" an. Schließlich klicken Sie auf "OK", um diese 2 Spalten hinzuzufügen.

Unten sind die Ergebnisse beim Ausführen der Wrapper-Version 3.5.32 und 3.5.33 (32-Bit und 64-Bit) unter Windows (Vista und neuer):

Wrapper 3.5.32 - 32-Bit: Kein DEP, kein ASLR für den Wrapper-Prozess, aber Java aktiviert beide Features.


Wrapper 3.5.32 - 64-Bit: DEP ist automatisch für den Wrapper 64-Bit-Prozess aktiviert, aber ohne ASLR-Unterstützung.


Wrapper 3.5.33 - 32-Bit (und 64-Bit): Beide DEP und ASLR sind für den Wrapper-Prozess aktiviert.