• Keine Ergebnisse gefunden

„Böse“ steht für einen Versuch illegalerweise in das System einzudringen und „gute“

für einen legalen Versuch in das System zu gelangen.

Der Datensatz für den KDD Cup stammt dabei von dem 1998 DARPA Intrusion De-tection Evaluation Programm, welches von den MIT Lincoln Labs durchgeführt wurde.

Dafür wurden verschiedene Möglichkeiten für einen Einbruch in ein militärisches Netz-werk simuliert.

Dabei können die Features lose in die drei KategorienBasic Features, Content Fea-tures und Traffic Features eingeordnet werden. Der Datensatz umfasst dabei aus 46 Features, die sowohl kontinuierliche als auch diskrete Typen enthalten.

Weiter gibt es dort 24 verschiedene Klassen.

3.3 Architektur

Die Architektur von Programmen hat sich in den letzten Jahren stark verändert. Heu-te sHeu-teht vor allem die Plattformunabhängigkeit und die Einfachheit der Installation im Vordergrund. Es spielt eine besonders große Rolle ob und wie der Nutzer die In-stallation überhaupt bewerkstelligen muss. Das heißt, ob der Nutzer das Programm installieren muss oder ob er es on-the-fly benutzen kann. Hier stehen verschiedene Ar-chitekturen zur Auswahl, darunter Client-Server Programme.

In dieser Arbeit steht vor allem auch die Nutzerfreundlichkeit im Vordergrund, so-dass mit wenig Mühe und wenig Hardware das Programm benutzbar ist und es sich nicht mit den Hintergrund-Prozessen beschäftigt werden muss. Das bedeutet, dass auf eine Server-Client Architektur mit Datenbank und Web Applikation aufgebaut wird.

Dabei soll der Client dem Nutzer als Web Applikation behilflich sein und mit dem Server kommunizieren. Der Server soll wiederum die Verwaltung der Datenbank über-nehmen und bei der Kommunikation mit dem Client alle wichtigen Informationen aus der Datenbank laden, weiterverarbeiten und verarbeitet zurückgeben.

Der Nutzer muss hierbei nur einen aktuellen Browser seiner Wahl öffnen, um das Pro-gramm zu nutzen.

3.3.1 Datenbank

Für die Hintergrund Datenbank wird MongoDB1verwendet.

Dabei wird vor allem die NoSQL-Struktur von MongoDB ausgenutzt, um eine Spei-cheroptimierung für den Malware Drebin[Arp+14] Datensatz zu gewährleisten. Da dieser einen Binärfeature-Vektor von über einer halben Millionen Einträgen beinhaltet und dort viele leere, beziehungsweise null Einträge besitzt. Diese zu speichern würde nur mehr Speicheraufwand bedeuten und geringe Optimierung der Klassifikationszeit.

Deshalb wird bei diesem Datensatz nur für die jeweiligen Malware Samples die Features als Zahl gespeichert, die auch wirklich von dieser benutzt wird. Das heißt jedes Feature wird zuerst zu einer Nummer umgewandelt und danach in einer Liste gespeichert um später wieder zurück transformiert zu werden. Als nächster Schritt wird jedes Malware Sample eingelesen und deren Features mittels der vorherigen Liste in Nummern um-gewandelt und diese Nummern in einer neuen Liste sortiert gespeichert. Dies wird als Feature Vektor des Malware Samples weiter benutzt. Diese Liste wird nun zu einem Dokument, in der die Malware Familie und der Hash-Wert der Datei bereits stehen, hinzugefügt. Hierbei wird die Struktur von MongoDB ausgenutzt um die Funktion Listen innerhalb von Dokumenten zu speichern. Dieses Dokument wird dann in einer sogenannten Kollektion von MongoDB gespeichert.

3.3.2 Server

Der Server wurde in der Programmiersprache Python geschrieben, da diese gute Imple-mentationen von gängigen Machine Learning Algorithmen und Server Frameworks als Module zu Verfügung stellt. Ferner bietet sie eine gute Implementation mit MongoDB und kann Dank Dokumentstrukturen, die MongoDBs Dokumenten sehr stark ähneln, diese nativ unterstützen.

Zum Aufbau der Server Struktur wird das Framework Flask2verwendet, welches un-ter anderem ermöglicht eine RESTful API3aufzusetzen und zu benutzen. Der Vorteil besteht darin, dass später in der Web Applikation verschiedenste Anfragen asynchron abgefragt werden können, um eine Schnittstelle zu bieten um die Web Applikation auf einfache Weise auf die verarbeiteten Informationen zugreifen zu können.

1MongoDB ist eine dokumentorientierte NoSQL-Datenbank mit Verfügbarkeit auf allen gängigen Betriebssystemen.https://www.mongodb.org/

3.3 Architektur 17

Der Flask Server stellt ferner die Umgebung für die weiteren Module zu Verfügung.

Denn unter anderem soll das Programm dem Nutzer die Möglichkeit geben, bei Ab-frage und Benutzung die Verarbeitung der Daten zu bestimmen oder Einstellung zu verändern.

Für verschiedene Machine Learning Algorithmen wird das Scikit-learn Modul4benutzt.

Dieses bietet eine breite Auswahl an den gängisten Machine Learning Algorithmen.

Davon wurden folgende Klassifikatoren im Programm implementiert:

1. Decision Tree 2. Naive Bayes

3. SVM ( Support Vector Machine ) 4. 5-Nearest Neighbor

5. Logical Regression 6. Random Forest

7. AdaBoost ( Adaptive Boosting )

