[Server Emulation] Loginsystem basteln? (Packetsniffing)

06/07/2012 20:37 Terreox#1
Hallo ihr Coder da draußen,

ich habe ein wenig langeweile momentan und würde ein wenig was im Bereich der Serveremulation machen. Als ersten kleinen Schritt habe ich mir vorgenommen, dass ich ein Programm baue, welches den Datenverkehr des Programmes X abfängt, bearbeitet und eine Antwort sendet.
Möglich wäre z.B. folgendes:
Programm A sendet z.B. Logindaten -> Serveremulator fängt ab -> gleich Daten mit z.B. einer DB ab -> sendet true oder false Antwort zurück.

Gut was so simpel gedacht ist wird wohl eher etwas komplexer sein, da man denk ich auf jedenfall erstmal den Traffic des Programmes analysieren muss, um überhaupt zu erfahren wie gesendet wird und was zurückkommt.

Darum geht es mir auch: Dem Packetsniffing und der Analyse. Gibt es hierzu irgendwo empfehlenswerte Anleitungen oder sonstige Papers die die Theorie oder am besten auch die Theorie mit praktischer Umsetzung erklären?
Es geht hier nicht um einen Bot oder Trojaner etc. Ich will einfach nur erreichen, dass ich mir eine Art PServer-Loginsystem für ein Programm bauen kann.

Würde mich über Tipps und Hinweise zu diesem Thema (oder auch weiterführenden Themen aus diesem Bereich der Programmierung, die etwas damit zu tun haben) sehr freuen :)
06/10/2012 03:32 MoepMeep#2
Send/recv hook/detour bzw das ganze über einen proxy umleiten.
06/10/2012 15:47 Xijezu#3
Bei Packetsniffing würde ich persönlich ja zurück auf die Man-in-the-middle-Methode zurückgreifen, sprich den Clienten, falls möglich, auf den Packetsniffer verbinden lassen, der sich auch zum Server verbindet, dementsprechend dann die Packets weiterleitet und zwischendurch diese auch loggt.

Problem an der Sache ist nur die Encryption der Packets, denn ich denke, kaum ein Spiel schickt noch unverschlüsselte Packets.
Wir hatten damals das Glück und hatten ein Teil des Sourcecodes des Servers. *hust*
06/10/2012 21:36 Terreox#4
Vielen Dank für die Antworten :)
Gut zu Man-in-the-middle sollte sich doch was finden lassen. Ich werde mich mal damit beschäftigen
06/10/2012 21:58 MrSm!th#5
Du wirst letztendlich nicht um das Reversen des Clients herumkommen, um die Verschlüsselung zu knacken.
Ein Public Sniffer hilft nur bedingt, da er halt die Verschlüsselung nicht kennt und nur die verschlüsselten Pakete anzeigt. Und nach dem Reversing Vorgang schreibt man sich normalerweise selbst nen kleinen Sniffer, der die Pakete auch gleich entschlüsselt darstellt, um den Traffic zu analysieren.
06/12/2012 17:30 Tyrar#6
Quote:
Originally Posted by MrSm!th View Post
Du wirst letztendlich nicht um das Reversen des Clients herumkommen, um die Verschlüsselung zu knacken.
Ein Public Sniffer hilft nur bedingt, da er halt die Verschlüsselung nicht kennt und nur die verschlüsselten Pakete anzeigt. Und nach dem Reversing Vorgang schreibt man sich normalerweise selbst nen kleinen Sniffer, der die Pakete auch gleich entschlüsselt darstellt, um den Traffic zu analysieren.
Grundsätzlich wird in diesen fällen ein Hook an die Funktionen platziert, die die Rohdaten entgegennehmen. Damit hätte man (zumindest alleine für das Sniffen) das reversen der Encryption umgangen (allerdings wenn man einen Emulator schreiben will, sowieso notwendig)
06/12/2012 21:04 MrSm!th#7
Auch dafür wäre erstmal Reversing notwendig.
06/13/2012 13:57 Tyrar#8
Quote:
Originally Posted by MrSm!th View Post
Auch dafür wäre erstmal Reversing notwendig.
allerdings nich so extrem, die gesamte encryption reversen zu müssen, aber das nur am rande ;)
06/13/2012 23:58 MrSm!th#9
Das kommt aufs Verfahren und die eigenen Sinne an. I.d.R. musst du es nur erkennen, oft sind es bekannte Verfahren oder sogar bekannte Libs, dann musst du es nicht selbst reversen.

Außerdem macht das doch viel mehr Spaß :p
06/15/2012 16:28 Tyrar#10
Quote:
Originally Posted by MrSm!th View Post
Das kommt aufs Verfahren und die eigenen Sinne an. I.d.R. musst du es nur erkennen, oft sind es bekannte Verfahren oder sogar bekannte Libs, dann musst du es nicht selbst reversen.

Außerdem macht das doch viel mehr Spaß :p
spaßig!=effektiv ;)

es ist (in meinen augen) definitiv effektiver, zu suchen wo eine art von encryption durchgeführt wird und davor einen hook zu platzieren, als zuerst rauszufinden, welche encryption verwendet wird/welcher key/blablabla
vorallem könnten es auch modifizierte algos sein und da kommt man mit nem simplen scanner nicht mehr einfach so dran
06/15/2012 16:44 MrSm!th#11
Doch, gerade Scanner schaffen das dann eher als das menschliche Auge.
Probleme gibts erst bei modifizierten Algorithmen.