Computer-Server Client

Hi,
da es mich seit geraumer Zeit sehr interessiert einen gewissen Computer-Server Clienten genau zu untersuchen, wollt ich Fragen ob es möglich ist eine bestimmte Funktion davon zu umgehen. Die Funktion des Clienten die ich meine, funktioniert meiner Meinung nach so:
1.Client wird heruntergeladen und installiert.
2.Client errechnet eine gewisse Id nummer aus der Computer Hardware Configuration (oder anderswie? Klingt mir so aber am logischsten)
3.Client schickt diese Id per Internet an Datenbank und prüft ob diese Id schon vorhanden ist.
4.Server schickt Antwort zurück und wenn false, dann wird der Account zugelassen, wenn true dann wird der Access für den Account denied.
--> Man kann nur einen Account pro Computer herstellen
(Kann das so sein? Ist nur meine Vermutung)

Jetzt meine Fragen:
Wie find ich heraus durch was der Client eine individuelle Id für jeden Computer berrechnet ?
Ist diese Id event. irgendwie fakebar wenn man wüsste durch was sie berrechnet wird?
(Das sollte der eine Weg sein diese Funktion zu umgehen)
Oder:
Kann man das Programm (den Client) durch einen Debugger (z.B OLLY) irgendwie abändern?
Hierbei liegt das Problem das ich nur wenig Assembler verstehe und ich nicht genau weiß welche der vielen jmp Funktionen ich abändern muss. :(

Zusätzlich: Ich wollte keine VM-Ware Lösung, da mir dieses System zu unstabil ist. Allerdings ist das bis jetzt der einzigste funktionierende Weg den ich gefunden habe.

Vielen Dank an Alle
Mjolnir
 
Zuletzt bearbeitet:
Hi,
da es mich seit geraumer Zeit sehr interessiert einen gewissen Computer-Server Clienten genau zu untersuchen, wollt ich Fragen ob es möglich ist eine bestimmte Funktion davon zu umgehen. Die Funktion des Clienten die ich meine, funktioniert meiner Meinung nach so:
1.Client wird heruntergeladen und installiert.
2.Client errechnet eine gewisse Id nummer aus der Computer Hardware 3.Configuration (oder anderswie? Klingt mir so aber am logischsten)
Client schickt diese Id per Internet an Datenbank und prüft ob diese Id schon vorhanden ist.
4.Server schickt Antwort zurück und wenn false, dann wird der Account zugelassen, wenn true dann wird der Access für den Account denied.
--> Man kann nur einen Account pro Computer herstellen
(Kann das so sein? Ist nur meine Vermutung)

Mit einen Sniffer im _eigenen_ Netzwerk sollte sich dieses eigtl erkennen lassen....
 
Hi,
da es mich seit geraumer Zeit sehr interessiert einen gewissen Computer-Server Clienten genau zu untersuchen, wollt ich Fragen ob es möglich ist eine bestimmte Funktion davon zu umgehen. Die Funktion des Clienten die ich meine, funktioniert meiner Meinung nach so:
1.Client wird heruntergeladen und installiert.
2.Client errechnet eine gewisse Id nummer aus der Computer Hardware Configuration (oder anderswie? Klingt mir so aber am logischsten)
3.Client schickt diese Id per Internet an Datenbank und prüft ob diese Id schon vorhanden ist.
4.Server schickt Antwort zurück und wenn false, dann wird der Account zugelassen, wenn true dann wird der Access für den Account denied.
--> Man kann nur einen Account pro Computer herstellen
(Kann das so sein? Ist nur meine Vermutung)

Jetzt meine Fragen:
Wie find ich heraus durch was der Client eine individuelle Id für jeden Computer berrechnet ?
Ist diese Id event. irgendwie fakebar wenn man wüsste durch was sie berrechnet wird?
(Das sollte der eine Weg sein diese Funktion zu umgehen)
Oder:
Kann man das Programm (den Client) durch einen Debugger (z.B OLLY) irgendwie abändern?
Hierbei liegt das Problem das ich nur wenig Assembler verstehe und ich nicht genau weiß welche der vielen jmp Funktionen ich abändern muss. :(

Zusätzlich: Ich wollte keine VM-Ware Lösung, da mir dieses System zu unstabil ist. Allerdings ist das bis jetzt der einzigste funktionierende Weg den ich gefunden habe.

Vielen Dank an Alle
Mjolnir
klingt mir sehr nach einem crack versuch ...:(
 
Mhmm... Schade. Hätte gedacht es würden mehr antworten ... und GrafZahl: Es geht rein um Übungs und Verständiszwecke ... ich will niemandem dadurch Schaden zufügen. Wenn euch das Thema zu heikel ist dann müsst ihr es halt schließen ... hätte aber gedacht, dass es in so einem Forum mehr Interressierte für dieses Problem gibt. :(
 
Zuletzt bearbeitet:
Bezüglich deiner ID, ist mir dieser Defcon Beitrag eingefallen. Soweit ich mich erinnere geht es dort um die Berechnung von Session-Keys, was für dich vielleicht interessant sein könnte.
Hast du den Netzwerkverkehr denn schon mit einem Sniffer untersucht?

Zusätzlich: Ich wollte keine VM-Ware Lösung, da mir dieses System zu unstabil ist. Allerdings ist das bis jetzt der einzigste funktionierende Weg den ich gefunden habe.

Das kann ich nicht ganz nachvollziehen. Hast du den Server in einer VM laufen? Wenn das funktioniert, könnte man doch darauf vielleicht aufbauen.


Mhmm... Schade. Hätte gedacht es würden mehr antworten ...
Dein Beitrag ist noch keine 24 Stunden alt und schon bist du am monieren? Wo beziehst du denn sonst so deine Informationen?

... hätte aber gedacht, dass es in so einem Forum mehr Interressierte für dieses Problem gibt.
Hier gibt es genug fachkundige, interessierte und hilfsbereite User. Ich finde es ein wenig frech von dir, dass du dich gerade angemeldet hast und schon meinst "niemand" würde sich für dich interessieren. Voraussetzung für Hilfe ist meiner Meinung nach auch ein Threadersteller, der offen mit seiner Frage umgeht und auf die Ratschläge eingeht. Solange du uns nicht nennst worum es eigentlich konkret geht bzw. Tipps nicht befolgst, kannst du wohl kaum erwarten, dass dir viele Leute helfen werden.
 
hätte aber gedacht, dass es in so einem Forum mehr Interressierte für dieses Problem gibt. :(
Das ist das "typische" Hardware-ID Problem. Das gab es schon mehrmals als Fragestellung und es jedesmal neu zu erklären ist etwas ... langweilig. Vor allem weil Du die Frage teilweise schon selbst beantwortest.


Jetzt meine Fragen:
Wie find ich heraus durch was der Client eine individuelle Id für jeden Computer berrechnet ?
->
Kann man das Programm (den Client) durch einen Debugger (z.B OLLY) irgendwie abändern?
OllyDbg, IDA oder je nach verwendeter Sprache anderer Disassembler/Decompiler/Debugger sind die besten Helfer.
Die ID wird nämlich berechnet, wie der Programmierer lustig ist. Welche Geräte/Daten er abfragt und was er damit überhaupt anstellt, bleibt seiner Kreativität überlassen.

Theoretische Alternative wäre Netzwerkverkehr mitzuschneiden und die Packete analysieren. Kommt aber stark darauf an, was für ein Protokoll/Verschlüsselung genutzt werden.


Ist diese Id event. irgendwie fakebar wenn man wüsste durch was sie berrechnet wird?
(Das sollte der eine Weg sein diese Funktion zu umgehen)
Ja. Das Problem ist nur, dass man eben mit dem Debugger umgehen können muss. Und der Aufwand hängt auch stark von der verweneten Programmierprache, dem Gesamtkonzept und benutzen Schutzmaßnahmen ( -> Software von Oreans ist nicht gerade anfängerfreundlich) ab.
 
Ok vielen Dank bis jetzt ... hilft mir schon einiges weiter.
Wenn euch mein letzter Beitrag zu "frech" rübergekommen ist dann tut es mir Leid, hatte nämlich gedacht, dass mir nach dem Kommentar von Graf Zahl niemand mehr antwortet.
Mhmm ok hab mir schon gedacht, dass es ein wenig komplezierter wird. Nehmen wir nun an das Programm ist in C++ geschrieben und ist fertig disassembled dann müsste ich doch "nur" die richtige Funktion finden und die Funktion überspringen oder zu NOP abändern?
Zu der Sache mit den Datenpaketen analysieren:
Die Daten werden doch nach dem Ausgang von meinem PC von dem Clienten gecrypted. Wie du schon gesagt hast weiß ich nicht welches Protokoll oder welche Verschlüsselung benützt wird.
Welchen Sniffer würdest du denn verwenden? Wäre Wireshark genug ?
Danke nochmal :)
Werde diesesmal geduldig warten.
 
Wenn euch mein letzter Beitrag zu "frech" rübergekommen ist dann tut es mir Leid, hatte nämlich gedacht, dass mir nach dem Kommentar von Graf Zahl niemand mehr antwortet.
Es ging eher nur darum, dass du selbst geschrieben hast, dass dir Assembly/Debuggerkenntnisse fehlen - und da macht es nicht so viel Sinn, großartig Vorschläge zu posten ;).

Nehmen wir nun an das Programm ist in C++ geschrieben
Warum annehmen? CFF Explorer oder PEID zeigen meistens recht zuverlässig den Compiler.

und ist fertig disassembled dann müsste ich doch "nur" die richtige Funktion finden und die Funktion überspringen oder zu NOP abändern?
Zu NOP ändern würde nichts bringen, wenn der Server eine ID erwartet. Man könnte aber einfach eine andere ID vergeben. Die Vorgehnsweise ist aber wirklich sehr sehr Anwendungs(bzw. vom Programmierer) abhängig.

Zu der Sache mit den Datenpaketen analysieren:
Die Daten werden doch nach dem Ausgang von meinem PC von dem Clienten gecrypted. Wie du schon gesagt hast weiß ich nicht welches Protokoll oder welche Verschlüsselung benützt wird.
Welchen Sniffer würdest du denn verwenden?
Mit etwas Glück ist der Schutz rudimentär und es wird nichts verschlüsslt (schließlich müsste es der Server entschlüsseln und das kostet so einiges an Rechenleistung). Und ja, zum Prüfen sollte Wireshark schon ausreichend sein.
 
Wenn der Client die Funktion enthält und lediglich durch eine Serverantwort entsperrt (nicht entschlüsselt o.ä.) wird, kannst du einfach die Prüfung bzw. den rausspringenden Ast ausnoppen und schon ist die Sache gegessen.
 
Zurück
Oben