it-swarm.com.de

Verhindern künstlicher Latenz oder "Lag Hacking" in Multiplayer-Spielen

Es gibt einen Angriff, den einige Leute als "Lag Hacking" bezeichnet haben und der in Multiplayer-Spielen immer beliebter wird. Es gibt mindestens zwei Möglichkeiten, künstliche Latenz zu erstellen. Eine Methode zur Einführung einer künstlichen Latenz ist die Verwendung eines Verzögerungsschalters , bei dem der Benutzer sein Netzwerkkabel absichtlich abtrennt. Eine andere Methode ist die Verwendung einer Flut von Syn- oder UDP-Paketen, um kontrollierte und vorhersehbare Störungen im Spiel zu verursachen, sodass ein Spieler einen unfairen Vorteil erlangen kann. Künstliche Latenzangriffe betreffen eine große Anzahl von Multiplayer-Spielen .

Einige Spielefirmen wurden von ihren Benutzern auf diesen Angriff aufmerksam gemacht, ignorieren diese Sicherheitsanfälligkeit jedoch, weil sie keine Lösung haben . Die Werkzeuge, um diesen Angriff auszuführen, sind einfach zu konstruieren, leicht verfügbar und einfach zu bedienen . Sie fälschen häufig die Quell-IP-Adresse, um die Verfolgung des Angriffs zu erschweren.

Lassen Sie uns also security.se eine Lösung für dieses Problem finden. Aber lassen Sie uns zuerst ein wenig über Spielprotokolle sprechen. Online-Spiele verwenden normalerweise UDP, da die Latenz und der Overhead geringer sind. Dies erhöht jedoch auch die Anfälligkeit für Spoofing. Spielprotokolle können Latency Hiding verwenden, um die "wahrgenommene Latenz" zu verringern. Dies kann jedoch die Auswirkung einer künstlichen Verzögerung erhöhen. Multiplayer-Spiele verwenden häufig eine P2P-Architektur, z. B. Hydra: Peer-to-Peer-Architektur für Spiele , und ein Peer ist leicht zu überfluten. Die nwirkliche Netzwerkarchitektur ist gut dokumentiert und auch anfällig für diesen Angriff . (Wenn es eine andere Ressource gibt, die ich auflisten sollte, lass es mich wissen!)

36
rook

