Cybersecurity aus Sicht der Informatik

Häufig wird Cybersecurity von Leuten definiert die sich als selbst als Hacker bezeichnen und die mit C-Compiler und Buffer-Overflows bestens vertrautet sind. Sie behaupten, dass Computersicherheit und Programmieren nicht voneinander zu trennen wäre und das man zunächst einmal fit sein müsste in Linux um überhaupt mitreden zu können in Sachen Hacking. Dazu sei gesagt, dass es neben dem unkoordinierten Hacking was sich die Leute selbst via learning und doing beigebracht haben, noch einen wissenschaftlichen Zugang zu der Thematik gibt der im folgenden erläutert wird.

Als Basis wird dazu kein Wissen in Betriebssystemen oder in Sachen Cracking benötigt, sondern als theoretische Grundlage dient die Spieltheorie. Genauer gesagt können Spiele in GDL (Game Description Language) und PDDL (Planning Domain Definition Language) beschrieben werden und dann mit Hilfe von Solvern gelöst werden. Dieser Ansatz ist deshalb so interessant weil er das Problem in kleinere Unterprobleme zergliedert die einzeln gelöst werden können. Zunächst einmal lautet die Frage: wie ist die GDL-Beschreibung eines Problems? Hierzu benötigt man einen Parser, also ein Computerprogramm was ein Spiel wie Pacman oder eine Software wie den Linux-Kernel in eine absgrakte GDL Beschreibung überführt. Diese wird dann in das PDDL Format konvertiert und das kann dann wiederum mit einem PDDL Solver wie metric-FF gelöst werden.

Es handelt sich dabei um Künstliche Intelligenz in Reinstform, mit dem klassichen Hacking und einer Hands-on-Mentalität hat das nicht mehr viel zu tun, stattdessen geht es darum, eine Human-Level-AI zu entwickeln welche in der Lage ist, in jedes System einzudringen und es zu dominieren. So eine Art von Skynet, was sowohl Pacman spielen kann als auch den Linux-Kernel infiltriert.

Advertisements

Cybersecurity mit PDDL

Wer geglaubt hat, dass Hackertools wie Backtrack Linux und Metasploit bereits das Ende der Fahnenstange in Sachen IT-Sicherheit wären, der hat die letzten Jahre geschlafen. Ok, zugegeben, das dürfte den meisten so gehen, dass sie keine Ahnung haben wie man Computer schützt oder wie ein Hacker denkt, dennoch ist es es an der Zeit einige Worte über PDDL zu verlieren. Das war ursprünglich einmal eine Programmiersprache um Informatik-Studenten mit dem Thema AI Planning auf theoretischer Ebene vertraut zu machen. Inzwischen wird PDDL jedoch zunehmend im Bereich Cybersecurity eingesetzt. Die Grundidee ist, nicht nur mit Metasploit automatisch nach Schwachstellen zu suchen und dann die gehashte Passwortdatei zu entschlüsseln, sondern PDDL geht soweit, den kompletten Angriffsplan zu automatisieren. Im Grunde ist PDDL gar kein Hackertool, sondern ein Programm mit dem man Gantt-Charts automatisch erstellen kann. Man kann es aber auch dafür nutzen, um ein Projekt mit dem Titel „Hacken“ durchzuführen, und zwar vollautomatisch.

Das Prinzip ist nicht komplett neu. Im Computerspiel Killzone 2 wurde im Jahr 2009 bereits ein HTN-Planner verwendet, also eine Künstliche Intelligenz welche die Aktionen eines NPC plant. Das gleiche wird im Bereich Computersicherheit genutzt. Dazu wird als Domäne kein Ego-Shooter modelliert, sondern ein virtueller angreifbarer Computer. In der PDDL Datei wird eine Game-Engine erstellt die folgende Tasks ausführen kann:
– Datei kopieren
– einloggen
– ausloggen
– Passwort eingeben
– Reset

Wenn man eine von diesen Funktionen aufruft, verändert die Game-Engine ihren internen Status. Ein wenig ist das vergleichbar mit einem Emulator wie qemu, nur mit dem Unterschied dass ein sehr minimalistisches System verwendet wird. Und jetzt gibt man dem PDDL Solver ein Goal vor wie z.B. „Hacke in den PC rein“ und der Solver gibt dann die nötigen Tasks zurück. Ob das klappt hängt damit zusammen ob die PDDL Datei hinreichend gut die Wirklichkeit abbildet.

