Zunächst - Was ist ein Exploit überhaupt?
Ein Exploit ist das (Aus-)Nutzen eines Systems, in einer Art und Weise die so nicht vorgesehen wurde.
Oft sind Exploits beispielweise in MMORPG's vorzufinden in denen dann Items oder Spielwährung duped (verdoppelt) werden indem man
Fehler in der Server & CLient Struktur ausnutzt. Dieses dupen ist von den Entwicklern der MMORPG's natürlich NICHT vorgesehen / gewollt - vorallem da dadurch
sehr Wertvolle Items duped werden können die oft mehrere Hundert Euro wert sind und dies dann natürlich die Wirtschaft (AH Preise z.b) des Spieles
zerstört. Die Personen die nach Exploits in MMORPG's suchen, sind meistens auf das Geld aus das damit einherkommt.
Findet man ein Exploit für das dupen (quasi der Heilige Gral des Exploitings in MMORPGS ), oder ein Exploit zum Teleportieren oder ähnliches..
kann das sehr viel Geld einbringen (Stichwort Hacks & Gold verkaufen). Ich möchte nun einige Beispiele von Exploits zeigen damit
man besser versteht worum es bei einem Exploit geht.
Beispiel für ein harmlosen Exploit:
Es gab in World of Warcraft einige Zeit ein Exploit, bei dem man die Fähigkeiten eines Hexenmeisters ausnutzte um sehr einfach an
Gold zu bekommen. In einer Spielwelt die normal erst ab einem bestimmten Charakterlevel freigeschalten wird, wurden von den Entwicklern
versteckte Schätze versteckt. Diese waren meistens 300-600g Wert. Der Trick bestand nun darin, das der Hexenmeister andere Spieler herbeibeschwören konnte.
Alles was man dafür benötigte waren 3 Spieler. Was machte man nun? Ganz einfach - man erstellte ein Level 1 Charakter, beschwörte ihn mit dem Hexenmeister
DIREKT zum Schatz, dieser Level 1 Charakter nahm den Schatz an sich, verkaufte ihn bei einem NPC (ein spezielles Mount besaß einen Verkäufer), gab das Gold
an den Hexenmeister. Daraufhin löschte man den Level 1 Charakter und begann von neuem mit einem frischen Level 1 Charakter.
Diese Abfolge wurde nun mit einem Script automatisiert und brachte sehr viel Gold ein. Bots wie Honorbuddy hatten spezielle Addons / Plugins
die das dann sogar komplett eigenständig erledigten. Dieser Exploit wurde solange Tod-Exploited bis Blizzard irgendwann Wind davon bekam.
Daraufhin wurde der Exploit gefixed, und die Spieler die diesen Exploit ausgenutzt hatten bekamen einen Perm-Bann.
Beispiel für einen gravierenden Exploit (Dupe):
In World of Warcraft gibt es in jeder größeren Hauptstadt ein Auktionshaus in dem Spieler ihre Items verkaufen & kaufen können.
In Sturmwind (Allianz Hauptstadt) gibt es ein Auktionshaus das direkt bei einem Briefkasten steht. Deshalb
war es möglich über Makro Scripts den Briefkasten und das Auktionshaus GLEICHZEITIG zu öffnen.
Wieso? Nun - ob eine Aktion ausführbar ist oder nicht, wird nur anhand eines Radius vom Charakter zum Gameobject entschieden.
Stehen Briefkasten und Auktionshaus nahe beieinander, ist man für beide Objekte in Reichweite und kann sie nutzen.
Die Fenster des Briefkasten & Auktionshauses sind lediglich Clientside GUI's - die sind nicht notwendig um mit
den 2 Dingen zu interagieren. Kurzgesagt - man kann mit Dingen interagieren, ohne die GUI zu nutzen.. man muss
nur nah genug an dem jeweiligen Gameobjekt dran stehen.
Findige Spieler (mich mitgezählt) haben nun sich dann deshalb etwas ausgedacht.
Und zwar hatten wir folgenden Gedankengang:
"Was passiert, wenn ich ein Item in das Auktionshaus einstelle, aber gleichzeitig auch in einem Brief an jemand anderen sende?"
Wir haben es dann geschafft das wir gleichzeitig das Item per Brief schicken konnten wöhrend wir es ebenfalls als Auktion einstellen.
Der Server war dabei "zu langsam" beim verarbeiten der Anfragen. Die Infos des Items (Name, Itemid usw) wurden einfach ins Auktionshaus
und den Brief gepackt.. erst danach wurde das Item aus dem Rucksack gelöscht.
Kurzgesagt - bei jedem einstellen eines Items oder dem versenden eines Items per Brief, kopierte des Server selbstständig das Item.
Erst nach diesem Kopiervorgang der Iteminformationen hat der Server dann das Reale Item aus dem Rucksack gelöscht.
Wenn man also ein Item ins Auktionshaus packte, aber gleichzeitig auch als Brief verschickt, gabs das Item plötzlich 2 mal!
Einmal im Auktionshaus und einmal im Brief den man verschickt hat. Der Server war einfach zu langsam und versuchte dann
halt 2 mal das Item aus dem Rucksack zu löschen.. da es aber nur einmal vorhanden war, schlug dies fehl.
Das Items gabs dann aber trotztdem immernoch 2 mal !
Der Trick der das ganze erst möglich machte, war das wir Makros nutzten um das ganze gleichzeitig erledigen zu können.
Ohne Makros wäre dies nicht gegangen da Clientseitig einige Sperren eingebaut sind die ein Items im Rucksack
ausgrauen sobald man es in einen Brief oder Auktionsfenster legt. Wenn ein Item ausgegraut ist, lässt es sich
nirgends anderswo mehr reinlegen innerhalb einer GUI. Durch Makros konnte man das Item
aber trotz dieser Sperre dann noch in einen weiteren Brief / Auktionsfenster legen (war halt nur Clientside die Sperre ).
Und natürlich musste man dann auch gleichteitig per Makro den Brief abschicken & die Auktion starten damit
der Server nicht hinterherkam. Durch diesen Dupe konnte man für einige Tage sehr (SEHR!!!!!) viel Gold erwirtschaften.
Mit diesem Dupe wurden Mounts geduped die 400-900€ an Wert hatten. Einige Personen haben mit diesem Exploit enorm viel Gold erwirtschaftet.
Unter anderem sind durch diesen Dupe auch soviele Mounts zu Spottpreisen im Auktionshaus aufgetaucht (sorry ?)
Dieser Dupe hatte die Wirtschaft in WoW ziemlich zugrunde gerichtet.. bis die Bannwave kam und alle Spieler die
diesen Dupe Exploit nutzten Lebenslang gebannt worden sind.. inklusive aller Accounts die unter der gleichen IP online waren.
Zusätzlich löschte BLizzard dann das ganze Gold und setzte sogar einige Auktionen zurück.
Das Geld was damit verdient wurde, konnte Blizzard aber logischerweise NICHT mehr zurückholen.
Beispiel für einen lustigen Exploit (Instant Respawn Mob):
Einige findige Spieler die gerne Gamemechaniken ausnutzten, fanden heraus das man in World of Warcraft während man in einer
Instanz ist außerhalb der Spielwelt geraten konnte. In jeder Instanz gibt es Portale, die beim betreten einen aus der Instanz
teleportieren. In einer besonderen Ini konnte man nun dieses Portal aber umgehen, und landete somit außerhalb der vorgesehen
Spielwelt. Außerhalb der eigendlichen Instanz gab es ein riesiges Areal in dem eine "Kaputte Spielwelt" war.
Dort gab es verbuggte Spieltexturen, einige Game Objekte die sehr interessant aussahen und co.
Das war ziemlich Nice zum "Exploren" wie wir das nennen. Beim Exploren geht es kurzgesagt darum, versteckte
oder geheime Orte innerhalb der Spielwelt zu finden die normale Spieler niemals zu Gesicht bekommen, aber trotztdem
existieren. Unteranderem gab es in WoW eine versteckte Insel zu der nur Gamemaster kommen (sollten ).
Dort gabs dann Händler die Gamemaster Kleidung verkauften usw. Anyway.. zurück zum Exploit.
Das ausbrechen aus der vorgesehenen Spielwelt einer Instanz war ansich nicht wirklich spektakulär.
Aber wir Spieler haben natürlich erforscht was es außerhalb zu endecken gab.. und wir.. haben
einen weiteren Exploit gefunden & genutzt um an ein WEITEREN geheimen Ort zu kommen.
Mitten im Nichts (also wirklich im Nichts. dort gabs keinerlei Kollisionabfrage oder Textur)
gab es einige cm große Plattform auf der ein Monster stand. Dieses Monster war nicht stark, droppte
aber einige Wertvolle Stoffe, Gold und einige andere Items. Dieser Mob respawnte instant sobald er gestorben
war. Das hieß - kein warten auf einen Respawn. Bot angeschmissen.. Mob in Endlosschleife killen & looten lassen..
Profit!
Die Entwickler haben da wohl heimlich nen Mob versteckt und gingen davon aus das ihn niemand findet^^
Video des Exploits zur Demonstration (ist aber ein anderer Mob)..
https://www.youtube.com/watch?v=nHKCdjxt1a4
So.. das waren jetzt einige Exploits in MMORPGS.
Hier in diesem Abschnitt hätte ich nun noch gerne Reallife Exploits aufgezählt..
da ich aber 99% der Exploits die mir dazu bekannt sind noch in Gebrauch habe..
würde ich mir ins eigene Fleisch schneiden wenn ich diese nun hier aufzählen würde.
Die Firmen würden die Exploits fixen und mich daraufhin fisten. Daher lasse ich dies !
Bei Reallife Exploits geht es jedoch darum, Exploits in Systemen allgemein zu finden.
Das können Serverstrukturen, bestimmte Abläufe in Firmen / Systemen / Geräten oder anderes sein.
Das beste Beispiel was ich euch dazu nennen kann ist der Legendäre "Lidl Hack".
Dabei konnte man in bestimmten Kassensystemen einen Crash erzeugen indem man Produkte die einen
bestimmten Preis hatten einkaufte. Die Preise der Produkte zusammen gezählt ergaben dann im
Kassensystemen einen Crash.. woraufhin das Kassensystem dann neu gestartet werden musste.
Dies konnte oft aber die Dame an der Kasse nicht selbst, sondern musste jemanden anrufen der dann
in den Laden kommen musste (lange Wartezeit für Kunden).
Bei einem Reallife Exploit geht es kurzesagt einfach nur darum, die Systeme in der Realen Welt (Reallife) zu
exploiten. Dies kann nun zum Spaß geschehen, oder für fetten Profit (meine Sparte). Reallife Exploits werdet ihr meistens
selbst finden müssen da niemand der einen Reallife Exploit selbst findet euch diesen erzählen wird. Würde er dies tun,
würde er sich wie oben erwähnt selbst schädigen.
Wie findet man Exploits?
Für das finden von Exploits benötigt ihr eine gewisse Denkweise & einige Grundvorraussetzungen.
Das wichtigste ist aber.. Ihr müsst euch gut in Abläufe & Systeme reindenken können!
Wenn ihr beispielweise in einem Spiel eine Spielfunktion vorfindet, müsst ihr euch Gedanklich in diese
Funktion reindenken können. Ihr müsst dann Ideen dazu haben "Wie ist diese Funktion aufgebaut? Wie wurde sie programmiert?"
Dies setzt vorraus das ihr natürlich sehr gut Programmieren könnt um zu wissen wie Spielfunktionen aufgebaut werden.
Beispiel: Ihr seht in einem Spiel eine Funktion mit der ihr ein Item an einen anderen Spieler senden könnt.
Nun müsst ihr Gedanklich nachvollziehen können, wie dieses absenden funktioniert.
Beispielweise könnte der Server das Item euch aus dem Rucksack löschen und dann eine Kopie des
eigendlichen Items an den anderen Spieler senden. Sobald der Spieler an den der Brief geschickt wird
nun den Brief öffnet, wird das Item in seinen Rucksack kopiert (Datenbank Befehl) und aus dem Brief gelöscht.
Da wir nun Gedanklich diese Funktion nachvollzogen haben, können wir uns überlegen wie wir diesen Ablauf nun
ausnutzen könnten um beispielweise den Spielclienten des Empfängers abstürzen zu lassen indem wir das Item
das wir verschicken beim abschicken einfach mal ganz fies manipulieren
Memory Hacking -> Itemid verändern -> Itemid gibt es nicht -> Crash beim Brief öffnen.
Dies ging in World of Warcraft übrigens wirklich und man konnte damit sogar Wertlose Items zu Wertvollen Mounts usw abändern.
Einfach indem man die Item-Id die man in den Brief legt manipuliert, und der Server denkt dann das wäre wirklich dieses
Item (Mounts z.b).
Wir könnten uns auch überlegen wie wir das Item dann dupen könnten (siehe Beispiel oben).
Kurzgesagt - wir müssen sehhhrrrr Kreativ sein und müssen auch Interesse daran haben wie Dinge im Hintergrund ablaufen.
Erst wenn wir uns in Dinge hineindenken können, können wir darauf basierend Exploits entwickeln.
Ohne Hintergrundwissen & Kreativität geht nunmal.. GARNIX
Bei Reallife Exploits sieht es ähnlich aus - ihr benötigt Hintergrundwissen & Kreativität um euch in Abläufe reindenken zu können.
Wenn ihr bei einem Shop etwas bestellt (nur als Beispiel), müsst ihr Gedanklich erfassen können was daraufhin geschieht.
Das wäre dann beispielweise das die Angestellten dann einen Ausdruck mit eurer Bestellung bekommen, sie daraufhin
ins Lager laufen, euer Produkt raussuchen, es verpacken und dann warten bis das Versandunternehmen kommt um euer
Paket abzuholen. Daraufhin wird das Versandunternehmen euch das Paket zuschicken indem sie es über verschiedene Verteil-Netzwerke
zu euch nach Hause schicken. Da wir nun Grundlegend Gedanklich nachverfolgen können wie der Ablauf ist, können wir hier
Ansätze finden wo wir dieses System / Ablauf nutzen können um ihn zu Exploiten.
So gut wie ALLE Exploits (auch Buffer Overflows & co) basieren auf Fehler in Abläufen und Personen die nicht erwarten
das ihre Nutzer bestimmte Dinge tun. Jeder Exploit tut Dinge, die so nicht vorgesehen waren als die entsprechenden
Abläufe / Funktionen geplant worden sind. Ein Naiver Spieleentwickler geht beispielweise nicht davon aus das jemand
versucht mit einem Briefkasten und dem Auktionshaus ein Item zu dupen.. soweit denken (bzw dachten) viele Entwickler garnicht.
Spiele & Systeme werden für den "DAU User" entwickelt.. nicht für Hacker & Exploiter.
Das hat zur Folge das oft Systeme voller Sicherheitslücken und Bugs sind.
Einige Exploits basieren aber auch einfach darauf, das Systeme einfach nur Doof Strukturiert wurden.
Beispielweise wurde das Netzwerk Protokoll von Routern so Strukturiert, das es möglich ist gefälschte Netzwerkpakete
abzuschicken die dann ermöglichen beliebige Geräte vom Router zu trennen (Deauth Attacke).
Das ist dann kein wirklicher "Fehler" wie z.b ein Bufferoverflow.. es ist einfach nur etwas an das bei der Planung nicht gedacht wurde.
In anderen Worten.. "Man tut Dinge die vom Entwickler so nicht vorgesehen waren".
Und genau so geht man vor, wenn man Exploits finden möchte.. man tut Dinge die so nicht erwartet werden.
Es gibt in einem Spiel eine Unsichtbare Barriere? Dann versucht man ob man oben drüber fliegen kann (geht in GW2)
oder ob man in dieser Barriere irgendwo ein Loch findet (Entwickler bauen die oft nicht wirklich sicher auf).. oder sich
durch-teleportieren kann (World of Warcraft). Es gibt eine Clientseitige Sperre die verhindert das man ein bestimmtes Item an jemanden schickt?
Dann versucht man ein anderes Item zu verschicken das erlaubt ist, und ändert on-the-fly die Itemid ab
bevor der Befehl dann an den Server geschickt wird (Oft sind solche Sperren nur Clientside, Serverseitig geht das ohne Probleme).
Ein Versandunternehmen möchte das ich 5€ für eine Briefmarke zahle um einen Brief zu verschicken?
Ich schreibe als Absender einfach den Empfänger drauf und als Empfänger eine nicht existierende Adresse..
Dadurch wird der Brief nicht zugestellt werden können und geht "zurück" zum "Absender" der eigendlich
der Empfänger ist.
Kurzgesagt.. man tut genau das, was von Systemen & Menschen nicht erwartet wird.
Das finden von Exploits vereint immer 2 Dinge: Hineindenken in Handlungsabläufe + Dinge tun die nicht gewollt & erwartet werden.
Bufferoverflows beispielweise funktionieren nur deshalb, weil der Entwickler nicht davon ausging das da ein Kranker Spa*ti
eine unendlich krass lange Zeichenkette einer Funktion übergibt. Wer erwartet auch das da jemand so Krass Behämmert ( ;D )
ist und sowas macht? Ein normaler User tut sowas ja normalerweise nicht. Aber da hat man halt nicht weit genug gedacht..
Es gibt immer jemand der Grenzen austesten und brechen möchte. Sowas sollte man beim entwickeln von Systemen als ERSTES beachten.
Die Kurzfassung dieses Threads?..
Exploits findet man dadurch, das man sich in Systeme & Abläufe hineindenkt und darauf aufbauend dann Dinge tut die nicht vorgesehen sind.
Es ist nicht einmal 100% Notwendig das man beim "hineindenken" dann den Realen Ablauf der im Hintergrund abläuft rausfindet - es reicht oft
einfach nur einen Groben Ablaufplan im Kopf zu haben um einen Ansatzpunkt zu finden wo man ansetzen könnte.
Wenn man dann durch dieses Gedankenkonstrukt einen Fehler oder einen Exploit findet, hat das Gedankenkonstrukt seinen Sinn erfüllt.
Beispielweise dachten wir "Exploit-Guys" damals in World of Warcraft das wir durch das verändern der Item ID eines Items
das wir per Brief versenden wollten ein Item verändern können. Unsere Idee war das der Gameclient die Itemid
beim reinlegen in den Brief einfach auf zwischenspeichert, und wenn man dann das Item abschickt.. wird
einfach nur die Item Id an den Server gesendet. Wir erhofften uns, das wir einfach die Itemid vor dem
abschicken dann innerhalb des Briefes manipulieren konnten um somit aus einem Stückchen Stoff z.b ein
Wertvolles Mount zu machen. Das war unser Gedanke. Es stellte sich dabei heraus das der Server & Client noch mehr Informationen
speichert als nur die Itemid. Dies Resultierte dann daraus das wir das Item beim abschicken zerstörten.
Durch das verändern der Gameid, und den noch vorhandenen Zusatzinformationen, kam der Client auf diesen empfangenen
Brief nicht mehr klar. Das hatte zur Folge das der gesamte Client abgestürzt ist & die gesamte GUI fehlerhaft war.
Aus einem anfänglichen Gedankenodell zu dem Ablauf einer Spielfunktion, resultierte deshalb ein weiterer Exploit.
Wir konnten nun mit dem neuen gewonnen Wissen einen Brief generieren, der den Gameclienten komplett abstürzen lies.
Und das sobald NUR der Briefkasten geöffnet wurde. Das hatte zur Folge das wir Spielern briefe schicken konnte,
die dann den Spielclient crashen liesen. Und deshalb konnten diese Spieler dann keine Briefe mehr empfangen
oder senden.. denn jedesmal wenn sie an einen Briefkasten gingen, crashte ihr Spielclient. Dadurch
konnten sie natürlich den Brief auch nicht löschen. Später konnten wir das ganze dann noch Modifizieren
um doch noch Items zu verändern die wir abschickten.. das wurde aber relativ schnell Serverseitig gefixed (+Bannwave).
Mit anderen Worten.. man muss Kreativ sein, Hintergrundinformationen haben (oder bekommen).. und natürlich Dinge tun
die nicht erwartet werden. Nur so endeckt man Exploits. Du siehst eine Beschränkung / Hinderniss? Versuch sie / es zu umgehen!
Ich entschuldige mich schon im Vorraus das dieser Thread eventuell ein bisschen SEHR Chaotisch ist und auch sehr lang.
Solltet ihr aber spezifische Fragen über das finden von exploits oder sonstiges haben.. stellt sie einfach.
Es ist sehr schwer mein gesamtes Wissen über Exploits in Komptakter Form in einen Thread zu pressen.. ich habs aber immerhin
versucht^^ Ich hoffe es ist erträglich :X
grüße