web-dev-qa-db-ja.com

Linuxに非常に弱いパスワードハッシュアルゴリズムを設定する方法

ラボの演習の一環として、/ etc/shadowファイルに非常に弱いパスワードハッシュを設定します。どうすればこれを行うことができますか? MD5は十分に弱いわけではないので、ハッシュ化アルゴリズムを変更するために/etc/pam.d/common-passwordファイルを編集しています。暗号解読をするつもりでしたが、動作しません。

何か案は?

4
Joe Smith

ラボの演習の目的と想定に応じて、他の可能性があります。最近のUbuntuを想定すると(後のコメントにあるように)、一般的なソルトを使用したストックデスクリプトは、フルサポートでネイティブに使用できる最も弱い

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

詳細:

Ubuntuの最新のcrypt実装は、設計上、過度に弱いハッシュを作成しないようにしています。

ネイティブのUnix crypt(descrypt)以外に、Ubuntu 16.04には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)

まず、塩について。ハッシュを1つだけ生成しているようです。多くのハッシュを生成する場合、すべてのハッシュに同じ固定/静的ソルトを使用できます。これにより、攻撃が速くなります。簡単にするために、すべてゼロのソルトを使用します。

descryptが認識されなくなる可能性があります。 /etc/pam.d/common-passwordは「Unix crypt」をデフォルトとして参照しますが、これは従来のdescryptではなく「OSデフォルトシステムcrypt」を意味する場合があります。 システムがサポートしている場合、descryptは間違いなく最も脆弱です。

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

-私のテストでは、まだ暗号化解除パスワードを使用できましたUbuntuシステムにログインします。 descryptを試すことはできますが、PAMのドキュメントには明示的にリストされていないため、目的に応じて機能する場合と機能しない場合があります

Blowfish/bcrypt(2aまたは2y、あるいはその両方)は、群を抜いて最も遅く、Ubuntuではサポートされていないようなので、破棄します。

MD5cryptには固定されたラウンド数(1000)があり、これが 現在は非推奨 である理由の1つです。また、SHA-256やSHA-512よりも高速です(したがって弱い)。

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

SHA-256とSHA-512の間では、SHA-256はより高速なハッシュであるため、理論的には目的に対して「より弱い」でしょう。

ラウンド数を減らすことでSHAを弱めることができるかどうかを確認しました。これを行う単純で素朴な方法はないようです。ネイティブのUbuntu mkpasswdコマンドは、設計上、1000未満の-R値を無視する、基になるcrypt関数を呼び出します。

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.

システム暗号ライブラリを使用せず、ラウンドをオーバーライドできるこれらのいずれかのスタンドアロン実装を試行して見つけることができます。しかし、ハッシュを解釈する必要のあるユーティリティが期待される最小値(1000)よりも低い値を理解または尊重するという保証はありません。 (もし私がそのようなユーティリティを書いていたら、予想よりも少ないラウンドでハッシュを無効として拒否します!)

したがって、ラウンド数のネイティブの最小値が残ります。相対速度を示すために、いくつかのhashcatベンチマーク速度を示します(6つの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

したがって、最新のUbuntuでサポートされることが保証されている最も弱いのは、現在 md5cryptdescrypt

5
Royce Williams