DEFCON-Konferenz 19. Hack MMORPG für Spaß und Gewinn. Teil 1Josh Phillips: Wie gesagt, alle Hacks sind recht einfach und ihre Verwendung erfordert manchmal keine Fähigkeiten, sondern nur einen kreativen Geschäftsansatz. Um die "Supermacht" zu nutzen, müssen Sie nicht der Gott des Reverse Engineering sein, aber es hilft definitiv Dingen wie dem Überlaufen von ganzen Zahlen oder unzureichender Füllung, und Sie können die gewünschten Werte leicht von 0 auf maximal ändern, um beispielsweise dem Feind tödlichen Schaden zuzufügen.

Mike Donnelly: Ja, alles hängt von der Fähigkeit ab, Hacks herzustellen, um beispielsweise Ihre Rüstung zu maximieren. Dies geschieht in World of Warcraft - wir hatten einen Mann, der in der Ork-Hauptstadt Orgrimmar saß, seinen Helm 100 Mal abnahm und seinen Helm aufsetzte und seine Kraft von Level 2 auf 32 pumpte.
Josh Phillips: Ist das wirklich passiert, oder hat er einfach den Speichereditor verwendet und einen Screenshot gemacht?
Mike Donnelly: Sie können recht haben!
Josh Phillips: Mein Lieblingsmodus ist der GM-Modus. Einige Unternehmen produzieren Spiele mit der offenen Möglichkeit des Reverse Engineering, so dass Sie als GM "Meister des Spiels" zu Menschen teleportieren, Dinge zerstören, Befehle erteilen und andere interessante Dinge tun können. Es gibt auch einen so interessanten Hack, wie den Diebstahl von Gegenständen von Nicht-Spieler-NPC-Charakteren. Das Spiel Age of Conan war eines der ersten, in dem es eine Sicherheitslücke gab, die GM töten konnte, und ich glaube nicht, dass die Entwickler damit zufrieden waren.
Mike Donnelly: Die Sicherheitslücke war die Möglichkeit, die ID der Schlüsselspieler zu fälschen?
Josh Phillips: Nun ja, wie Sie dem Server gesagt haben: "Ich bin ein Spielleiter und werde jetzt sterben."
Mike Donnelly: Manchmal vertraut dir ein Spieleserver, wenn du behauptest, ein anderer Spielcharakter zu sein, und sagst: "Ich bin so und so und ich verkaufe das!"
Josh Phillips: Ich habe bereits gesagt, dass Spieleentwickler naive Menschen sind. Hacking UI Hack ist weniger wertvoll. Dies ist nützlich, wenn Sie den Spielbereich sehr weit entfernt sehen oder wie ein Geist über die Karte des Spielbereichs stürzen möchten, während Sie an Ort und Stelle bleiben.

Mike Donnelly: Sie können immer noch so etwas wie eine „wilde“ Übersetzung der Sprache verwenden, wodurch beispielsweise Alliance-Spieler Ward-Spieler nicht mehr verstehen. Hier findet auf der Client-Seite ein Hacking statt, so dass während des Dialogs der an den Spieler gesendete Text des Gegners einfach nicht angezeigt wird. Das ist ziemlich einfach, aber ich bezweifle, dass irgendjemand für diese Art von Hack bezahlen wird.
Josh Phillips: Der nächste Abschnitt der Präsentation heißt: "Ich bin an deiner Basis, Leute, um dich zu töten!" Ich werde versuchen, Ihnen zu erklären, wie man einen Teleport-Hack schreibt. Dafür gibt es einen einfachen und einen schwierigen Weg.
Der einfache Weg besteht darin, die Position des Spielers im Speicher zu finden, neu zu schreiben und die Spielfunktion aufzurufen, die dafür verantwortlich ist, den Standort des Spielers zu ändern, um sich zum ausgewählten Standort zu teleportieren. Wenn Sie also wissen, wo sich der Code befindet, der für den Standort des Spielers verantwortlich ist, und Sie ihn mit einer Funktion direkt aufrufen können, kann es sich um einen Teleportationszauber handeln, der in der Lua-Sprache als „Zauberspruch“ bezeichnet wird, und Sie können ihm den gewünschten Wert geben Spieler-Teleportationsorte. Der Server kann jedoch nicht erkennen, ob Sie ein gewöhnlicher Krieger oder ein Magier sind, der Zaubersprüche verwenden kann. Diese Methode funktioniert in vielen Spielen.
Der schwierige Weg ist das Fälschen von Bewegungspaketen. Dies erfordert mathematische Berechnungen und Kenntnisse darüber, wie sie aktualisiert werden, Reverse Engineering von Bewegungspaketen und dergleichen. Möglicherweise müssen Sie den Zeitstempel anpassen, um sich zu teleportieren oder schneller zu laufen.

