私たちの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
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を再コンパイルする必要があります。
ソルトハッシュをクラックするのは簡単です:
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