Come posso scoprire gli schemi di hashing della password usati dagli account Unix specifici per il login?

11

Ogni giorno I ssh in 3 o 4 account Unix indipendenti. Li ho considerati più o meno come "equivalentemente sicuri" sulla base del fatto che sto usando ssh , ma dopo aver appreso di quanta varietà ci sia negli schemi di criptaggio della password e della loro resistenza contro gli attacchi del dizionario, ho diventare molto più interessato ad apprendere i dettagli specifici per i sistemi che uso.

Ho trovato alcuni riassunti troppo brevi di ciò che alcuni sistemi operativi utilizzano per impostazione predefinita (ad esempio, vedere qui ), ma mi piacerebbe qualcosa di più dettagliato. Ancora più importante, sono meno interessato a ciò che i vari sistemi operativi fanno "out-of-the-box" rispetto a ciò che i sistemi specifici di accesso per fare. C'è un modo standard per trovare queste informazioni?

(Spero che questa domanda non sia troppo ingenua Sì, certo, un password cracker vorrebbe anche sapere le informazioni che sto chiedendo, ma la mia comprensione è che nessuno schema di gestione delle password progettato con competenza dipende dal suo essere Quindi, mi aspetto che le informazioni che sto cercando siano prontamente disponibili per gli utenti di un sistema.)

    
posta kjo 03.01.2015 - 17:42
fonte

2 risposte

13

Versione breve:

    I contenuti di
  1. / etc / shadow ti indicheranno il formato utilizzato da ciascun utente, ma ha bisogno di root per vederli - @MikeScott lo inchioda.
  2. I file
  3. /etc/pam.d/* ti diranno in che formato un sistema codifica nuove password con e dovrebbe essere accessibile agli utenti regolari, che potrebbero essere tutto ciò che possiedi.

Versione lunga:

La maggior parte dei moderni sistemi Unix e Linux utilizzano PAM, i moduli di autenticazione pluggable, per la gestione dell'autenticazione. Di conseguenza, l'algoritmo di hashing utilizzato per crittografare le password viene in genere definito in uno dei file /etc/pam.d/*. Sbirciando su Ubuntu 14, vedo che è nel file /etc/pam.d/common-password:

# Explanation of pam_unix options:
#
# The "sha512" option enables salted SHA512 passwords.  Without this option,
# the default is Unix crypt.  Prior releases used the option "md5".
#
password    [success=1 default=ignore]  pam_unix.so obscure sha512

Quindi, su questo sistema, le voci nel file / etc / shadow dovrebbero avere password che iniziano con $ 6 $. Se guardo / etc / shadow come root, posso vedere che in effetti tutte le (entrambe) password di questo sistema sono sha512:

# awk -F: '$2 ~ /^\$/ {print $2}' /etc/shadow | cut -c-10
$6$6I2Lrdb
$6$tvKWuGb
# 

Essendo Pam così flessibile, scoprirai che si trova in un file diverso su ogni tipo di sistema che guardi. Sotto RedHat, ad esempio, sembra essere /etc/pam.d/system-auth.

Questo ti dice quale hash della password verrà creato quando una nuova password è impostata su questo sistema. Gli hash delle password effettivi in uso varieranno a seconda di dove o quando sono venuti. Se un sistema utilizzava MD5 e passa a SHA512, allora non tutti gli hash cambiano - il vecchio hash rimane in uso fino alla prossima volta che un utente cambia la sua password. Se gli hash vengono copiati da altrove (sì, succede) puoi ottenere un vero e proprio melange di hash delle password. Ecco perché il formato utilizzato è codificato nella stringa di password con hash ($ 6 $, $ 1 $, ecc. Ecc.), Quindi il sistema sa come testarlo.

Quindi l'unico modo per sapere con certezza quale hash si sta usando è avere i privilegi di root (e guardare il proprio hash in / etc / shadow), o vedere quale sia il default del sistema è (in /etc/pam.d/*) e cambia la tua password in modo che l'impostazione predefinita si applichi a te.

Etcetera

Come sottolineato da @grawity nei commenti, i vecchi sistemi / distribuzioni Linux possono ancora onorare ENCRYPT_METHOD impostazione nel file /etc/login.defs . (Questo file e le impostazioni sono ancora lì su nuovi sistemi, è più o meno silenziosamente deprecato se PAM è in uso).

E anche se Solaris ha usato PAM l'ultima volta che ho controllato, un po 'di Google suggerisce che per cambiare il tipo di hash della password predefinito dovresti invece cambiare CRYPT_DEFAULT in /etc/security/policy.conf .

AIX ride di fronte a ciò che passa per gli standard Unix in questi giorni, proprio come hanno sempre fatto. L'impostazione pwd_algorithm in /etc/security/login.cfg farà il trucco per AIX 5.3 +.

In generale, comunque, qualsiasi variante Unix che supporti più di DES fornirà un metodo per configurare l'impostazione predefinita del sistema. Se esegui sistemi non menzionati qui, modifica questo Google cerca e guarda cosa puoi scoprire.

    
risposta data 03.01.2015 - 20:18
fonte
9

Se hai accesso root, usalo su cat /etc/shadow (sulla maggior parte dei gusti Unix) e dai un'occhiata a questo. Il secondo campo nel file è la password hash per ogni utente ed è generalmente separato da $ segni in tre parti, che sono l'algoritmo di hashing, il sale e l'hash stesso (se non ha la prima sezione quindi usa l'algoritmo hash predefinito, che è DES). $0$ è DES, $1$ è MD5, $2$ e $2a$ sono Blowfish, $3$ è NT Hash, $5$ è SHA-256 e $6$ è SHA-512.

    
risposta data 03.01.2015 - 18:02
fonte

Leggi altre domande sui tag