Seite 1 von 2

Verfasst: Sonntag 10. Juni 2007, 13:17
von mitsuhiko
Leonidas hat geschrieben:
blackbird hat geschrieben:OT: Warum sollte ein Passwort als Hash gespeichert sein?
Vielleicht wird das so zum Server übertragen? Aber ich finde das ohne Salt auch recht suspekt. Aber gut, ICQ wird ja sowieso unverschlüsselt übertragen, was will man da auch erwarten.
Jo. Weil wenn einfach nur der Hash übertragen wird brauchst du da ja gar nix zurückrechnen, einfach den Hash klauen.

Verfasst: Sonntag 10. Juni 2007, 13:23
von Costi
waere das der richtige ansatz um ein md5 hash zu knacken?:
(achtung, "quick and dirty")

Code: Alles auswählen

from hashlib import md5

def getMD5(stri):
    m = md5()
    m.update(stri)
    return m.digest()

abc = '$abcdefghijklmnopqrstuvwxyz_1234567890'

def abc_iter():
    for i0 in abc: 
        for i1 in abc: 
            for i2 in abc: 
                for i3 in abc: 
                    for i4 in abc:
                        yield i0+i1+i2+i3+i4.replace('$', '')

for i in abc_iter():
    if getMD5(i) == '\xcd\xd4\x2c\x2d\x32\xd7\xa8\x8d\xa0\xb0\xb5\xd5\xfe\x7d\xe8\xde':
        print i

Verfasst: Sonntag 10. Juni 2007, 13:34
von cyp++

Code: Alles auswählen

import md5

for i in range(len(md5.new("XXXXXXXX").digest())):
	print ord(md5.new("XXXXXXXX").digest()[i])
>>>28
>>>110
>>>72
>>>132
>>>73
>>>227
>>>116
>>>26
>>>153
>>>147
>>>136
>>>247
>>>189
>>>125
>>>7
>>>174

Verfasst: Sonntag 10. Juni 2007, 13:35
von birkenfeld
@cyp++: was soll uns das jetzt sagen?

Verfasst: Sonntag 10. Juni 2007, 13:39
von cyp++
ich habe geguckt was rauskommt wenn ich es selbst verschlüssel.. dabei kommt leider nicht das raus, was in der Registry steht, evtl. könnte man md5 jetzt ausschließen?

Verfasst: Sonntag 10. Juni 2007, 13:43
von Sr4l
lumax hat geschrieben:
Sr4l hat geschrieben:Man kann höchstwahrscheinliche Werte für einen kurzen Md5 Hash zurück errechnen mehr aber auch nicht.
Sowas wie kurze MD5-Hashes gibt es nicht, ein MD5-Hash ist immer 128 Bit lang. Und zurueckrechnen kann man da nichts, das ist ja das Wesen solcher Algorithmen. Alles, was du machen kannst, ist Bruteforcen oder in vorhandenen Tabellen mit MD5-Hashes und entsprechenden Strings nachgucken.
natürlich meinte ich kurze Passwörter die in MD5 gehasht sind wenn aus 16bit Passwort 128bit hash werden kann man es recovern. Wenn aber aus einder 5MB Datei ein 128bit hash erzeugt wird kann man sie wohl nicht mehr wieder herstellen, sonst wäre es ja die geilste Methode um etwas zu zippen ;-)

*edit: hehe

Verfasst: Sonntag 10. Juni 2007, 13:59
von veers
lumax hat geschrieben:
veers hat geschrieben:Naja im Falle von MD5 gibt es da ja noch weitere Attacken.
z.B.? Okay, es gibt natuerlich Erweiterungen der Konzepte, die ich gepostet habe, aber sonst? So Sachen wie Kollisionen z.B. helfen dir ja nicht weiter, wenn du einen Hash knacken willst.
Grundsätzlich gilt eine Kollision schon als "geknackt". Aber es kommt natürlich auf die Anwendung an. Für ein Challenge Response System müsste das ganze immernoch tun ;)

10 Bit Passwort? 1.25 Buchstaben? *g*

Verfasst: Sonntag 10. Juni 2007, 14:06
von birkenfeld
cyp++ hat geschrieben:ich habe geguckt was rauskommt wenn ich es selbst verschlüssel.. dabei kommt leider nicht das raus, was in der Registry steht, evtl. könnte man md5 jetzt ausschließen?
Nein.

Verfasst: Sonntag 10. Juni 2007, 14:07
von cyp++
birkenfeld hat geschrieben:
cyp++ hat geschrieben:ich habe geguckt was rauskommt wenn ich es selbst verschlüssel.. dabei kommt leider nicht das raus, was in der Registry steht, evtl. könnte man md5 jetzt ausschließen?
Nein.
wieso nicht?

Verfasst: Sonntag 10. Juni 2007, 14:09
von birkenfeld
Wieso muss der MD5 genau über dein Passwort erstellt werden? Es gibt z.B. das Konzept des "Salt", also einem bekannten String, der vor dem Hashen z.B. vorangestellt wird.