Wie kann man sich das vorstellen? Im Grunde ist Attack-Planning mittels PDDL nichts anderes als was in Shakey oder in der DeepSpace 1 Raumsonde gemacht wurde. Zuerst wird eine Knowledge-Base erstellt (die Domäne). Vorzugsweise in der PDDL Syntax. Darin wird definiert wie die Welt funktioniert. Beispielsweise kann man einen Drucker beschreiben und in der PDDL Datei definieren, dass wenn kein Papier im Schacht ist, nichts gedruckt werden kann. Das ganze ist eine Art von Game-Engine, also ein Computerspiel zur Simulation eines tatsächlichen Vorgangs (qualitative Simulation). Und jetzt kann man an dieses Modell Befehle senden. Damit kann man testen ob es richtig programmiert wurde (Model checking). Aber man kann noch mehr tun. In der DeepSpace-1 Raumsonde wurde beispielsweise simuliert was passiert wenn ein Triebwerk ausfällt. Der Planer hat daraufhin einen Aktionsplan erstellt wie man das Problem lösen kann. Und zwar dadurch, dass als Ziel vorgegeben wurde: Raumsonde soll weiterfliegen, aber der Ist-Zustand ist „ein defektes Triebwerk“. Über einen PDDL Planner wurde daraufhin durchprobiert was in diesem Fall zu tun ist. Das ganze kann man auch im Bereich Cybersecurity nutzen. Man erhält auf diese Weise eine Künstliche Intelligenz welche sich in fremde Rechner reinhackt.

Es ist nicht einfach nur ein Script, sondern es ist ein Script-Generator. Im Grunde ist es der Alptraum für jeden Systemadminstrator, weil jetzt die Script-Kiddies nicht einfach nur Metasploit nehmen um damit Sachen zu machen, sondern jetzt machen sie gar nichts mehr. Streng genommen handelt es sich bei PDDL nicht um ein Computerprogramm, sondern um sich-selbst modifzierenden Code. Es ist nicht vorgegeben was passiert, sondern es wird nur noch das Ziel definiert und der Planner ermittelt dafür dann die richtigen Schritte.

Experten in Sachen Computersecurity werden PDDL bereits nutzen. Auf der letzten Darpa Cybergrandchallange wurde dieses Verfahren verwendet. Warum es bisher nicht im Mainstream angekommen ist, hat etwas damit zu tun, dass es an leicht bedienbaren Tools mangelt. Es gibt zwar einige PDDL Beispiele, aber diese Sprache ist alles andere als leicht verständlich. Im Grunde wäre es nötig eine grafische Visualisierung zu ermöglichen, um die Erstellung von domänen Files zu vereinfachen. Wie sowas im Bereich Computersecurity aussehen könnte ist unklar. Man kann ja wohl schlecht Angriffslücken als Avatare in einer Tron-Simulation abbilden …

BEISPIELE
Schaut man sich die PDDL Dateien einmal an die bei der Cybersecuritychallange verwendet wurden http://icaps-conference.org/ipc2008/deterministic/Domains.html so stellt man fest, dass die Domänen-Dateien erstaunlich groß sind. Wo die üblichen Blocksworld-Beispiele selten mehr als 2 kb benötigen, ist die PDDL Datei aus der Cybersecurity Challange über 30 MB groß. Vermutlich wurde sie mit Hilfe eines Generators erzeugt. Und noch etwas ist interessant, in der PDDL Datei sind Aufrufe zu weiteren Programmen enthalten.

Leider fehlt jede weitere Dokumentation noch eine Anleitung wie damit zu verfahren ist. Aber festzuhalten bleibt, das das ganze technisch gerade erforscht wird und sich Script-Kiddies mit sowas beschäftigen. Da Hacking ohnehin ein Thema ist, was kontrovers beurteilt wird ist wohl die Frage unsinnig ob PDDL basierende Angriffsvektoren der moralisch richtige Weg sind, sondern wie der Name „Challange“ bereits suggeriert geht es allein um eine möglichst hohe Punktzahl.

HACKERGAME
Relativ gut bekannt in der Hacker-Fachliteratur ist die Verwendung von Attack-Trees. Dieses Konzept wurde aus der Spieleprogrammierung übernommen und ist eine grafische Darstellung wie man vorgehen muss um einen Computer zu knacken. Attack-Trees werden dabei von links nach rechts gelesen und können eine Hierarchie ausbilden. Beispiel:
1. Keylogger installieren
2. Passwort suchen
3. mit Passwort Rechner knacken

