You're kicked by the Server
-
Mal ne Frage.
Solche Nachrichten könnte man doch, sofern man das Protokoll des Spieles analysiert an beliebige Clients selber verschicken.
Der einzige Unterschied wäre nur, daß die Nachricht nicht von der IP des Servers kommt, aber das wird doch sicher nicht von jedem Spiel überprüft ob die Nachricht echt, also vom Server ist.Solche fake Meldungen wären sehr gut geeignet um cheatende Admins vom Server zu schmeißen.
Denn die Nachricht müßte dem Client ja signalisieren daß der Server die Verbindung beendet hat und abschalten, obwohl die reale Verbindung zum Server ja noch existiert.Besonders interessant ist das bei Zustandslosen UDP Verbindungen.
-
Abgesehen davon, dass ich dein Vorhaben für moralisch fragwürdig halte ist folgende Vermutung falsch:
Egoshooter schrieb:
Der einzige Unterschied wäre nur, daß die Nachricht nicht von der IP des Servers kommt, aber das wird doch sicher nicht von jedem Spiel überprüft ob die Nachricht echt, also vom Server ist.
Die IP-Adresse wird garantiert immer überprüft, sonst würde das Spiel ja von jedem Mist den dein Rechner sonst noch so empfängt gestört.
-
Warum solltest du plötzlich ne connection zu nem anderen client haben?
-
wichtige Nachrichten wie das Kicken vom server werden normalerweise immer über eine TCP-verbindung versendet. Die einzige Möglichkeit wäre, diese Verbindung zu hijacken und dann dem Spieler das kick-paket zu senden, wobei man als Absenderadresse die des Servers angibt. Falls die Verbindung zwischen Server und Client jedoch zusätzlich noch verschlüsselt ist, wird auch dies nicht funktionieren und man muss noch feinere Methoden anwenden.
In einem Satz: Das ist zu kompliziert und die Entwickler haben genug Gegenmaßnahmen getroffen, vergiss es.
-
Heinzelotto schrieb:
wichtige Nachrichten wie das Kicken vom server werden normalerweise immer über eine TCP-verbindung versendet. Die einzige Möglichkeit wäre, diese Verbindung zu hijacken und dann dem Spieler das kick-paket zu senden, wobei man als Absenderadresse die des Servers angibt. Falls die Verbindung zwischen Server und Client jedoch zusätzlich noch verschlüsselt ist, wird auch dies nicht funktionieren und man muss noch feinere Methoden anwenden.
In einem Satz: Das ist zu kompliziert und die Entwickler haben genug Gegenmaßnahmen getroffen, vergiss es.So ein Bullshit.
@TE: Geht nicht, jedes Spiel, was auf UDP aufbaut, prüft natürlich die Absenderadresse der Pakete und akzeptiert nur solche vom Server bzw. im Falle des Servers von registrierten Clients.
-
ChrisM schrieb:
So ein Bullshit.
kannst du bitte ein bisschen differenzierter argumentieren? Sonst muss ich mich nämlich persönlich angegriffen fühlen!
@TE: Geht nicht, jedes Spiel, was auf UDP aufbaut, prüft natürlich die Absenderadresse der Pakete und akzeptiert nur solche vom Server bzw. im Falle des Servers von registrierten Clients.
Falsch. Ich kenne mindestens ein auf UDP aufbauendes Spiel, das dies nicht tut.
Ferner kann jeder socketprogrammierer, der ein bisschen ahnung von Raw-sockets hat, die Absenderadresse beliebig modifizieren und somit wäre deine Methode nutzlos.
-
eh???? schrieb:
Warum solltest du plötzlich ne connection zu nem anderen client haben?
Weil UDP ein Verbindungsloses Protokoll ist.
D.h. man kann UDP Pakete schicken und der Empfänger wertet diese aus.
Ob die Echtheit des UDP Pakets überprüft wird, also ob es überhaupt vom Gameserver
kommt entscheidet das Spiel selbst und da bei jedem Spiel die Datenmenge pro Paket meist so niedrig wie möglich sein sollte könnte ich mir gut vorstellen,
daß diese UDP Pakete einfach ungeprüft zur Spielelogik durchgewunken werden.
-
Heinzelotto schrieb:
wichtige Nachrichten wie das Kicken vom server werden normalerweise immer über eine TCP-verbindung versendet.
Ok, aber nicht jedes Spiel benutzt eine TCP Verbindung.
Manche Spiele kommen gänzlich ohne TCP Protokoll aus und nutzen nur ausschließlich UDP.Die einzige Möglichkeit wäre, diese Verbindung zu hijacken
hijacken? Wie muß ich mir das vorstellen?
Den Server knacken oder was ist mit hijacken genau gemeint?
Wenn ersteres zutrifft, dann sehe ich hier ein rechtliches Problem.
Beim Versenden falscher UDP Daten ist es nur ein moralisches
und rechtlich allerhöchstens ein Stören des Datendienstes.Falls die Verbindung zwischen Server und Client jedoch zusätzlich noch verschlüsselt ist, wird auch dies nicht funktionieren und man muss noch feinere Methoden anwenden.
Ok, das ist natürlich klar.
Aber welcher Egoshooter verschlüsselt seine Verbindungen?
Ich dachte es kommt hier auf Performance und niedrige Pingzeiten an.
Da ist doch sicher gar kein Platz mehr für eine Verschlüsselung vorhanden und wenn doch, dann ist sie sicher schwach.
-
Hallo,
ich gehe jetzt natürlich vom Internet aus und nicht von deinem privaten LAN, wo drei Rechner mit einem 10 Euro Hub/Switch verbunden sind (dort ist IP Spoofing natürlich kein Problem, andererseits kann man den Rechner auch einfach physisch vom Netz trennen). Und im Internet kannst du eben nicht mehr spoofen, zumindest wenn man vom westlichen Netz ausgeht und nicht im Jahre 1990 lebt.
Jetzt zu deinem davorgehenden Post, für den du eine genauere Begründung wolltest:
wichtige Nachrichten wie das Kicken vom server werden normalerweise immer über eine TCP-verbindung versendet.
Das ist Unsinn. Es gibt mehr als genug Spiele, die nur eine UDP für die Kommunikation mit dem Spieleserver verwenden. Ein Beispiel wären z.B. alle Unreal Tournament-Spiele.
Die einzige Möglichkeit wäre, diese Verbindung zu hijacken und dann dem Spieler das kick-paket zu senden, wobei man als Absenderadresse die des Servers angibt.
Wie oben schon erklärt, kannst du das im Internet vergessen. Bei TCP ist es übrigens noch viel komplizierter: Selbst wenn du die Pakete spoofen könntest, müsstest du vorher noch in die Verbindung reinsniffen können, denn du brauchst z.B. eine richtige TCP-Sequenznummer.
Falls die Verbindung zwischen Server und Client jedoch zusätzlich noch verschlüsselt ist, wird auch dies nicht funktionieren und man muss noch feinere Methoden anwenden.
Welches Spiel verschlüsselt bitteschön seine Kommunikation? Kannst du mir da ein einziges Beispiel nennen? Und angenommen, sie wäre verschlüsselt, wie sehen dann bei einer hinreichend starken Verschlüsselung die "feineren Methoden" aus?
Viele Grüße
Christian
-
ChrisM schrieb:
Wie oben schon erklärt, kannst du das im Internet vergessen. Bei TCP ist es übrigens noch viel komplizierter: Selbst wenn du die Pakete spoofen könntest, müsstest du vorher noch in die Verbindung reinsniffen können, denn du brauchst z.B. eine richtige TCP-Sequenznummer.
genau das meinte ich: Ein Teil davon ist auch geschicktes Raten der Sequenznummer. Heute ist das Problem wohl aber eher nicht mehr relevant, da die meisten TCP-stack-programmierer wohl das hier gelesen haben: http://tools.ietf.org/html/rfc1948
Insofern komme ich mit meinem Argument wohl einige Jahre zu spät
Welches Spiel verschlüsselt bitteschön seine Kommunikation? Kannst du mir da ein einziges Beispiel nennen? Und angenommen, sie wäre verschlüsselt, wie sehen dann bei einer hinreichend starken Verschlüsselung die "feineren Methoden" aus?
ein beispiel kann ich dir nicht nennen, aber ich bin mir sicher, dass es Spiele gibt, die so etwas zumindest ansatzweise implementieren, nicht zuletzt um das programmieren von proxy-servern zu erschweren, die ausgehende pakete (zu gunsten des cheaters) modifizieren. Wenn ein solcher Proxyserver eingesetzt wird, kann keine cheatsoftware mehr auf dem eigenen rechner entdeckt werden (Aequitas von der ESL sucht z.b. nach lokaler cheatsoftware).
Mit "feineren methoden" habe ich mich schlecht ausgedrückt, ich meinte eher "einen Mehraufwand".