Der nächste Hack sind Angriffe auf die Spielelogik, indem die ursprüngliche ID im Paket durch die gewünschte ID ersetzt wird, die wir im Zusammenhang mit Age of Conan erwähnt haben. Dies sind Angriffe auf die Handelsfähigkeiten des Spielers, kritischer Schaden oder die vollständige Zerstörung des Fallschadens von Charakteren und Spielgegenständen sowie Angriffe von NPC-Händlern zum Zweck des Raubes. In Age of Conan war es möglich, jedem Charakter im Spiel kritischen Schaden zuzufügen und sogar GM zu töten, indem man ihm eine Million Fallschaden zuwies, wonach er einfach starb.
Mike Donnelly: Ja, das war lustig!
Josh Phillips: Sie könnten in diesem Spiel auch bösartigen Code verwenden, damit jemand eine Handelsbeziehung mit Ihnen eingeht, ohne es zu wissen. Sie könnten den NPC zwingen, Ihnen etwas zu verkaufen, und diese Technik wird immer noch von vielen Spielern außer mir verwendet, weil ich nicht gerne von Computercharakteren stehle. Und ich denke, keiner von euch sollte das tun.
Mike Donnelly: Es verursacht digitale Tränen ...
Josh Phillips: gefolgt von Dupes oder dem Klonen von Gegenständen. Viele Spiele weisen Schwachstellen auf, z. B. Probleme mit der serverseitigen Abgrenzung. Zum Beispiel haben Age of Conan, EverQuest, Final Fantasy XII und Ultima Online eine Zoneneinteilung. Wenn Sie also einen Zauberspruch auf eine Seite wirken und danach die Serverlinie überqueren, finden Sie den Feind, der Sie dort besiegt hat, und Sie können den Kampf fortsetzen. Der Hack durch die Wiederholungsmethode ist, dass Sie mit einer enormen Geschwindigkeit, zum Beispiel 1000 Mal pro Sekunde, Dinge vom Handelsfenster zu Ihrem Rucksack hin und her bewegen. Infolgedessen hört der Server auf, Dinge zu verfolgen, und sie füllen Ihren Rucksack vollständig aus. Jeder kennt das Spiel Diablo 1, bei dem man einfach ein Objekt auf den Boden wirft, darauf zuläuft, darüber schwebt und versucht, es aufzuheben. Es erscheint sofort in Ihrem Rucksack, während Sie auf dem Boden bleiben. Dies ist also eine ziemlich lustige Art zu hacken.
Das Hacken von Spielressourcen oder das Hacken von Assets, wie ich bereits erwähnte, ist die Arbeit nicht wert, es sei denn, jemand anderes hat für Sie Ihre Arbeit veröffentlicht, die Sie verleihen können. Diejenigen, die WoW gespielt haben, wissen, dass jemand auf magische Weise auf Ihrer Seite erscheinen kann - ich weiß nicht, wie es richtig heißt ...
Mike Donnelly: Schlachtfeld, Schlachtfeld.
Josh Phillips: Eigentlich habe ich nie World of Warcraft gespielt, für mich ist es zu langweilig. Die Spieler nutzen die Teleportation, um sofort vom Schlachtfeld zur feindlichen Basis zu gelangen und dort alle Gegner zu töten. Sie können auch die Spielkarte ändern und einen Tunnel erstellen, der unterirdisch zum gewünschten Bereich führt, sodass niemand ihn sehen kann. Vielleicht sehen Sie seinen winzigen Namen - ein Tag, das sich auf der Karte bewegt, aber Sie sehen den Spieler selbst nicht. Aber auf jeden Fall sind diese Hacking-Methoden die Mühe nicht wert.
Ich werde den Abschnitt „Hacking 420 Games“ mit einem Zitat von Machiavelli beginnen: „Ohne Gefahr wurde nie etwas Großes erreicht“, sodass Sie möglicherweise sogar verklagt werden.
Mike Donnelly: Ja, ja, ja.
Josh Phillips: Ich denke es ist wirklich so. Sie können den Bot im Spiel verwenden, jemand hat vor ein paar Jahren darüber gesprochen, und ich wollte ihn schlagen, weil es eher nicht interessant war. Dafür machen Sie so etwas wie das Lesen von Pixeln und automatisieren diesen Prozess. Hier gibt es kein Reverse Engineering. Zum Beispiel zeichnen Sie mit einem schnellen Tastendruck die „roten“ kritischen Punkte Ihres eigenen Schadens neu, damit sie nicht rot werden und Sie nicht sterben. Dies ist ein Hack von sehr begrenztem Ausmaß, und Ihre Aktionen bleiben unbemerkt, wenn Sie sehr schnell handeln.
Mike Donnelly: Genau so müssen Sie sehr schnell handeln. Weiß jemand, warum die Erkennung so schlecht funktioniert? Verstehe mich richtig, ich möchte die Situation nicht mit der Erkennung auf der Client-Seite verschönern, jeder scheint hier sehr weise zu sein ... Offensichtlich mögen Spielehersteller nicht alles, worüber wir sprechen, also versuchen sie, deine Software im Spiel zu finden, und wenn sie es finden, das Banyat Sie. Wenn Sie zum Spaß schummeln, können Sie maximal Ihr eigenes Spielkonto verlieren. Wenn Sie jedoch 100.000 Kunden haben, ist dies ein großes Problem, denn wenn Sie alle Ihre Kunden verbieten, brennen Sie einfach durch.

