web-dev-qa-db-ja.com

Windows 7パスワードハッシュセキュリティ

私は最近 numberofsources に遭遇しました。これは、Windowsユーザーアカウントのパスワードをクラックすることが、パスワードハッシュを調べることで簡単であることを示唆しています。

これらのハッシュが2つの形式で [〜#〜] sam [〜#〜] ファイルに保存されていることを理解しています: [〜#〜] lm [〜#〜] および [〜#〜] ntlm [〜#〜] 。 LMは安全ではありません(Vista以降、意味のあるものが保存されていませんよね?)。ただし、NTLMは暗号的にも脆弱であり、また、途方もなく速く破壊される可能性があります。

いずれにせよ、私が「強力な」パスワードと見なすものを使用していても、数分でクラックが発生するのを目にしました。単に、フラッシュドライブからコンピューターをLinuxで再起動し、パスワードを抽出するプログラムを実行するだけです。ハッシュ。これは私には非常に脆弱なようです。

これを防ぐことについてオンラインで見つけた唯一のことは、より長いLMハッシュが意味をなさないことを保証するために、より長いパスワードを使用することでしたが、NTLMは依然として弱いです。

このような攻撃を防ぐ方法を知っている人はいますか?

17
imallett

ここで考慮すべき点がいくつかあります。 Microsoftは、Windowsシステムのアカウントデータベースに2つのアルゴリズムを使用しています。

LM(LANマネージャー)

NTLM(NT LANマネージャー)

システムに物理的にアクセスできる攻撃者は、すべてのローカルアカウントのSAM(セキュリティアカウントマネージャー)データベースの内容を簡単にダンプし、Ophcrack( http://ophcrack.sourceforge.net )ハッシュされた値に対してレインボーテーブル攻撃を実行します。

ただし、実際のリスクを判断する必要があります。攻撃者はパスワードを解読したり、攻撃者はシステムにアクセスしたりできます。システムを危険にさらすためにパスワードを解読する必要はないため(これは価値があると思います)、これは重要です。他の多くのツールは、SAMデータベースのハッシュを攻撃者が選択したものに置き換えるだけです。これはシステムを危険にさらしますが、必ずしもパスワード自体を危険にさらすわけではありません。ディスク全体の暗号化は、防御の最前線として両方の問題を解決します。攻撃者は、SAMデータベースを操作するために使用しているツールでボリュームをマウントすることができません。このルートをたどると、多くの商用ベンダーがソリューションを提供します。 Truecrypt( http://www.truecrypt.org/ )はすばらしい無料プログラムを提供します。 BitlockerやOSに統合された暗号化ソリューションは、コールドブート攻撃の影響を受けやすいため、ほとんど役に立ちません。

新しいソリューションの1つは、アクセスするために独自のファームウェアを起動する必要がある自己暗号化ドライブです。

4
Paul Horbal

このすべての回答で、攻撃者が読み取りアクセスを取得できるサーバーに保存されている、盗みハッシュからパスワード(または同等のパスワード)を復​​元する問題を検討しています

NTLMハッシュは弱いですが、古いLMハッシュほどではありません。

古いLMハッシュには、いくつかの重要な弱点があります。

  • 大文字と小文字を区別しません。
  • 14文字に制限されています。
  • パスワードを、別々にハッシュされる2つの7文字の半分に分割します。

この最後の弱点により、非常に効率的なクラッキングが可能になります(パスワードを選択する際の注意に関係なく)。詳細については、 この回答 を参照してください。

古いNTLMは、 MD4 をパスワードに基づいて計算したものです。今回は、パスワードは大文字と小文字が区別され、かなり長くなる可能性があります。 実際のパスワードの最大長 についてはいくつかの論争があります。これは明らかに127文字程度になる可能性があります。 MD4はパスワードのUTF-16エンコードで計算されるため、理論的には Unicode の全範囲を使用できますが、ユーザーは定期的に(視覚的なフィードバックなしで)パスワードを入力する必要があるため、printable = ASCIIセットは問題を探しています。

NTLMハッシュの弱点は、無塩であり、MD4が高速であることです(MD4もいくつかの方法で暗号化されていますが、パスワードハッシュに使用されるような生のプリイメージ耐性には対応していません) ;そのため、MD4はかつてないほど堅牢です。 MD4は実際にはMD5よりも高速です。最近のGPUは、1秒あたり数 billions のMD4インスタンスを計算します。これにより、攻撃者は潜在的なパスワードの膨大なセットを簡単に探ることができます( 辞書攻撃として知られている )。唯一の防御策は、さらに幅広いセットからパスワードを選択することです。

それでいくつかの数学を投げましょう:NTLMは無塩なので、攻撃者の専用グループが大きな レインボーテーブル を構築する価値があることに気付くかもしれません。さまざまな最適化が可能ですが、原則として次のようになります。

  • t と呼ばれるセキュリティパラメータがあります。これは、レインボーテーブルのチェーンの平均の長さです。
  • テーブルでカバーされるパスワードのセットのサイズが [〜#〜] n [〜#〜] である場合、ストレージ要件は約 10 * N/t バイト(ソートされたチェーンエンドごとに10バイトが妥当な見積もりです)。
  • テーブルの作成には、約1.7*Nハッシュ関数の呼び出しのコストが伴います。
  • one パスワードをテーブルで攻撃すると、 tに関する計算が必要になります。2はハッシュ関数を掛け、テーブルで t ルックアップします。

テーブルが100台の機械式ハードディスクに分割されている場合、1秒あたり約10000件のルックアップを実行できます。攻撃者が本当にやる気がある場合、パスワードごとに1時間ほど費やすことを望むかもしれません。つまり、ルックアップの最大 t は3600000です(2としましょう22);対応するCPUコストは約2に下がります32 1秒あたりのハッシュ数。これは、最近のいくつかのGPUで実現可能です。 100枚のディスクで300 TBストレージを使用できます(3 TBディスク、今日市販されているディスク)について話している)。これにより、 [〜#〜] n [〜#〜] 約267。それはかなり巨大ですが、技術的には実現可能です。攻撃者のグループは、100 GPU(および big エアコンユニット)を購入し、数か月以内にそのテーブルの計算を完了することができます。

したがって、やる気のある敵を倒すために、 [〜#〜] n [〜#〜] よりも大きいセットからランダムにパスワードを選択する必要があります。可能なパスワードのセットのサイズが2より大きい場合77 私たちのパスワードはそのセットでランダムに均一に選択されます(つまり、パスワードエントロピーは77ビット以上です)。その後、攻撃者はたった1/1000の確率で与えられたパスワードを彼のテーブルで解読すること。これは彼を説得するのに十分なはずです。

77ビットのエントロピーを取得するにはどうすればよいですか?文字(大文字と小文字)と数字に制限して、任意のキーボードでパスワードを入力できるようにすると、1文字あたり6ビット弱のエントロピーが得られます。したがって、13文字で十分です。盛り上がりませんか? 13だけ!巨大なパスフレーズに行く必要はありません。しかし、小さなタイプを気にしてください:それは 13完全にランダムな文字または数字です。人間にこれらの文字を選択させたり、13文字の12個のパスワードを生成させたり、彼が最も好きなものを選択させたりすることに疑問の余地はありません。あなたはジェネレータを受け取り、 one パスワードを生成し、それを学びます。精神的な努力は、NTLMのような無塩の高速パスワードハッシュメカニズムを使用する代償です。

(もちろん、上記の攻撃者グループは realistic です。複雑さを少し増やして、明日の攻撃者に対してもパスワードを強力にするために、14にしてください。または15文字で安全を確保できます。)

18
Thomas Pornin

一般に、ほとんどのシステムでは、パスワードが長いほど常に優れています。

もちろん、NTLM用のレインボーテーブルがあります(例 http://www.freerainbowtables.com/en/tables2/

ただし、ブルートフォーシングの観点からは、ロックアウトされる前に失敗したログインの試行回数を制限する必要があります。これは、ローカルポリシーを使用して設定できます。 3回失敗した場合、それらをブロックします。

物理的なセキュリティはすべてに勝ります。 BIOSがCDまたはUSBを起動しないようにブロックし、ボックスにロックをかけます。もちろん、私は上記のコメントを繰り返しますが、完全なディスク暗号化を使用します。暗号化されたドライブをLinuxで魔法のようにマウントすることはできません。パスワードやキーを知っている必要があります。

コールドブートと邪悪なメイドは、誰かがあなたのマシンを壊すことに本当に時間を費やすことを要求します。ローカルのホームPCでは、マルウェアをダウンロードするようにだまされたり、パッチを適用していないソフトウェアを持っている可能性が高く、ルート(エヘム、管理者)が取得するだけで、パスワードを破る必要はありません。

あなたが本当の秘密のものを持っているなら、完全なディスク暗号化をして、重要なものを第2レベルの暗号化コンテナに入れてください。

私はかつて、唯一のコンピューターの男が、唯一の安全なコンピューターは斧で切り刻まれて燃やされたコンピューターだと言うのを聞いたことがあります。 :-)

5
Eric G