• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

passwd

Chipsie

Newbie
Hallo liebe Linux Freaks,

weiß zufällig jemand wie man aus der passwd die Passwörter regenieren kann. Damit man sie anschließend als Klartext zur Verfügung hat.

Konnte unter den Links nichts finden.

Gruß
 

zero0109

Hacker
Geht meines Wissens nicht, da es sich um speziell generierte Quersummen handelt, auf die mehrere (oder sogar unendlich viele?) Passwörter passen würden.
 
Du kannst höchstens ein Script schreiben. Mit dem kannst du das Linuxpasswort ändern. Das Passwort wird dann in eine Datei in root - Ornder geschrieben und hat die Rechte 700. So kannst es machen. Ansonsten hast du keine Chance. Ich hab mal so ein Script geschrieben.
 
OP
C

Chipsie

Newbie
Soviel zum Thema Ausbilder.

Mein Ausbilder hat mir versichert, dass es geht. Der hat echt keine Ahnung von nichts, naja.

Wäre es arg aufwendig, wenn du mir das Skript zeigen könntest.

Gruß
 

stka

Guru
Die Verschlüsselung der Passwörter ist eine Einbahnstraße, einen Weg zurück gibt es nicht. Wenn du aber an die passwd und die shadow Datei eines Systems kommst, kannst du mit "John the ripper" versuche das Passwort zu ermitteln. Bei suse einfach bei der Softwareinstallation nach "john" suchen. Je schneller der Rechner um so schneller geht's.
 

poiin2000

Member
grep "^root" /etc/shadow > rootpass && chmod 400 rootpass && john rootpass && rm rootpass

Happy waiting ;)

---

if waiting equal/shorter as 2 minutes and the system is not a multi-cpu or a blade-server then is your password not secure ....
 

scg

Hacker
@Chipsie:
Sag deinem Ausbilder, wenn es geht, würden wir es gerne hier als Info aufnehmen. Wir sind ganz Ohr....
 

Martin Breidenbach

Ultimate Guru
Naja.... man kann solange Paßwörter durchprobieren bis der selbe Hash-Wert rauskommt. Damit hat man nicht unbedingt das identische Paßwort aber wohl eines das funktioniert. Und was will man denn mehr...
 

regexer

Advanced Hacker
Chipsie schrieb:
Mein Ausbilder hat mir versichert, dass es geht. Der hat echt keine Ahnung von nichts, naja.
Das mag für die jetztigen Linuxe zutreffen. Früher war das aber auf diversen Unix-Systemen anders. Ich habe einmal auf einem Unix von digital gearbeitet, dass die Passwörter durch "crypt" geschickt hat und dann in die /etc/passwd geschrieben hat. Das ist dann auf alle Fälle knackbar (was für ein Wort!).
 

nbkr

Guru
zero0109 schrieb:
Geht meines Wissens nicht, da es sich um speziell generierte Quersummen handelt, auf die mehrere (oder sogar unendlich viele?) Passwörter passen würden.

Äh, nö. Diese "Quersumme" ist entweder mit Standard DES oder MD5 erstellt worden. Das sind beides Algorhythmen die eindeutige Hashes (so heißt die Quersumme in dem Fall eigentlich) generieren. Zwar sind bei MD5 (und vermutlich auch bei Standard DES) inzwischen Kollisionen gefunden worden, d.h. es gibt tatsächliche 2 verschiedene Strings die den gleichen Hashwert ergeben, aber das ist die Außnahme und auch eigentlich ein Bug im Algorhythmus.

Übrigens wird MD5 auch dazu verwendet Hashes von Dateien (z.B. RPM Paketen) zu erstellen. Diese dienen dazu festzustellen, dass das Paket nicht verändert wurde. Diese Summen müssen also eindeutig sein.
 

TeXpert