Verfasst: Sonntag 10. Juni 2007, 14:10
von Sr4l
Es kann ja auch sein das sie nicht nur dein Passwort allein nehmen.

Zum Beispiel ist dein Passwort hallo

dann wird vielleicht
"halloICQ"
verschlüsselt schon kommt etwas ganz anderes heraus

***edit***
das geht hier ja ab wie in einem chat ;-)

Verfasst: Sonntag 10. Juni 2007, 14:11
von cyp++
Achso, stimmt.

Verfasst: Sonntag 10. Juni 2007, 14:29
von mq
veers hat geschrieben:Grundsätzlich gilt eine Kollision schon als "geknackt". Aber es kommt natürlich auf die Anwendung an. Für ein Challenge Response System müsste das ganze immernoch tun ;)
Joa, dass das ganze kryptografisch gesehen nicht mehr wirklich sicher ist, ist wohl unbestritten. Ich ging aber vom konkreten Anwendungsfall hier aus, und da ist so eine Kollision herzlich egal, bei der Wiederherstellung hilft die ja nicht.

Verfasst: Sonntag 10. Juni 2007, 14:43
von Leonidas
Naja, stellt euch vor, wir haben eine Rainbowtable in der der Hash drinsteht und ein 2000 Zeichen langer Text als "Schlüssel". Wenn ICQ nur hashes übertragen würde, dann würde dieser Text auch als Passwort durchgehen, unabhängig davon ob er es nun ist oder nicht.

Weiß eigentlich jemand, wie das OSCAR-Protokoll nun die Passwörter genau überträgt?

Verfasst: Sonntag 10. Juni 2007, 15:05
von veers
Leonidas hat geschrieben:Weiß eigentlich jemand, wie das OSCAR-Protokoll nun die Passwörter genau überträgt?
http://developer.pidgin.im/viewmtn/revi ... ily_auth.c
;)
Alt: xor "verschlüsselung" (Aua?!)
Neu: MD5(password + "AOL Instant Messenger (SM)") (Immernoch Aua?!)

So hab ich den source zumindest auf die schnelle Interpretiert.

Verfasst: Sonntag 10. Juni 2007, 15:21
von Leonidas
Ich muss zugeben, bei Funktionsnamen wie ``goddamnicq`` und ``goddamnicq2``muss ich grinsen :)

Verfasst: Sonntag 10. Juni 2007, 17:04
von querdenker
Das erinnert an ein ehemals fest eingebautes user/pass-Paar in alten Interbase-Versionen: politcaly/incorrect

Es scheint, als manche Programmierer ihre Stimmung nutzen, um Passwörter zu generieren :)

Verfasst: Sonntag 10. Juni 2007, 17:47
von Y0Gi
Auch wenn ich einiges wiederhole:

MD5 und andere Hash-Verfahren sind Einwegverfahren und nicht umkehrbar. Unterschiedliche Klartexte können auch identische Hashes haben (Kollisionen).

Hashes kann man, wenn der jeweilige Algorithmus keine mathematischen Schwächen hat, nur durch Brute-Force knacken - aber auch nicht sicher auf den Klartext schließen (wegen der möglichen Kollisionen). Durch andere mathematische Schwächen kann man aber den für Angriffe notwendigen Aufwand verkürzen.

Wer's eilig hat, kann Rainbow Tables - vorberechnete Hashes zu Strings - konsultieren und so schnell mögliche Klartexte finden (sofern diese auch vorberechnet wurden). Ein paar Gigabyte kommen da aber für nicht allzu komplexe Strings schnell zusammen.

Was ICQ angeht wurden die Passwörter, bevor man MD5 verwendete, in der Tat über XOR "verschlüsselt". Um solche Chiffren zu dekodieren, sollte dir dieser Code von mir behilflich sein.

Möglicherweise kannst du ICQ dazu bringen, das Passwort über die alte Methode zu chiffrieren - sofern es denn in wiederherstellbarere Form vorliegt, die ein Client dazu nutzen kann. Bspw. habe ich mit Miranda-IM das Passwort geXORt versenden und mitsniffen können.

Verfasst: Sonntag 10. Juni 2007, 19:37
von Sr4l
andere Möglichkeit:
du schreibst ein Script das das Passwort ändert angefangen bei 0 aufgehört bei ZZZZZZZZZZ (mit allen möglichen Zeichen und in groß und klein) und nach jedem Passwort ließt du die Daten aus aus und speicherst sie, dann kann dir egal sein welche Verschlüsselung angewendet wurde.

Zu Prüfen ist nur ob ein und das selbe Passwort bei verschiedenen Usern auch den gleichen Hash hat, evt auch auf verschiedenen Rechnern prüfen sonst war alles umsonst.

Ich wollte mich selber mal dran machen bekomme aber kein ICQ 6 auf Wine installiert. Das 2003er müsste gehen wenn ich IE 5 drauf bekomme.

Verfasst: Sonntag 10. Juni 2007, 20:20
von CrackPod
Maöl ne dumme Frage:
Wenn du dein Passwort nichtmehr weist, wieso holst du dir nicht einfach ein neues?
https://www.icq.com/password/
LG