Natürlich ist das kein richtiger Attack-Tree sondern soll nur das Prinzip verdeutlichen. Echte Attack-Trees sind weitaus komplexer aufgebaut und beinhalten detailierte Informationen, also wie genau man eine Passwortdatei entschlüsselt usw.

Lange Zeit galten Attack-Trees in der Hacker-Szene als Nonplus-Ultra weil sie ähnlich wie Metasploit auch Hacken nicht als besondere Fähigkeit oder als genial bezeichnen sondern einen formalen Zugang ermöglichen. Die konsequente Weiterentwicklung von Attack-Trees sind die bereits erwähnten PDDL Modelle. Obwohl es relativ gute Paper dazu gibt, bleibt das Konzept sehr trocken. Am einfachsten lässt sich das Prinzip am Spiel „Hackergame“ erläutern. Es handelt sich dabei laut Youtube um eine Art von Textadventure wo der Spieler Kommandos eingibt und in einen simulierten Computer eindringen muss. Das ganze mit einem Intro versehen was an Matrix erinnert. Im Hintergrund wird keineswegs qemu verwendet, sondern das Spiel bringt einen eigenen parser mit, also ein selbst erfundenes Betriebssystem was stark vereinfacht. Die Game-Engine zu diesem Spiel kann man sich als PDDL Datei vorstellen. In der Game-Engine ist festgelegt, was passiert wenn der Spieler einen bestimmten Befehl eingibt.

Das Spiel Hackergame funktioniert so, dass der Spieler manuell die richtigen Befehle eingeben muss, so ähnlich wie bei einem Textadventure auch, muss er die angezeigten Informationen auswerten und darauf reagieren. Man kann dieses Spiel aber auch wie jedes andere Computerspiel, vollautomatisch spielen. Also über Brute-Force Methoden spielen. Also einfach alle Befehle per Zufalls durchtesten bis man irgendwann den maximalen Highscoore erhält. Im Grunde ist das identisch mit dem was in der Cybersecurity-Challange mit PDDL Modellen realisiert wird. Zuerst bastelt man sich ein Hackerspiel und dann wird dieses Spiel von einem Planner automatisch gelöst.

Was ist der vorteil gegenüber klassischen Attack-Trees? Der Vorteil ist, dass man in so einer Game-Engine weitaus komplexere Systeme modellieren kann. Also Systeme die näher dran sind an der Wirklichkeit. Und vor allem ist es möglich, diese Modelle autoamatisiert zu verarbeiten. Also zu testen, ob sie der Wirklichkeit entsprechen, und sie in der UML Notation ausgeben.

Um sich klarzumachen was das bedeutet hier ein kleiner Rückblick wie normalerweise Modellierung in der Computersicherheit funktioniert. Zunächst einmal gibt es den physikalischen Computer der ans Internet angeschlossen ist. Der ist über einen Stromanschluss versehen und wird warm, wenn er belastet wird. Ganz zu Anfang der Hacker-Historie wurde in solche physikalische Systeme reingehackt. Später wurden dann Emulatoren wie qemu entwickelt. Dadurch war es nicht mehr nötig, einen physikalischen Computer anzugreifen, sondern stattdessen hat man in der Qemu-Umgebung das Zielsystem nachgebildet und dort dann versucht Exploits zu finden. Aus dieser Vorgehensweise haben sich Tools wie Metasploit entwickelt, was im Grunde ein werkzeug ist um qemu-Maschinen zu pentesten. Selbstverständlich ist es möglich, die dabei gewonennen Erkenntnisse wiederum auf physikalischen Maschinen einzusetzen, aber das ist nicht länger das primäre Ziel. Eine Umdrehung weiter gehen dann PDDL basierende Emulatoren. Dort wird oberhalb von Qemu noch eine weitere Abstraktionsstufe errichtet. Wiederum wird ein Computer simuliert, doch diesmal einer der auf das Hacken reduziert ist. Die Frage die sich daraus ergibt lautet, ob die dabei gewonnen Erkenntnisse sich in der Qemu-Maschine ausführen lassen. Im Kern hängt es davon ab wie genau die Game-Engine funktioniert.