Daher ist es sehr wichtig, die Erkennung von Betrug zu verhindern. Wir werden später darüber sprechen, aber jetzt möchte ich darauf hinweisen, dass das Erkennen Ihrer Software auf der Clientseite sehr wichtig ist.
Josh Phillips: Hat sich einer von Ihnen gefragt, warum alle drei Monate eine Welle von Verboten auftritt? Tatsache ist, dass wenn Sie jede Woche 50.000 Konten sperren, Personen, die diese 50.000 Konten erneut verknüpfen, dies aufgrund der hohen Kosten nie wieder tun werden. Wenn Sie sie jedoch nicht mehr als einmal alle 3 oder 4 Monate verbieten, werden sie Konten neu kaufen, da dies rentabel ist. Unternehmen denken ungefähr so: Wir haben diese Leute gefunden, die beispielsweise den Glider-Bot verwenden, sie aber nicht verbieten werden, denn wenn wir sie zu oft verbieten, bringen sie uns nicht mehr als 50 US-Dollar Gewinn.
Mike Donnelly: Ja, das stimmt.
Josh Phillips: Eine andere Möglichkeit zum Hacken besteht darin, Code einzufügen, wenn Sie einen kleinen Assembler-Code einfügen, um einige kleine Dinge zu erstellen, z. B. das Fernaufrufen einer Art RPC-Prozedur. Die Oberfläche Ihres Angriffs kann sich vergrößern. Ich meine, Sie können wirklich so etwas wie eine DLL-Injektion in ein großes Stück Code verwenden, das in High-Level-C oder C ++ geschrieben ist und wirklich leicht zu erkennen ist. Sie schreiben einen DLL-Loader, der alle Ihre Importe und all das behebt.
Sie können die Ebene von Netzwerkpaketen angreifen und das Netzwerkprotokoll rückentwickeln. Dies ist eine sehr zeitaufwändige Aufgabe, da es nicht zu viele Spiele gibt, die diese Art der Inhaltsanalyse ermöglichen. Dies ist immer noch keine leichte Aufgabe, und wenn Sie sich als Profi betrachten, können Sie Ihren eigenen Spieleclient schreiben. Die Leute denken oft, dass sie es schaffen und viel Zeit vergeblich verbringen können, aber wenn Sie wirklich in der Lage sind, einen guten Kunden zu schreiben, wie die Leute, die mich vor ein paar Monaten zerstört haben, können Sie ein paar hunderttausend pro Monat daraus machen.
Mike Donnelly: Das Schreiben eines benutzerdefinierten Kunden ist nicht das, was Sie verkaufen werden, sondern „Golden Farming“ und Echtgeldtransaktionen. Wenn Sie Ihren Spieleclient geschrieben haben, können Sie Ihren Partner bitten, zehn Millionen Kopien des Spiels auf dem Pharming-Server zu starten. Wenn Ihr Spieleclient keine große Anzahl von 3D-Rendering-Vorgängen benötigt, kann er hervorragend zur Skalierung der Goldfarm verwendet werden.
Josh Phillips: Wenn Sie normalerweise 2-3 Spieleclients auf einem Computer ausführen können und 200-300 Clients starten konnten, ist dies ein ziemlich großer Umfang.
Betrachten Sie nun eine Sache namens Anti-Cheat. In seiner Hilfe können Sie mit Software umgehen, die Betrüger berechnet und verbietet. Dies ist oft eine sehr schwierige Aufgabe, aber manchmal ist es sehr wichtig, nicht erkannt zu werden, sonst kann man alles verlieren. Auf der Folie zitiere ich ein weiteres Zitat von Sun Tzu, der sagte: „Sei bis zur Formlosigkeit äußerst subtil. Sei bis zur Stille äußerst mysteriös. “
Mike Donnelly: Ich möchte darauf hinweisen, dass es nicht viele technische Aspekte der Erkennung gibt, aber Sie sollten dies strategisch angehen, dies steht nicht im Buch „MMO Hacking“. Vielleicht gibt es so ein Buch?

