web-dev-qa-db-ja.com

攻撃者は、辞書攻撃で使用するアルゴリズムとソルトをどのようにして知るのですか?

辞書やブルートフォース攻撃などのパスワードクラッキング方法に興味があります。現在、パスワードはプレーンテキストではなくハッシュとしてサーバーに保存されています。それでは、ディクショナリのプレーンテキストのパスワードを、リークされたデータベースのハッシュとどのように比較できますか?ハッシュはbcryptやSHA-512などのさまざまなタイプにすることができるので、クラッキングツールはどのようにしてハッシュを作成して比較する方法を知ることができますか?

たとえば、以下の辞書攻撃を見てください。漏えいしたパスワードはハッシュだけで、辞書には単純な英語の単語があります。次に、それらをどのように比較できますか?攻撃者またはクラッキングツールは、どのハッシュアルゴリズムを使用すべきかをどのようにして知るのですか?塩さえありますが、攻撃者はどのようにして塩が何であるかを知っていますか?

Brute force attack with dictionary words.Database dump with hashes and salts.

30
andjava

平文とハッシュはどのように比較されますか?

ブルートフォース攻撃では、辞書の単語が正しいハッシュアルゴリズムとソルトでハッシュされ、データベースダンプのハッシュと比較されます。したがって、攻撃者はハッシュ値自体だけでなく、アルゴリズムとソルトも知っている必要があります。

攻撃者はどのようにして塩を知っていますか?

ソルトは通常、ハッシュのすぐ隣のデータベースに保存されます。実際、そうである必要があります。それらをチェックするときに、他にどのようにしてWebサーバーが受信パスワードをハッシュできるでしょうか?したがって、データベースダンプがある場合は、ソルトがあります。

攻撃者はどのアルゴリズムを使用するかをどのようにして知るのですか?

これは、いくつかの方法で実行できます。

  • 多くの場合、ハッシュの形式または長さでわかります。たとえば、bcryptハッシュは通常、マーカー$2b$で始まります。
  • 最も一般的なアルゴリズムを使用していくつかの非常に一般的なパスワードを試してください。遅かれ早かれ、一致するものを取得します。通常、すべてのハッシュに使用されるアルゴリズムは1つだけなので、1つの一致を見つけるだけで、そのアルゴリズムで他のパスワードを解読できます。
  • さらに簡単ですが、パスワードが1つしかわからない場合(違反前に自分のアカウントを作成した可能性があります)、そのパスワードでさまざまなアルゴリズムを試すことができます。 (ありがとう、- ガチョウ 。)
  • コードにアクセスできる場合は、そこに答えがあります。 (ありがとう marcelm 。)
  • または、使用されているソフトウェアがわかっている場合は、ドキュメントで見つけることができます。 (ありがとう、- eckes 。)
62
Anders