Packet Encryption

02/19/2007 12:08 Leonino#1
so heute mal nichts zu tun also hab ich mal nach einem opfer ausschau gehalten und stieß dabei auf steam

steam ist wie vermutlich jeder weiß eine online platform zum kaufen und spielen von spielen

einige dinge die ich mir ueberlegt hab:
steam bruter
no-recoil hack fuer cs

ein steam bruter gab es soweit ich weiß noch nicht und koennte sich als sehr nuetzlich erweisen natuerlich sollte er interface unabhaengig sein und rein auf packet basis arbeiten
keke wireshark angeschmissen packets abgefangen die entsprechenden wichtigen login packets hab ich schon gefunden allerdings in ziemlich verschluesselter form(nehm ich mal an)
somit im endeffekt wertlos

no-recoil hack sowas aehnliches gibt es ja bereits allerdings nur auf clientside basis und bisher haben die weder bei mir funktioniert noch hab ich sie verstanden
dinge dich ich weiß sind das bei jeden "schusspacket" ein recoilwert mitgesendet wird es muesste also moeglich sein diesen zu manipulieren und somit den rueckstoss permanent bei null zu halten

das sind so meine ueberlegungen zu thema
probleme
1. die encryption irgendwo in der PE muesste die decryption vorgang ja gespeichert sein nur wo?
und die steam encryption ist doch hoechstwahrscheinlich mit der von cs identisch?
zum thema packet encryption hab ich auch allgemein nichts gefunden
2. ich hab mal ein wenig nachgedacht und hab festgestellt das man cs immernoch starten und spiel kann wenn steam schon seit tagen an ist und man eingeloggt war(inklusiv ruhezustand vom pc)
ich glaube kaum das die steam server solange festhalten ob man irgendwann mal eingeloggt hat
der client reagiert ja auf packets die "reinkommen"
angenommen so ein bestaetigungspacket des des logins wird empfangen muesste der client ja entsprechend sich einloggen egal woher dieses packet nun gekommen ist
das zusammen mit meiner theorie das steam nicht wirklich kontrolliert ob man eingeloggt ist eroeffnet einem interessante moeglichkeiten
leider hab ich noch nirgendwo eine moeglichkeit gefunden programmen vorzugaukeln packets kaemen von irgendwo

so ich hoffe mal ihr habt antworten =D
02/21/2007 10:36 Adroxxx#2
Hier mal paar basic tuts:

[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]

hoffe die helfen dir ;)
02/21/2007 22:05 SilonVier#3
Quote:
Originally posted by Leonino+Feb 19 2007, 12:08--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE (Leonino @ Feb 19 2007, 12:08)</td></tr><tr><td id='QUOTE'>ein steam bruter gab es soweit ich weiß noch nicht und koennte sich als sehr nuetzlich erweisen natuerlich sollte er interface unabhaengig sein und rein auf packet basis arbeiten[/b]

Ich vermute Steam lässt pro IP innerhalb eines bestimmten Zeitraums nur wenige Loginversuche zu. Eine gute und kurze Wordlist mit ein paar Verbindungen zu Proxys würde vielleicht in einem angemessenen Zeitraum Erfolg haben. Viel mehr Erfolg würdest du haben mit einer HTML Seite und dort mit einer Exe-Datei die "Passwörter von geknackten Accounts.pdf.exe" heisst.

achja: [Only registered and activated users can see links. Click Here To Register...]

Quote:
Originally posted by -Leonino@Feb 19 2007, 12:08
keke wireshark angeschmissen packets abgefangen die entsprechenden wichtigen login packets hab ich schon gefunden allerdings in ziemlich verschluesselter form(nehm ich mal an)
somit im endeffekt wertlos
Das die Logininformation nicht im Klartext übermittel wird ist zu erwarten (oder zu hoffen - aus welcher Sichtweise man das auch betrachtet).
Bei der Entwicklung eines Protokolls muss der Server verstehen was der Client ihm sendet und die meisten Protokolle nutzen dafür IDs. Meist findest du sie in den ersten paar byte des Packets, die nie verschlüsselt werden sondern nur der eigentliche Inhalt. Erfahrungsgemäß benutzen im Spielebereich nur wenige richtige Verschlüsselungsalgorithmen, weil es in Computerspielen keine sichere Verschlüsselung geben kann, unabhängig ob symetrisches oder asymetrisches Verschlüsselungsverfahren. Die Keylänge spielt eine genau so geringe Rolle. Man kontrolliert nämlich den Netzwerkverkehr (siehe hier man-in-the-middle-Angriffe auf Verschlüsselungssysteme) und dazu noch einen der Endpunkte.

Um herauszufinden in welchem Packet genau dein Benutzername und Passwort drin sein könnte (auch wenn das meist an der Größe erkennbar ist ;)), kannst du das ganz einfach testen. Zeichne eine Loginvorgang vollständig auf mit dem Passwort "foo" und einen zweiten Vorgang mit dem Passwort "foobar" und das Packet, was im Gegensatz zur vorherigen Aufzeichnung um 3 Stellen länger ist, ist warscheinlich das was du suchst.

Oder du zeichnest einen korrekten Loginversuch auf und dann einen mit einem falschen Passwort. Bei dem Packet vor der Anomalie (Server schickt dir ein denied) startest du deine Suche. Das ist eigentlich wirklich einfach.