Josh Phillips: Ja, es wurde von einem meiner Freunde geschrieben.
Mike Donnelly: Dieser Typ ist überhaupt eliminiert. So wie dies nicht in dem Buch steht, aber wenn wir über einen strategischen Geschäftsansatz sprechen, sollten Sie sich über zwei Hauptaspekte Ihrer Software Gedanken machen. Sie haben eine Angriffsfläche, die bestimmt, wie schwierig es ist, Ihre Software zu erkennen, und Anti-Cheat kann in diesem Fall den Erkennungscode einfach erhöhen, wenn er klein ist. Zweitens sollten Sie das haben, was ich einfach "Intelligenz" nenne, das heißt, wie gut Sie wissen, was der Feind tut, Sie müssen verstehen, wie seine Erkennungsprogramme funktionieren, weil es sehr wichtig ist. Beide Dinge funktionieren zusammen, und wenn die Angriffsfläche zu groß ist, ist es schwierig zu sagen, was der Feind als Reaktion darauf tut, da sein Aufwand minimal sein kann - schreiben Sie einfach eine Codezeile, die Ihren Bot erkennt. Wenn Sie etwas wirklich Cooles tun, wie meinen Bot, der innerhalb von 2 Millisekunden reagiert. Wenn das Monster etwas tut, können Sie die Erkennung vermeiden.
Dies ist also die Entscheidung, die Sie treffen müssen, wenn Sie Funktionen auswählen und entwerfen, was Ihre Kunden verlangen. Sie müssen entscheiden, ob Sie Risiken eingehen möchten, indem Sie die Angriffsfläche durch Hinzufügen solcher Funktionen vergrößern.
Bevor ich die nächste Folie zeige, möchte ich darüber sprechen, was mit mir und anderen World of Warcraft-Softwareentwicklern passiert ist. Ein Typ hat Software entwickelt, nennen wir es Innerspace, bei der DLLs in ein ziemlich großes Spiel eingefügt wurden. Dieser Typ war mit Reverse Engineering bestens vertraut und ergriff alle Maßnahmen gegen Blizzard-Erkennungsprogramme. Aber er ließ die DLL immer noch im Speicher, was er "verwirren" wollte, und was noch wichtiger war, er musste eine der Blizzard-Funktionen patchen. Deshalb ging er einfach zum Anfang dieser Funktion und fügte einen „Weitsprung“ an der richtigen Stelle im Code ein, wobei er sicher war, dass er genug maskiert hatte und dass ihn niemand finden würde.
Die nächste Folie zeigt die Funktion mit dem eingefügten Code. Achten Sie auf die rot hervorgehobenen Werte. Wir werden dieses Fragment vergrößern, damit jeder es sehen kann.

