Come impostare un algoritmo di hashing della password estremamente debole per linux?

4

Come parte di un esercizio di laboratorio, voglio avere un hash di password estremamente debole nel file / etc / shadow. Come potrei andare a fare questo? MD5 non è abbastanza debole, e sto modificando il file /etc/pam.d/common-password per modificare l'algoritmo di hashing. Stavo pensando che avrei fatto descrypt ma non riesco a farlo funzionare.

Qualche idea?

    
posta Joe Smith 17.02.2017 - 17:36
fonte

1 risposta

5

Potrebbero esserci altre possibilità a seconda degli obiettivi e delle ipotesi del tuo esercizio di laboratorio. Supponendo che Ubuntu moderna (come dice il tuo commento successivo), descrypt di azioni con un sale comune è probabilmente il più debole che puoi usare in modo nativo con il supporto completo :

$ echo -n 'password' | mkpasswd -s -S '00' -R 1 -m des
00xQPHYlVDIw6

dettagli:

L'implementazione moderna di crypt di Ubuntu cerca di impedirti di creare hash troppo deboli di design.

Oltre alla crittografia Unix nativa (descrypt), Ubuntu 16.04 ha le seguenti opzioni, da crypt (3):

          ID  | Method
          ─────────────────────────────────────────────────────────
          1   | MD5
          2a  | Blowfish (not in mainline glibc; added in some
              | Linux distributions)
          5   | SHA-256 (since glibc 2.7)
          6   | SHA-512 (since glibc 2.7)

In primo luogo, sul sale. Sembra che tu stia solo generando un singolo hash. Se stavi generando molti hash, potresti usare lo stesso sale fisso / statico per tutti loro, il che renderebbe l'attacco più veloce. Userò un sale di tutti gli zeri per semplicità.

descrypt potrebbe non essere più riconosciuto. /etc/pam.d/common-password fa riferimento a "Crittanza Unix" come predefinito, ma questo potrebbe significare "la cripta di sistema predefinita del sistema operativo" piuttosto che il descrypt classico. descrypt sarebbe sicuramente il più debole se il sistema lo supporta:

$ echo -n 'password' | mkpasswd -s -S '00' -R 1 -m des
00xQPHYlVDIw6

Nota : nei miei test, ero ancora in grado di utilizzare una password descrypt per accedere a un sistema Ubuntu. Puoi provare a decodificare, ma la documentazione di PAM non lo elenca esplicitamente, quindi potrebbe o potrebbe non funzionare per i tuoi scopi .

Blowfish / bcrypt (2a e / o 2y) è di gran lunga il più lento, e non sembra essere supportato in Ubuntu, quindi lo scarteremo.

MD5crypt ha un numero fisso di round (1000), che è uno dei motivi per cui ora è deprecato . Ed è più veloce (e quindi più debole) rispetto a SHA-256 o SHA-512.

$ echo -n 'password' | mkpasswd -s -S '00000000' -m md5
$1$00000000$5ybxs8yjIGjFJv4/CuHRd1

Tra SHA-256 e SHA-512, SHA-256 è un hash più veloce e quindi sarebbe teoricamente più "debole" per i tuoi scopi.

Ho controllato per vedere se potevo rendere gli SHA più deboli riducendo il numero di round. Non sembra esserci un modo semplice / ingenuo di fare questo. Il comando nativo di Ubuntu mkpasswd chiama la funzione di crittografia sottostante, che ignora i valori di -R sotto 1000 in base alla progettazione:

SHA-256:

$ echo -n 'password' | mkpasswd -s -S '00000000' -R 1 -m sha-256
$5$rounds=1000$00000000$2h.5f29uvvoub7RFoFxxMG4Yg43KX3rL0rF8vn3CIPC

SHA-512:

$ echo -n 'password' | mkpasswd -s -S '00000000' -R 1 -m sha-512
$6$rounds=1000$00000000$hNBmdrAfQPp5VkP/POLNOo3Dv1tVsOORYGE4pKarVzYs43iS2GdEkUrPU2Xbo6m5mX8PPDPfcQvFKo7Ktar.W.

Potresti provare per trovare un'implementazione standalone di uno di questi che non utilizza le librerie di crittografia di sistema e ti consente di ignorare i round. Ma non vi è alcuna garanzia che le utility che devono interpretare l'hash comprenderanno o rispetteranno un valore inferiore al minimo previsto (1000). (Se stavo scrivendo una tale utilità, rifiuterei tutti gli hash con meno colpi del previsto!)

Quindi questo ci lascia con i minimi nativi per il numero di round. Per illustrare le velocità relative, ecco alcune velocità di benchmark hashcat (da un sistema con sei GTX 970):

Hashtype: bcrypt, Blowfish(OpenBSD)                          39955 H/s
Hashtype: sha512crypt, SHA512(Unix)                          426.6 kH/s
Hashtype: sha256crypt, SHA256(Unix)                         1017.3 kH/s
Hashtype: md5crypt, MD5(Unix), FreeBSD MD5, Cisco-IOS MD5  28070.8 kH/s
Hashtype: descrypt, DES(Unix), Traditional DES              2645.3 MH/s

Quindi il più debole che è garantito per essere supportato su Ubuntu moderno è attualmente md5crypt descrypt .

    
risposta data 19.02.2017 - 06:24
fonte

Leggi altre domande sui tag