Wenn du die ID hast, hängst du an den Prozess einen Debugger und setzt einen Breakpoints auf die Winsock API Funktionen die Packete senden und löst einen Breakpoint (int03) aus wenn ein Packet mit der entsprechenden ID gesendet wird. Danach schaust du dir den Callstack an und gehst so lange zurück und verfolgst den Inhalt bis er irgendwo manipuliert wird. Wenn du hier bist, hast du mit hoher Warscheinlichkeit die Stelle, wo der Inhalt "verschlüsselt" wird.

Ich würde dir jetzt 5-Zeilen Code tippen die du für das Tool was ich dir vor 20 Jahren gesendet habe reinpasten brauchst und du wärst schon beim letzten Schritt sein. Natürlich kommt niemand auf diese Idee, weil hier keiner einen Nutzen sieht. SilonNull verschickt ja sowieso nur scheisse :(

Quote:
Originally posted by -Leonino@Feb 19 2007, 12:08
1. die encryption irgendwo in der PE muesste die decryption vorgang ja gespeichert sein nur wo?
s. o.
Es kann auch nicht schaden mit einem Cryptotool nach Signaturen von Verschlüsselungsalgorithmen in einer exe/dll zu suchen. Wenn du fündig wirst und dieser Algorithmus für den Loginvorgang verwendet wird, dann bist du schon fast fertig ;)

<!--QuoteBegin--Leonino
@Feb 19 2007, 12:08
leider hab ich noch nirgendwo eine moeglichkeit gefunden programmen vorzugaukeln packets kaemen von irgendwo[/quote]
recv, recv, recv! :-)
02/22/2007 02:33 Leonino#4
@androxxx
die beiden tus sind teilweise recht aufschlussreich
danke

@silonvier
auch dir sei gedankt fuer die umfangreiche antwort

Quote:

Ich würde dir jetzt 5-Zeilen Code tippen die du für das Tool was ich dir vor 20 Jahren gesendet habe reinpasten brauchst und du wärst schon beim letzten Schritt sein. Natürlich kommt niemand auf diese Idee, weil hier keiner einen Nutzen sieht. SilonNull verschickt ja sowieso nur scheisse :(
hm rollen wir das kapitel nicht wieder auf
die "beziehung" war ja ganz offensichtlich inkompatibel =D
leider war ich so unvorsichtig dein prog zu loeschen
nu isses weg
schade ;)
komm aber auch ganz gut ohne zurecht


edit:
hab die steam.exe mal auf kryptoalgos gescannt dabei kam ne recht grosse list e raus

ADLER32 :: 000B20AF :: 004B20AF
List of primes [long] :: 001221E8 :: 005221E8
MD5 :: 000A05BC :: 004A05BC
RIJNDAEL [T1] :: 000DE728 :: 004DE728
SHA1 [Compress] :: 000A4136 :: 004A4136
SHA-256 [mixing] :: 000DDBA0 :: 004DDBA0
SHA-512/384 [mixing] :: 000DDCA0 :: 004DDCA0
ZLIB deflate [long] :: 000E1DB0 :: 004E1DB0
{Big number} :: 000E64D8 :: 004E64D8

kann ich davon irgendwelche auschschliessen?
und die hl.exe(cs) enthielt keine signaturen
obowhl der cstraffic ebenfalls verschluesselt ist
02/22/2007 08:52 SilonVier#5
Quote:
Originally posted by Leonino+Feb 22 2007, 02:33--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE (Leonino @ Feb 22 2007, 02:33)</td></tr><tr><td id='QUOTE'>hm rollen wir das kapitel nicht wieder auf
die "beziehung" war ja ganz offensichtlich inkompatibel =D[/b]

Und der Sex war auch nicht so der Beziehungsretter!

Quote:
Originally posted by -Leonino@Feb 22 2007, 02:33
leider war ich so unvorsichtig dein prog zu loeschen
nu isses weg
schade ;-)
komm aber auch ganz gut ohne zurecht
Dann ist ja gut :-)

Quote:
Originally posted by -Leonino@Feb 22 2007, 02:33

ADLER32 :: 000B20AF :: 004B20AF
List of primes [long] :: 001221E8 :: 005221E8
MD5 :: 000A05BC :: 004A05BC
RIJNDAEL [T1] :: 000DE728 :: 004DE728
SHA1 [Compress] :: 000A4136 :: 004A4136
SHA-256 [mixing] :: 000DDBA0 :: 004DDBA0
SHA-512/384 [mixing] :: 000DDCA0 :: 004DDCA0
ZLIB deflate [long] :: 000E1DB0 :: 004E1DB0
{Big number} :: 000E64D8 :: 004E64D8
kann ich davon irgendwelche auschschliessen?
Was Verschlüsselung angeht kannst du alle bis auf Rijndael/AES ausschließen. Ohne mir Steam genauer angeschaut zu haben, behaupte ich einfach das AES für den Loginvorgang benutzt wird und zLIB in Kombination mit Adler-32 für die reguläre Kommunikation zwischen deinem Steam-Client und dem Steam-Server. zLib könnte aber auch für beides verwendet werden. Big Number ...
Probiere es einfach mit einem Breakpoint aus (wenn dir die Checksummen nicht bereits hier dazwischenfunken) und damit hast du dann auch schon ggf. den Key.

<!--QuoteBegin--Leonino
@Feb 22 2007, 02:33
und die hl.exe(cs) enthielt keine signaturen
obowhl der cstraffic ebenfalls verschluesselt ist
[/quote]
Mit der Diablo.exe kam ich auch ins Internet obwohl hier keinerlei Winsock API Funktionen importiert u. aufgerufen werden. Die wurden in eine Dll ausgelagert :-)