Guru
nbkr schrieb:
Zwar sind bei MD5 (und vermutlich auch bei Standard DES) inzwischen Kollisionen gefunden worden, d.h. es gibt tatsächliche 2 verschiedene Strings die den gleichen Hashwert ergeben, aber das ist die Außnahme und auch eigentlich ein Bug im Algorhythmus.

Übrigens wird MD5 auch dazu verwendet Hashes von Dateien (z.B. RPM Paketen) zu erstellen. Diese dienen dazu festzustellen, dass das Paket nicht verändert wurde. Diese Summen müssen also eindeutig sein.

langsam mein junger Padawan ;), Hash-Funktionen sind a priori nicht Kollisionsfrei, je nach Einsatz muss dabei mehr oder weniger intelligent gearbeitet werden.

z.B. bei Dictionaries -> nimm einen weiteren 'freien' Hash-Wert, die Kollision kann also z.B. durch index+1 umgangen werden (einfach und nicht immer zuverlässig)

bei der Überprüfung von Paketen spielt das aber keine Rolle, denn es geht darum, ob ein Paket noch den gleichen Hashwert generiert, seien PaketA.rpm mit einem Hash von 12345 und PaketB.rpm mit einem Hash von 12345 beide ungleich, dann ist das völlig egal. denn wenn es geht um 'einzelne' Bits, dass ein Programm A durch übertragungsfehler zu Programm B wird ist sowas von unwahrscheinlich..... das es dafür kaum eine Zahl gibt

d.h. Wenn beim Transfer von PaketA und B jeweils n Bits kippen, dann stimmt der neue Hash-Wert nichtmehr, da eine Hashfunktion zum Glück eine determinstische, injektive Funktion ist, kann ich jedes mal den gleichen Hashwert berechnen (egal wieviele andere Pakete den gleichen haben) d.h. ich kann Änderungen erkennen.

Insbesondere ist die fehlende Kollisionsfreiheit offensichtlich, nimm einen normalen md5-Hash, der hat die Länge von 32 Zeichen, Du kannst hier also n^32 verschiedene Worte (n als möglcihe Zeichen) darstellen, da Du beliebige Eingaben hashen kannst, kannst Du auch mehr als n^32 verschiedene Eingaben hashen, ergo muss eine Kollision auftreten.
 

panamajo

Guru
notoxp schrieb:
Ich habe einmal auf einem Unix von digital gearbeitet, dass die Passwörter durch "crypt" geschickt hat und dann in die /etc/passwd geschrieben hat. Das ist dann auf alle Fälle knackbar (was für ein Wort!).
Wie kommst du darauf? Es existiert immer noch kein uncrypt().
Also bleiben nur Brute-Force Attacken (solange Passwörter mit crypt() verschlüsseln bis der Hash auf eines der PW passt - viel Spaß dabei).
 
Auf Digital ist "crypt" ein symetrisches Verfahren.

"crypt key < input.File > output.File"

Aber mir ist zumindest aus den letzten 10 Jahren nicht bekannt,
daß dort so etwas für /etc/passwd genutzt wurde.
Und vor 18 Jahren gab es schon die jetzigen Verfahren unter Unix.

Ich würde mal so behaupten den "Einweg" Algorithmus gibt es schon
seit UNIX entstanden ist.

@notoxp, wann war das denn ?

Haveaniceday
 

TeXpert

Guru
haveaniceday schrieb:
Auf Digital ist "crypt" ein symetrisches Verfahren.

"crypt key < input.File > output.File"

was soll das mit Symmetrie zu tun haben?

es wäre ein symmetrisches Verfahren, wenn es eine bijektive Funktion wäre, also:
Code:
crypt(crypt(A)) == A
wenn ich mich richtig erinnere ist das Problem von crypt, dass nur 8 Zeichen des Inputs relevant sind, d.h. nur n^8 verschiedene Worte werden Produziert...
 
Code:
cat file | crypt "meinschluessel" > file.crypt 
cat file.crypt  | crypt "meinschluessel" > file.copy