Dies ist ein Teil des Codes, der in das Spiel eingefügt wurde, aber es ist nicht World of Warcraft ...
Josh Phillips: Weil Mike Blizzard jagt ...
Mike Donnelly: Ich denke nur, dass es keine gute Idee wäre, ein Beispiel von WoW zu geben. In diesem Code-Snippet sehen Sie, dass das Spiel die askForBuddiesList-Freundeslistenabfrage verwendet, die einen optionalen Parameter enthält, der noch nie zuvor verwendet wurde. Es wird als Paketnummer oder Teamnummer oder BOB-Nummer verstanden - "Brothers Over Bitches". Dieser optionale Parameter wird an dieser Stelle des Codes „eingefügt“ und an den Server gesendet. Alles ist sehr einfach.
Dieser „eingefügte“ Code - lassen Sie uns ein paar Zeilen nach unten zu den Kommentaren scrollen - sagt also: Der alte Code war askForBuddiesList (0), er ist 0, und stattdessen wird jetzt ein neuer Code mit dem Optionsparameter _asm verwendet, der noch nie zuvor verwendet wurde.

Also würde Blizzard im Spielcode eine Funktion finden, die von diesem Kerl repariert wurde. Zu diesem Zweck haben sie diesen Funktionsaufruf in ein kleines Codebeispiel geändert. Sie verwendeten die Register, führten einige mathematische Berechnungen durch, damit die IDA keinen weiteren Link zu dieser Funktion sieht. Dann gehen sie zur korrigierten Funktion, ziehen das erste Byte ihres Codes heraus und senden es als Parameter, der noch nie zuvor verwendet wurde. Was passiert dann? Sie senden jedes Mal, wenn sie diese Anfrage stellen, ein Byte ihres eigenen Codes, und natürlich "kämmen" sie es auf der Serverseite einfach, und wenn sie E9 anstelle von Null finden, ist der Job erledigt!
Das Interessante an dieser Software ist, dass Sie hier nichts wie "Wenn dieser Typ ein Bot ist, erzählen Sie dem Server davon" sehen. Sie sehen nur, dass ich dieses Byte nehme und es sende, und dies ist ein winziger Code, der nicht einmal den Hauptnetzwerkcode ändert. Es gibt keine neuen Parameter, nichts Neues. Der einzige Weg, es zu finden, besteht darin, irgendwie zu beobachten, wie diese Daten gesammelt werden, und dann können wir sagen: "Ja, dieses Ding war immer 0, und jetzt ist es 9, es ist nicht gut!"
Als sie das taten, verlor dieser Typ alle seine Kunden, weil sie mehrere Wochen darauf warteten, dass sie nicht mehr gesperrt wurden, und dann schlug die Firma immer wieder zu.
Dies ist ein gutes Beispiel dafür, wie viel die Angriffsfläche bedeutet, da die Korrektur nur einer Funktion des Spiels zu einer solchen Reaktion geführt hat. Tatsache ist, dass wenn Sie glauben zu wissen, wo sich der Erkennungscode befindet, immer die Möglichkeit besteht, dass dies nicht Ihre Meinung ist. Im Fall von Blizzard haben sie ihren Erkennungscode nie außerhalb des „Waldläufers“ des Wächters platziert, sondern „alle Eier in einem Korb aufbewahrt“ und die Detektoren im „Waldläufer“ versteckt. Aber dann haben sie es geschafft und gesagt, wir würden unseren winzigen Code einfach posten, wo immer wir wollten - und das war's.
Daher ist es äußerst wichtig, schwer zu erkennen zu bleiben. Wenn sie sich so etwas wie einen neuen Kernel-Aufruf einfallen ließen oder einen privaten API-Monitor starteten, konnte ihre Aktivität erkannt werden, aber als sie nur einen winzigen Schritt machten, wurden Sie sofort erwischt. Daher ist es sehr wichtig zu beobachten, was sie tun und wie sie neue Tools erstellen, um zu überwachen, wie die Datenflüsse im System aussehen sollen.
Was Glyder betrifft, hatten wir Tools, die uns zum Beispiel warnten, dass Warden aktualisiert wurde und jetzt 9 statt 8 Einstiegspunkte hat. Nach einer solchen Warnung rannte ich in mein Büro und fing an, Glyder fieberhaft zu reparieren und zu bringen bestellen und erneut ausführen. Es gibt also immer einen Ausweg, die Hauptsache ist, nicht faul zu sein. Es gibt wirklich viel Arbeit in diesem Geschäft, aber es zahlt sich aus.
Josh Phillips: Ja, ich denke wir mussten beide 36 Stunden ohne Pause arbeiten.
Mike Donnelly: Als Blizzard den „Ranger“ aktualisierte, wurde ein neuer Scanner hinzugefügt. Dieser Scanner nimmt die im „Hausmeister“ verschlüsselte Zeile, empfängt den Serverschlüssel, entschlüsselt diese Zeile und ruft die GetProcAddress-Funktion auf, die die Adresse der exportierten Funktion aus der angegebenen dynamisch verbundenen Bibliothek extrahiert, in diesem Fall kernel32.dll. Wenn ich dich langweile, mach dir keine Sorgen, dann wird es mehr Spaß machen.
Daher nehmen sie die Zeichenfolge, unabhängig davon, um was es sich handelt, und wenn sie durch diese Funktion reguliert wird, wird GetProcAddress ohne Parameter auf sie angewendet. , , , , . , - kernel32.dll , , .
, , , , Hellgate: London. , , ! : « ! , »!