PS: ist IP-Spoofing in UDP auch vom Tisch? werden solche Pakete vom ISP herausgefiltert?
-
Heinzelotto schrieb:
PS: ist IP-Spoofing in UDP auch vom Tisch? werden solche Pakete vom ISP herausgefiltert?
Ja. Der Check läuft auf der IP-Ebene (OSI Layer 3).
Chris
-
Egoshooter schrieb:
eh???? schrieb:
Warum solltest du plötzlich ne connection zu nem anderen client haben?
Weil UDP ein Verbindungsloses Protokoll ist.
D.h. man kann UDP Pakete schicken und der Empfänger wertet diese aus.
Ob die Echtheit des UDP Pakets überprüft wird, also ob es überhaupt vom Gameserver
kommt entscheidet das Spiel selbst und da bei jedem Spiel die Datenmenge pro Paket meist so niedrig wie möglich sein sollte könnte ich mir gut vorstellen,
daß diese UDP Pakete einfach ungeprüft zur Spielelogik durchgewunken werden.Wenn das so einfach wäre, dann wäre das eine riesen Sicherheitslücke. Wenn jedes Programm das UDP verwendet von jedem Programm auf der Welt Daten empfangen würde, wenn man die Client Adresse angibt, gäbe es doch schon längst tausende Viren die das machen und so Clients lahm legen. Ich hab mich zwar noch nie mit den Details beschäftigt, aber die Prüfung muss sehr weit unten vor das Packet zum Programm kommt statt finden (wie es ChrisM beschreibt), sonst wäre das einfach nicht geeignet fürs Internet.