Ich sehe zwei konzeptionelle Wege für den Umgang mit Verzögerungsangriffen:

  1. Bestrafungsverzögerungen . Wenn eine "künstliche" Verzögerung festgestellt wird, vertreiben Sie den Täter und setzen Sie eine Sperrfrist durch. In der Praxis ist dies schwierig, da ein empfindliches Gleichgewicht zwischen Personen besteht, die durch Verzögerungen betrügen, und Personen, die lediglich gelegentlich unter Schluckauf in ihrer Internetverbindung leiden. Es ist eine schlechte Geschäftspraxis, eigene Kunden zu schlagen. Solche Lösungen werden notwendigerweise eine Schwelle haben, um zwischen schlechten und unglücklichen Menschen zu unterscheiden. Betrüger werden nahe an der Schwelle bleiben und dies wird wahrscheinlich ausreichen, um einen strategischen Vorteil zu erzielen.

    Ein vielversprechender Ansatz entlang der Bestrafungslinie besteht darin, für jede Verzögerung kleine, aber kumulative Strafen zu verhängen: Wenn ein Paket verloren geht oder zu spät auftaucht, entfernen Sie einen Trefferpunkt, lassen Sie den Spieler blinken, was auch immer ... dies kann sogar in das Spiel integriert werden Universum (zum Beispiel für ein [~ # ~] fps [~ # ~] die erkannte Verzögerung in einen Gewehrstau umwandeln). Dies bedeutet, dass Menschen mit zuverlässigen Internetverbindungen und großen Computern im Vorteil sind - und ich glaube, dass die Spieler bereit sind, dies zu akzeptieren, da ähnliche Dinge in vielen anderen Situationen des Freizeitwettbewerbs passieren (z. B. wenn Ihr Hobby Wenn Sie Skateboard fahren, wissen Sie, dass ein besseres Skateboard kein Talent ersetzt, aber dennoch hilft, und Skateboarder akzeptieren dies als eine Tatsache des Lebens. Letztendlich könnte dies den ISP dazu veranlassen, ein wenig an seiner Latenz zu arbeiten, was gut für alle wäre, nicht nur für Gamer.

  2. Vertraue Kunden nicht . Massive Online-Spiele sind Distributed Computing . Die meisten ihrer Sicherheitsprobleme sind auf die Tatsache zurückzuführen, dass viele Spielregeln, d. H. Die Eigenschaften der Welt, in der die Spieler agieren, von den Client-Systemen verwaltet werden. Die Spieler selbst und insbesondere die potenziellen Betrüger haben eine umfassende Kontrolle über ihre Maschinen. Bestehende Gegenmaßnahmen haben aus den gleichen Gründen, aus denen Software-DRM und Antivirus fehlschlagen können, tendenziell eine eingeschränkte Wirksamkeit: Dies ist ein Wettrüsten, bei dem Angreifer und Verteidiger in einen rasanten Kampf von Patches und Gegenpatches verwickelt sind, der lästig und erforderlich ist teure, fortgesetzte Wartung.

    Die allgemeine Antwort der Architektur besteht darin, die Spielregeln nur serverseitig beizubehalten. Clients werden "dünn" und sind nur Anzeigeschnittstellen. Dies ist leider schwer zu implementieren, da die Anzeigeleistung (daher das Spielerlebnis) sehr empfindlich auf Latenz reagiert, sowohl künstlich als auch natürlich. und ADSL-Links haben eine minimale Latenz nahe 50 ms, was im Hinblick auf durchschnittliche Spielerreflexe hoch ist. Dies bedeutet auch, dass das Spiel Server Mehr CPU-Muskeln benötigt. Der Sicherheitsvorteil ist jedoch enorm: Wenn ein Spieler Verzögerungen hervorruft, bestraft er sich selbst und keinen anderen.

    Das Beibehalten des gesamten Spielstatus und der Spielregeln auf den Servern ist ebenfalls keine vollständige Science-Fiction. In den späten 1980er Jahren war "CarCrash", ein Nachwuchs des verstorbenen französischen Magazins Jeux et Stratégie , eines der allerersten [~ # ~] mmo [~ # ~] Spiele; Es wurde über das Minitel gespielt, eine andere alte französische Technologie, bei der Benutzer einfach Textterminals (mit eingeschränkter Grafik) ohne lokale Computerfähigkeiten hatten. Die zentralen Server haben die Spielregeln beibehalten und die Bildschirmaktualisierungen für alle berechnet, und es hat funktioniert. Computer hatten zu dieser Zeit weit weniger CPU-Muskeln als heute; Eine 20-MHz-CPU reichte aus, um als "Supercomputer" zu gelten. Ein 35-Dollar-Heimrouter von 2013 ist mehr als zehnmal so leistungsfähig wie ein großer Server dieser Zeit. Und doch hat es funktioniert.

    Das Beibehalten von Spielregeln auf dem Server bedeutet, dass von der normalen Architektur der Spiele abgewichen wird. In der Vergangenheit waren die meisten Spiele lokal und wurden zu Multiplayer-Spielen, indem Clients miteinander verbunden wurden, möglicherweise mit einem zentralen Server, der nur als Treffpunkt diente. Um eine politische Metapher zu nehmen, wurden Spiele durch die Bildung von Konföderationen zum Multiplayer, aber die Sicherheit gegen Betrüger erfordert eine Föderation .

Natürlich sind gemischte Strategien möglich. Die Kernidee ist dieselbe: Geben Sie Client-Systemen so wenig vertrauliche Daten wie möglich. und wenn Sie müssen ihnen für etwas vertrauen, verwenden Sie eine große Peitsche oder eine große Karotte, um sie in der Linie zu halten .

(Wenn Sie verstehen, dass Spieler wie Viehherden behandelt werden sollten, dann ist das in der Tat wahr. Sie möchten nicht, dass Ihre Kühe unglücklich sind, aber Sie lassen sie auch nicht ihre Laufrichtung und ihr Tempo wählen .)


Bearbeiten: habe gerade einen Einblick bekommen, während ich darauf gewartet habe, dass mein Tee etwas abkühlt. Eine Spielarchitektur könnte mehrere (möglicherweise Dutzende) kooperierender "vertrauenswürdiger" Server umfassen, die weltweit verbreitet sind und "das Spiel spielen", wie es Spieleclients heute tun. Jeder Spieler würde eine Verbindung zu einem Server herstellen, der (in einem Netzwerksinn) "in der Nähe" ist, um eine geringe Latenz zu haben, was die oben beschriebene Nur-Anzeige-Strategie ermöglicht. Wenn der ISP selbst an dem Geschäft beteiligt sein kann (jeder ISP würde einige Server in seiner eigenen Infrastruktur hosten), könnte dies auf geschäftliche Weise sinnvoll sein.

25
Thomas Pornin

Mit der Zunge nur teilweise auf der Wange werde ich vorschlagen, dass Xbox Live bereits über Steuerelemente verfügt, um den durch Verzögerungsschalter verursachten Schaden zu begrenzen. Ich werde meinen inneren Schneier kanalisieren und sagen, dass reaktive und gesellschaftliche Kontrollen absolut gültige Optionen sind, wenn die Implementierung technischer Kontrollen problematisch sein kann:

  • Markieren Sie den Spieler als "Vermeiden" - es ist unwahrscheinlich, dass Sie erneut mit ihm übereinstimmen
  • Eine Beschwerde wegen "Systemmanipulation" einreichen - ermöglicht den Widerruf ihres Kontos

Dies hat sich als wirksame Kontrolle gegen die "Mod" -Hacker in dem Spiel erwiesen, das ich regelmäßig spiele: "Call of Duty: World at War". Die einzige Schwierigkeit, die ich sehe, ist, dass das Umschalten der Verzögerung schwer zu beweisen ist. Im Gegensatz zu jemandem, der mit Noclip durch die Luft fliegt, ist es nicht ungewöhnlich, unschuldige Spieler mit verzögerten Verbindungen zu sehen, die ihnen manchmal zu helfen scheinen.

8
gowenfawr

Betrachten Sie das beliebige Beispiel:

Der Server speichert für jeden Spieler einen Datenstapel, der die Position des Spielers und den Zeitpunkt des Empfangs dieses Updates enthält. Der Server erwartet alle 10 ms ein Update, da es auf diese Weise im Client programmiert ist. Jedes empfangene Update wird mit dem vorherigen Update überprüft.

Angenommen, der Server akzeptiert X- und Y-Koordinaten für den Spieler und das Spiel erlaubt nur die Änderung von 1.0 für X und Y bei jedem Update (da dies die maximale Geschwindigkeit des Spielers ist). Wenn die aktuelle Zeit 0,00 ist und die Position des aktuellen Spielers bei (1,0,1,0) liegt, kann die maximale Aktualisierungsposition bei der aktuellen Zeit von 0,01 (2,0,2,0) sein. Möglicherweise müssen wir bei dieser Positionierung eine gewisse Fehlerquote zulassen, z. B. + ,1,0,1).

UDP-Pakete werden jedoch verworfen, und der Server muss die zulässigen Grenzwerte für den Player angesichts des aktuellen Updates berechnen. Wenn im vorherigen Absatz das Update gelöscht wurde und der Spieler auch ein neues Update mit Zeit = 0,02 und Position (2,0,2,0) gesendet hat, wäre dies ein legitimes Update. Der Server prüft und kennzeichnet Aktualisierungen, die nicht real sind, wenn die Zeit zum Ändern der Koordinaten möglicherweise nicht erreicht worden wäre. In diesem Beispiel wird bei der nächsten Aktualisierung auf (1000.0.1000.0) umgestellt.

Da der Server alle 10 ms ein Update erwartet, muss eine akzeptable Beschränkung auf die verworfenen Pakete vorhanden sein, die er nicht empfangen hat. Das Limit kann 100 ms betragen. Wenn der Server innerhalb dieses Zeitraums kein Update erhalten hat, können wir davon ausgehen, dass eine gewisse Verzögerung vorliegt. Sobald diese Verzögerung behoben ist, teilt der Server dem Spieler mit, wo er sich gerade befindet, damit er neue Updates senden kann.

Diese Verzögerung sollte andere Spieler nicht betreffen, da dies nicht ihr Problem ist. Es ist ziemlich frustrierend zu sehen, wie andere Spieler im Spiel "teleportieren", weil sie zurückbleiben. Verzögerung passiert und es ist --- (immer der Grund, warum ich in Videospielen sterbe.

1
ponsfonze

Wenn Verzögerungsspitzen oder was auch immer der Begriff ist, erkannt wurde, sollte der Server einfach damit beginnen, die Kugeln der Spieler für x Sekunden stummzuschalten. Es ist nicht die Schuld des Feindes, dass Spieler aufgrund von Netzwerkproblemen verlieren.

Wenn die Verzögerungsspitzen während des Spiels anhalten, erhöhen Sie weiterhin die Zeitverzögerung für fallengelassene Kugeln. Protokolliere dieses Zeug auf dem Spielerkonto. Protokollieren Sie zusätzliche Informationen, z. B. wenn Spieler in der Nähe sind, mit Entfernungen und so weiter, damit der Spieler bei Bedarf untersucht werden kann. Wenn es auf freiem Feld nie passiert, ohne dass jemand in der Nähe ist ... warum? Ich verstehe, dass Netzwerke im Kampf stärker involviert sind, aber wenn es immer 0,5 Sekunden dauert, bis er schießt, weil er hinter einem Stein läuft, der seinen Verzögerungsschalter betätigt und dann angreift, wird dieses Zeug punktgenau.

Wenn du ein schlechtes Netzwerk hast, dann wirst du in Ordnung sein, ich habe ein schlechtes Netzwerk, aber ich mag das Spiel, also ist mir klar, dass ich einige Kugeln verlieren kann ... Fair genug. Das wird akzeptiert. Menschen mit schlechten Netzwerken wissen, dass sie schlechte Netzwerke haben. Das Treten aufgrund von Spitzen ist keine Antwort, es sei denn, es handelt sich um eine kontinuierliche Spitze während der gesamten Clientverbindung zur Serverlebensdauer.

Was den Lag-Hacker betrifft, muss er irgendwann fair spielen. Der längere Verlust von Kugeln bedeutet, dass er den Hack nicht verwenden wird. Wenn überhaupt, wird es zu einem Werkzeug, um einfach wegzulaufen, was weiter aufdeckt, dass er hackt. Ein schlechter Netzwerkspieler wird nicht bemerken, dass er hinterherhinkt und Kugeln verliert.

Und schließlich hat der Client ein so schlechtes Netzwerk, weil es eine schlechte Netzwerkverbindung ist? Senden Sie eine E-Mail mit der Aufschrift "Ihr Netzwerk weist Anzeichen von Unordnung auf. Bitte wenden Sie sich an Ihren Internetdienstanbieter, um mögliche Leitungsprobleme zu untersuchen. Dies ist eine Höflichkeitswarnung, keine Flagge des Betrugs, wirkt sich jedoch auf unsere Server und das Gameplay aus könnte mit anderen in der Warteschlange stehen, die ähnliche Probleme haben, um unseren wettbewerbsfähigen Spielern gerecht zu werden, die nach einem qualitativ hochwertigen Service suchen, den wir anbieten möchten. "

0
Mike Cackle