, , URL — YouTube! GetProcAddress, ProcAddress , , , , , ! , . , . , , ricroll, - !
: , . , - , , , dll . , . Blizzard , «, , – , ».
, , , command & control , «» Warden Punkbaster. WoW, , .
: .
: , . Punkbaster , , . window.name, Punkbaster. : «, , , IRC , , ».
, Punkbaster : «-, !», .
, . , , . . , .
: , , Diablo 3.

, – ? Blizzard . Blizzard . , , «» Blizzard, .
: , . , , , .
: , …
Josh Phillips: Ich hoffe, wir haben noch etwas Zeit, also gehen wir zum Raum der Fragen und Antworten und setzen unsere Kommunikation fort.Mike Donnelly: Danke, DefCon!
Vielen Dank für Ihren Aufenthalt bei uns. Gefällt dir unser Artikel? Möchten Sie weitere interessante Materialien sehen? Unterstützen Sie uns, indem Sie eine Bestellung
aufgeben oder Ihren Freunden empfehlen, einen
Rabatt von 30% für Habr-Benutzer auf ein einzigartiges Analogon von Einstiegsservern, das wir für Sie erfunden haben: Die ganze Wahrheit über VPS (KVM) E5-2650 v4 (6 Kerne) 10 GB DDR4 240 GB SSD 1 Gbit / s von $ 20 oder wie teilt man den Server? (Optionen sind mit RAID1 und RAID10, bis zu 24 Kernen und bis zu 40 GB DDR4 verfügbar).
VPS (KVM) E5-2650 v4 (6 Kerne) 10 GB DDR4 240 GB SSD 1 Gbit / s bis zum Frühjahr kostenlos, wenn Sie für einen Zeitraum von sechs Monaten bezahlen, können Sie
hier bestellen.
Dell R730xd 2 mal günstiger? Nur wir haben
2 x Intel Dodeca-Core Xeon E5-2650v4 128 GB DDR4 6 x 480 GB SSD 1 Gbit / s 100 TV von 249 US-Dollar in den Niederlanden und den USA! Lesen Sie mehr über
den Aufbau eines Infrastrukturgebäudes. Klasse mit Dell R730xd E5-2650 v4 Servern für 9.000 Euro für einen Cent?