web-dev-qa-db-ja.com

* NIXシャドウファイルのパスワード形式

ルーターへのシェルアクセスを取得しようとしていて、その/ etc/shadowファイルを取得できました:

root:$1$$N76hdwGfg11g0KdKbtyh21:0:0:root:/root:/bin/bash

john を使用してクラックしようとしましたが、できませんでした。

$ ./john --show passwd
0 password hashes cracked, 1 left

私はテストアカウントも作成し、ubuntu/debianでそれをクラックすることに成功しました:

$ ./john --show passwd_test 
testtesttest:test:16626:0:99999:7:::

1 password hash cracked, 0 left

ここで、testtesttestはユーザー、testはパスワードです。パスワードハッシュの形式は何ですか?

編集:

見つけた ここ 。ただし、その形式を知っておくとよいでしょう。

7
Sebi

Unixライクなシステムでのハッシュの最も一般的な形式は、$ALG$SALT$OUTPUTの形式です。ここで[〜#〜] alg [〜#〜]は、アルゴリズムを識別する小さな番号[〜#〜] salt [〜#〜]はハッシュのソルトであり、[〜#〜] output [〜#〜]はハッシュ関数の出力です。 [〜#〜] salt [〜#〜]および[〜#〜] output [〜#〜] はbase64でエンコードされています。

アルゴリズム1は、MD5ハッシュ関数の反復に基づく構造である「MD5 crypt」です。このアルゴリズムは、正式な標準では定義されていません(私が知る限り、まだ定義されていません)。 1994年にFreeBSDでPoul-Henning Kampによって導入された でした。

通常のAPIはソルトを追加します。元の実装では48ビットのソルトが強制されました。反復回数は2477に固定されており、著者は当時のハイエンドPCで34µsのベンチマークを行いました。ハッシュに空のソルトがあります。これは珍しいことであり、通常のツールをバイパスしてライブラリ関数を直接呼び出すように設定した開発者または管理者を必要とします。

現在のLinuxシステムでは、通常、SHA-256とSHA-512の反復に基づいた アルゴリズム5および6 を使用します。これらの構成要素はおおまかに PBKDF2 と同じ原理に基づいていますが、反復ハッシュの計算方法が異なります。

パスワードハッシュアルゴリズムに関する豊富な情報は passlibライブラリのドキュメント で確認できます。もちろん、ライブラリではPython実装が提供されます。このアルゴリズムは- passlib.hash.md5_crypt

ルータがパスワードハッシュのglibc標準に準拠していると仮定すると、2番目のフィールド($1$$N76hdwGfg11g0KdKbtyh21)はパスワードであり、次のようにエンコードされます。

  • $1$:反復MD5ハッシュ
  • $:塩なし
  • N76hdwGfg11g0KdKbtyh21:ハッシュされたパスワード(base64エンコード)。 16進エンコーディングでは、37bea177019f835d60d0a74a6edca1db
10
Mark