web-dev-qa-db-ja.com

Johnはリッパーのpasswdファイル形式で、saltが機能しない

私たちのeコマースサイトの1つでパスワードの強度をテストしようとしています。パスワードファイルをブルートフォースするために、リッパーであるジョンを使用しています。 PHPで使用されるアルゴリズムは次のとおりです:

$hash = md5($salt . $pass)

他の変換は実行されず、$ saltやパスでも実行されません。1つの例を手動で確認しました。ドキュメントで、アルゴリズムに付随するサブフォーマットはdynamic_4であることがわかりました。問題は、ドキュメントに記述されているpasswdファイル形式が機能しないようで、Johnがハッシュを読み込めないことです。これは、私が使用した形式です。

// user:$dynamic_4$hash$salt
emi:$dynamic_4$83a3f08cfb2d9d0bac5d1a1619d8b7dd$Z3MkG2FZsaoV9EDCpmSRWvgANQAeXOeN7oadrAugu0rKEvfKqoNj6D9a

ハッシュのソルトを変更しようとしましたが、まだ何もありません

次のパラメータの組み合わせを試しました:

john --single passwd
john --format=dynamic_4 --single passwd
john --subformat=dynamic_4 --single passwd
john --format=md5 --single passwd
john --format=raw-md5 --single passwd
3
user2253620

John the ripperのソースコードとJohn The Ripperを使用する構文を調べました。

  • ジョンでは、リッパーの動的ハッシュサブフォーマットのソルトの長さが制限されています。
 src/dynamic_preloads.c:
 
 static DYNAMIC_Setup Setups [] = 
 {
 {"dynamic_0:md5($ p)(raw- md5) "、_Funcs_0、_Preloads_0、_ConstDefault、MGF_NO_FLAG、MGF_KEYS_INPUT}、
 {" dynamic_1:md5($ p。$ s)(joomla) "、_Funcs_1、_Preloads_1、_ConstDefault、MGF_SALT、MGF_SALT、MGF_SALT 、
 {"dynamic_2:md5(md5($ p))(e107)"、_Funcs_2、_Preloads_2、_ConstDefault、MGF_NO_FLAG、MGF_KEYS_INPUT | MGF_SET_INP2LEN32}、
 {"dynamic_3:md5(md5(md5 ($ p))) "、_Funcs_3、_Preloads_3、_ConstDefault、MGF_NO_FLAG、MGF_KEYS_INPUT | MGF_SET_INP2LEN32}、
 {" dynamic_4:md5($ s。$ p)(OSC) "、_Funcs_S_Default_M ___ Presload_4、__ Presload_4 、MGF_NO_FLAG、-24}、
 {"dynamic_5:md5($ s。$ p。$ s)"、_Funcs_5、_Preloads_5、_ConstDefault、MGF_SALTED、MGF_NO_FLAG、-12、31、56}、
 {"dynamic_6:md5(md5($ p)。$ s)"、_Funcs_6、_Preloads_6、_ConstDefault、MGF_SALTED、MGF_KEYS_BASE 16_IN1、-23、55、80}、
 ... 
 ... 
 ... 
 

たとえば、dynamic_0は32バイト、dynamic_4は24バイト、dynamic_5は12バイトなどです。

ソルトのデフォルト以外の値をサポートするには、ソースコードを変更してJTRを再コンパイルする必要があります。


  • dynamic_4フィールドはpasswdファイルでは許可されていません。

ソルトハッシュをクラックするのは簡単です:

 sajjad @ xxx:〜/ Downloads/john-1.7.9-jumbo-7/run $ cat pass.txt 
 admin:d5fedea70cf14c3191fc8e94fe4ca8b9 $ Y0g7Wx78AdpjIdZd 
 
 sajjad @xxx:〜/ Downloads/john-1.7.9-jumbo-7/run $ ./john -form = dynamic_1 -w = password.lst pass.txt 
読み込まれた1つのパスワードハッシュ(dynamic_1:md5($ p。$ s)(joomla)[128x1(MD5_Body)])
 admin(admin)
 ... 
 ... 
 ... 

クラックされたパスワードを表示するには、--showオプション

 sajjad @ xxx:〜/ Downloads/john-1.7.9-jumbo-7/run $ ./john --show pass.txt 
4
Sajjad Pourali