Code zum Generieren von "geheimen" Cisco-Passwort-Hashes?

12

Hat jemand einen Zeiger auf Code (oder nur den Algorithmus), mit dem Cisco seine Kennwort-Hashes für Dinge wie "Enable Secret" generiert?

Ich versuche nicht, in irgendetwas einzubrechen; Ich versuche die entsprechende "Enable Secret" -Zeile mit einem Klartext-Passwort zu generieren. ohne eine vorhandene "Enable Secret" -Zeile mit einem Hashing-Kennwort zu dekodieren. Ich benötige dies für einen automatisierten Konfigurationsdatei-Generator, an dem ich arbeite ( Netomata Config Generator ).

Grundsätzlich möchte ich das Cisco-Äquivalent des Befehls "htpasswd", der für Webserver verwendet wird.

Wenn ich beispielsweise den folgenden Befehl mit einem Klartextkennwort in eine Cisco-Konfiguration einfüge:

enable secret foobar

Wenn ich dann den Befehl 'show config' ausführe (vorausgesetzt, ich habe die "Dienstkennwortverschlüsselung" aktiviert), sehe ich Folgendes:

enable secret 5 $1$pdQG$0WzLBXV98voWIUEdIiLm11

Ich möchte Code, der "foobar" in "5 $ 1 $ pdQG $ 0WzLBXV98voWIUEdIiLm11" übersetzt, damit ich die bereits gehashten Passwörter in meinem Konfigurationsgenerierungstool generieren kann, anstatt Klartext-Passwörter in die generierten Konfigurationen zu setzen und auf den Router zu warten generiere den Hash.

Ich gehe davon aus, dass die "5" im Hash-Ergebnis eine Art Hash-Algorithmus-ID ist. Wenn es andere Hash-Algorithmen gibt, die Cisco derzeit oder in der Vergangenheit verwendet hat, möchte ich auch den Code für diese Algorithmen haben.

Brent Chapman
quelle

Antworten:

18

Laut dieser Website bietet das OpenSSL-Befehlszeilendienstprogramm die Funktionen, die Sie benötigen:

$ openssl passwd -1 -salt pdQG -table foobar
foobar  $1$pdQG$0WzLBXV98voWIUEdIiLm11
$

Und vermutlich gibt es eine äquivalente Funktion in der Bibliothek.

Ich bin mir nicht sicher, ob Sie unter IOS bestimmte Salt-Werte verwenden müssen, aber technisch gesehen gibt es keinen Grund, warum dies so lange sein sollte, wie die Zeichenfolge, die Sie in Ihrem Befehl 'enable secret' angeben, ein gültiger MD5-Kennwortauszug ist. Wenn Sie die Möglichkeit zum Testen haben, würde ich mich über Ihre Ergebnisse freuen.

Murali Suriar
quelle
11

Cisco scheint ein 4-stelliges Salt zu erfordern. Standardmäßig wird ohne das Argument " -salt salt " opensslein Salt mit 8 Zeichen generiert.

Sie können jedoch opensslwie folgt einen Cisco-kompatiblen Hash von "Klartext" mit einem geeigneten zufälligen 4-Zeichen-Salt generieren:

openssl passwd -salt `openssl rand -base64 3` -1 "cleartext"

Der openssl rand -base64 3Unterbefehl " " generiert 3 zufällige Bytes und codiert sie dann im base64-Format, wodurch Sie 4 druckbare Zeichen erhalten (genau das, was Sie für ein Cisco-kompatibles Salt benötigen).

Vielen Dank an Murali Suriar für die Antwort (an anderer Stelle auf dieser Seite), mit der ich den richtigen Weg zu dieser Lösung eingeschlagen habe.

Brent Chapman
quelle
3

5 Ich glaube, bezieht sich auf die Tatsache, dass es sich um Typ 5 handelt, der MD5 verwendet, was bedeutet, dass Sie 300 Playstation 3s benötigen . Typ 7 ist leicht zu knacken und sie haben sogar Skripte auf Websites dafür. Dies könnte besser auf Stackoverflow gefragt werden.

Terry
quelle
1
+1 für die lustige Antwort :) Seltsamerweise gibt mir das auch Hoffnung, dass ich vielleicht jetzt, wenn ich diesen Artikel verwende, meinen Chef dazu bringen kann, uns Playstations zu kaufen ..
Greg Meehan
3

Hier ist eine gute Referenz http://haxcess.com/2008/10/21/cisco-password-recovery/

Unterm Strich ist der Hash in einige Teile zerlegt

  -> Indicates MD5 algorithm
 |   -> Salt
 |  |     -> Salt + Password Hash
 |  |    |
$1$mERr$RchIrJirmCXltFBZ2l50l/

Hier ist eine Perl-Lösung, die in der Vergangenheit für mich Wunder gewirkt hat. Setze dieses Baby in eine Schleife und lass es rennen.

#!/usr/bin/perl
use Crypt::PasswdMD5;
my $hash = unix_md5_crypt('password','salt')
ZnArK
quelle
1

'5' bedeutet, dass das Löschkennwort in ein Cisco-Kennwort vom Typ 5 konvertiert wurde. Das Kennwort vom Typ 5 ist ein MD5-basierter Algorithmus (ich kann Ihnen jedoch nicht sagen, wie er berechnet werden soll, sorry). Typ 7, der bei der Eingabe eines "Enable Password" verwendet wird, ist ein bekannter umkehrbarer Algorithmus. "Service-Passwort-Verschlüsselung" stellt nur sicher, dass das Passwort nicht in Klartext gespeichert wird (Typ 0)

Schauen Sie sich http://en.wikipedia.org/wiki/Crypt_(Unix)#MD5-based_scheme an und viel Glück :)

BEARBEITEN: Sie können auch nach http://www.h4x3d.com/md5-and-crypt-password-generator/ , http://www.koders.com/c/fid530E8983791E1CB2AB90EAA69A68789FA2A83A6D.aspx und http: //www.cryptgenerator/ suchen .de /

Radius
quelle