パスワードハッシュのセットを持っています。サンプル:
9e74437e97ff201ff38416138a22a7f3adfa3b9c10e947481bd94b16eed7df6b6e2806
このハッシュを生成するアプリケーションのソースコードから、ソルトが最初の6文字として付加され、ハッシュを生成する全体的なアルゴが次のようになることがわかりました。
salt + SHA256(salt + password)
上記のハッシュのクリアテキストパスワードを知っている(helloworld)Linuxコマンドラインのソースコードから収集した仮定(コマンド+結果)を確認できました。
printf 9e7443helloworld | sha256sum
7e97ff201ff38416138a22a7f3adfa3b9c10e947481bd94b16eed7df6b6e2806 -
今言ったように、私はそれらのハッシュのセットを持っているので、それらに対してJohn The Ripperを設定し、辞書攻撃を使用したいと思います。 --rules
フラグを使用して、カスタム構成ファイルにカスタムルールを提供することで、それを実行できると思います。しかし、これが正しい方法であるか、JTRのマングリングルールに精通していないかはわかりません。
JTRで私の目標を達成する方法を教えてください。
私が知る限り、_--rules
_オプションでは、ユーザーが使用しているパスワードのルール(foobar、foobar123、f00bar…)のみを定義できます。
_--format
_はハッシュの形式に対応します。多くの事前定義されたルールがあります( http://pentestmonkey.net/cheat-sheet/john-the-ripper-hash-formats )。ファイルをsalt:md5(salt+password)
の形式に変更できます。例:_9e7443:7e97ff201ff38416138a22a7f3adfa3b9c10e947481bd94b16eed7df6b6e2806
_、およびusername:md5(username+password)
を処理する形式を検索できます。
別のオプションは、動的スクリプトを使用することです( https://github.com/magnumripper/JohnTheRipper/blob/bleeding-jumbo/doc/DYNAMIC_SCRIPTING )。この方法はトリッキーですが、柔軟性も高くなります。
解決策は、事前定義された動的フォーマットを使用することでした。私の質問のサンプルを使用して、それを次の形式でhashes.txtに保存しました。
username:7e97ff201ff38416138a22a7f3adfa3b9c10e947481bd94b16eed7df6b6e2806$9e7443
そして、事前定義された動的フォーマットを使用しました:
john --format=dynamic_61 hashes.txt
JTR-jumboですべての動的フォーマットをリストするコマンド:
john --list=subformats