Diese wurden ausgewählt, da sie dem Nutzer eine breites Angebot an unterschiedli-chen Klassifikatoren bieten, sowohl mit erklärbaren Algorithmen (1-5) als auch Black-Box Klassifikatoren (6-7). Dies soll dem Nutzer ermöglichen verschiedene Machine Learning Algorithmen gegeneinander zu testen und dabei nicht nur die Genauigkeit sondern auch die Performance zu vergleichen.

Ferner, wird jedoch noch XGBoost5angeboten um eine weitere Form der Machine Learning Algorithmen zu unterstützen und als Auswahlmöglichkeit für den Nutzer zu Verfügung zu stellen. Hierbei, handelt es sich um eine Gradient Boosting Methode und somit um einen weiteren Black-Box Klassifikator.

Die Klassifikation wird weiterhin über die Auswahl der Malware Samples generiert und dabei wird ein Stratified Sampling mit 80% Trainingsdaten und 20% Testdaten verwendet. Dies wird genutzt um zu gewährleisten, dass die Bedingungen für jeden Klassifikator bei selben Malware Sample Einstellung zum Klassifizieren gleich ist.

3Flask ist ein Web Application Framework für Python, welches die rudimentären Eigenschaften von Servern aufweist. http://flask.pocoo.org/

3Representational State Transfer (REST) beschreibt ein Programmierparadigma, welches dazu dient bei Anfragen an den Server eine allgemeine Schnittstelle zu schaffen, damit verschiedenste Pro-gramme auf den gleichen Server zugreifen können.

4Scikit-learn ist ein Machine Learning Module für Python, welches unter anderem diverse Klassifi-kations Algorithmen bereitstellt. Hierbei, auch die bekanntesten wie Decision Tree und Random Forest. http://scikit-learn.org/stable/

5XGBoost[CG16] ist eine Implementationsmöglichkeit von Gradient Boosting Methoden. https:

//github.com/dmlc/xgboost

3.3.3 Web Applikation

Die Web Applikation stellt den visuellen und interaktiven Teil dar, womit der Nutzer arbeiten kann. Dabei ist diese über Javascript und eine dynamische Darstellung auf-gebaut.

Bei Seitenaufbau wird per AJAX6die nötigen Start-Einstellungen und Attribute ge-laden, mit einer ersten Klassifizierung. Diese erste Klassifizierung soll dem Nutzer einen ersten Anhaltspunkt geben und auch zeigen wie der Decision Tree Klassifikator abschneidet.

Die Web Applikation beruht dabei für die AJAX Funktionalität auf JQuery7und für die Visualisierungen auf PIXI Js8. Da JQuery eine gute Umgebung bietet um AJAX Abfragen in Javascript zu integrieren und noch weitere nützliche Funktionen bereitstellt, wie zum Beispiel die Manipulation des HTML-Aufbaus der Seite.

Für das Anzeigen der Features in der Web Applikation wird eine Javascript Baum-struktur verwendet. Diese BaumBaum-struktur heißt FancyTree9. Dabei wird vor allem die Strukturierung der in der Baumstruktur gespeicherten Daten genutzt um leichter da-mit zu arbeiten.

Durch PIXI Js ist es weiter möglich die volle Kapazität des Browser zu benutzen, da dieses WebGL anspricht und so auf die Hardwarebeschleunigung des Browsers zugreifen kann. Damit wird eine Steigerung der Geschwindigkeit ermöglicht.

WebGL bietet gegenüber herkömmlichen Scalable Vector Graphics (SVGs), die vor allem als Technik in den gängigen Visualisierungsbibliotheken verwendet werden, den Vorteil große Datenmengen interaktiv anzuzeigen und dabei keine Geschwindigkeit zu verlieren. SVGs im Gegensatz dazu verlieren bei großen Datenmengen die Geschwin-digkeit und reagieren deshalb langsamer als WebGL Anwendungen. Pixi JS wurde des-wegen ausgewählt, da die Bibliothek im Fall, dass der Browser kein WebGL unterstützt auf ein HTML Canvas Objekt zurückgreift. Jeder neuere Browser unterstützt HTML Canvas Objekte. Diese bieten jedoch nicht die selbe Geschwindigkeit wie WebGL

Ob-6Asynchronous JavaScript And XML (AJAX) bezeichnet ein Design um asynchrone Datenübertra-gung zwischen einem Browser und einem Server zu ermöglichen.

9JQuery ist eine Javascript-Bibliothek, welche es ermöglicht die Struktur einer Seite dynamisch zu ändern.https://jquery.com/

9FancyTree ist eine Javascript Bibliothek, die eine Baumstruktur verfügbar macht mit Unterstützung von Maus und Tastatur.https://github.com/mar10/fancytree

9PIXI JS ist eine Javascript-Bibliothek, welche es ermöglicht die WebGL Funktionen eines Browsers aufzurufen und schnell zu rendern.http://www.pixijs.com/

3.3 Architektur 19 jekte und sind deutlich langsamer.

Der verwendete Algorithmus für die Treemaps ist die Variante der squarified Tree-maps[BHW99] und ist in Javascript10implementiert worden.

Die Farben die für die Treemaps benötigt werden, stammen für den Malware Da-tensatz von Colorbrewer11und werden für den Intrusion Detection Datensatz aus den Farben von Colorbrewer12interpoliert um mehr Werte zu haben.

10Squarified Treemap Algorithmus in Javascript.https://github.com/nicopolyptic/treemap

12Colorbrewer ist ein Auswahlprogramm für Farben.http://colorbrewer2.org/