file und file.copy sind identisch.

Zitat aus dem "man":
Code:
The crypt command implements a one-rotor machine designed along the lines of the German Enigma, but with a 256-element rotor.

Aber ich kann mir nicht vorstellen, dass dieses Tool zum verschlüsseln der Passwörter genutzt wurde.

Haveaniceday
 

panamajo

Guru
TeXpert schrieb:
wenn ich mich richtig erinnere ist das Problem von crypt, dass nur 8 Zeichen des Inputs relevant sind, d.h. nur n^8 verschiedene Worte werden Produziert...
n^8 wäre ein bißchen wenig :shock:
Es ist allerdings richtig dass crypt() nur eine begrenzte Anzahl verwendet. Bei DES-Crypt sind das konstant 8 Zeichen (kürzerer Input wird durch Wiederholung auf 8 Zeichen gebracht, d.h. crypt("otto") == crypt("ottootto")), neuere Versionen wie MD5-Crypt (Std. unter FreeBSD und für Linux empfohlen) können auch mehr signifikante Stellen verarbeiten. Ist eben speziell für PW gedacht, also im Gegensatz zu MD5 nicht für beliegig langen Input geeignet.
Wichtig ist aber: crypt() generiert Hashes abhängig von der Systemzeit (sog. "salt"), d.h. crypt("foo") != crypt("foo") 1s später (im Gegensatz zu MD5).
Damit ist das Knacken der PW an Hand des Hashes erheblich erschwert, da erst nachdem man den Salt kennt (steht am Beginn des Hashes) angefangen werden kann speziell für diesen eine Brute Force Attacke zu starten. Dazu kommt noch dass crypt() vergleichsweise rechenintensiv ist...
 

panamajo

Guru
haveaniceday schrieb:
Code:
cat file | crypt "meinschluessel" > file.crypt 
cat file.crypt  | crypt "meinschluessel" > file.copy

file und file.copy sind identisch.

Zitat aus dem "man":
Code:
The crypt command implements a one-rotor machine designed along the lines of the German Enigma, but with a 256-element rotor.

Aber ich kann mir nicht vorstellen, dass dieses Tool zum verschlüsseln der Passwörter genutzt wurde.

Haveaniceday
Äh, das crypt das du hier verwendest ist IIRC eine Abart von rot13. Hat mit dem PW crypt() nix zu tun.
 

TeXpert

Guru
naja, etwas besser als ROT13 ist das schon ;) http://de.wikipedia.org/wiki/Enigma_%28Maschine%29
Noch heute wird eine (entfernte) Software-Variante dieser Maschine in einigen Unix-Systemen verwendet (crypt).

und das ist wirklich ein kryptographisches und kein Hash-Verfahren, bei gleichem Salt (aka gleiche Rotorstellung bei der Enigma) ist das naürlich umkehrbar.
 
notoxp schrieb:
Das mag für die jetztigen Linuxe zutreffen. Früher war das aber auf diversen Unix-Systemen anders. Ich habe einmal auf einem Unix von digital gearbeitet, dass die Passwörter durch "crypt" geschickt hat und dann in die /etc/passwd geschrieben hat. Das ist dann auf alle Fälle knackbar (was für ein Wort!).

@panamajo,

Ich wollte eigentlich nur sagen das ich mich über die Digital crypt-Aussage von notoxp wundere. Ich kann mir nicht vorstellen, dass dieses crypt
zur Passwortverschlüsselung genutzt wurde.

Haveaniceday

PS: Aber crypt gibt es dort in unterschiedlichen Versionen *confusing*
Code:
man -k crypt
crypt (1)               - encode/decode
crypt, crypt16, setkey, encrypt (3) - DES encryption
des_crypt, des_string_to_key, des_is_weak_key, des_key_sched, des_quad_cksum (3)    - Data Encryption Standard (DES) encryption library routines (Auth)
 
Oben