ハッカーやペネトレーションテスターがシステムを侵害し、データベースダンプから平文のパスワードにアクセスしたい場合、まず格納されたパスワードハッシュを解読する必要があります。多くの攻撃者はこの概念に飛び込みました。彼らは、ほとんど理由もなく、試みたい任意のパスワード攻撃を試みました。このディスカッションでは、いくつかの効果的なパスワードクラッキング方法と、パスワードの統計解析をツールと組み合わせて使用して、効率的で成功するための時間的制約のあるアプローチを作成する方法を示します。
暗号解読は死にかけた事業です。ユーザーはより複雑なパスワードを作成する必要があり、一部のバックエンド開発者は標準的 なハッシュ関数をBcryptのようなメカニズムに置き換え始めた。Bcryptハッシュの生成に時間がかかるため、パスワードは解読が難しくなります。クラッカーはパスワードを効果的に解読するためにハッシュ値を非常に高速に生成する必要があるため、Bcryptはこの種の攻撃に対抗する非常に強力なツールです。この例を説明するために、2012 年に導入された25のGPUクラスタで構築されたパスワードクラッキングプログラムは、Bcryptの71,000ハッシュに対して毎秒3,500億ハッシュのNTLMハッシュ生成速度を達成しました。これを比較モデルとして使用すると、生成されたBcryptハッシュごとに500 万個のNTLMハッシュが生成されます。Bcrpytedアルゴリズムに直面した場合、ハッカーはパスワードについてより計算的な推測を行う必要があり、あらゆる可能性にブルートフォースを使用することはできません。
注意:攻撃者がパスワードの長さが非常に短いため、ブルートフォースで鍵空間を解読するのに時間がかからないことを知っている場合は、増分攻撃ステップは必要ありません。
時間効率は、暗号解読を成功させるための重要な要素です。ユーザーパスワードの重要な領域全体を上書きするのは良いことですが、それにかかる時間は通常実行可能ではありません。したがって、クラックする際には、最初に最も時間のかかる攻撃を試み、成功しない場合は、より多くの鍵空間をカバーする遅い暗号攻撃を続けることが重要です。最も速い方法は、一般的なユーザーパスワードと以前のパスワードダンプに基づく単純な辞書攻撃です。そこから、辞書を操作して数字や記号を追加したり、末尾に文字を変更したりしてみてください。これはハイブリッド攻撃またはルールベース攻撃と呼ばれます。次に、機械学習機能を使用して可能なパスワードを生成してみてください。マルコフ連鎖がその良い例です。英語に存在する一般的な要素(例えば、“ing”、“er”、“qu”)を組み合わせて単語を形成することで、以下のようなパスワードの良い推測を生成することができます。この特定のパスワードはどのような方法でも簡単に解読できますが、すべての攻撃ベクトルを簡素化するために使用します。Password1234Password1234
最後に、標的型ブルートフォース攻撃(マスク攻撃と呼ばれる)は、パスワード構造に基づいて与えられたパスワードのすべての鍵空間を上書きします。パスワードの“構造”とは、パスワードを作成するために使用される文字の種類と順序を指します。たとえば、大文字の“構造”に7つの小文字が続き、4桁の数字が続きます(と表記)。Password1234 ulllllllddd
小文字、大文字、記号、 数字l u s d
したがって、攻撃者がこの構造体を使用して文字の組み合わせを作成することにした場合、最終的にはパスワードを見つけることになります。攻撃者にとっての問題は、ハッシュ値のセットを攻撃するとき、最初にどの構造をターゲットにすべきかということです。パスワード1234の
この質問に答えるために、人気のあるパスワードダンプの統計分析を行い、他のパスワード構造よりも一般的なパスワード構造が存在するかどうか、そしてその構造がどの程度正しいかを確認しました。公開されている3400 万以上のパスワードのサンプルには、RockYou、LinkedIn、phpBBなどの有名なパスワードダンプが含まれています。
次の図は、各固有のマスクに対するマスク構造の頻度を示しています。赤い線は、13番目に頻繁に出現するマスクの後に現れる50%ラインを表します。
これは、最初の13のユニークなマスク構造がサンプルパスワードの50%を占めていることを意味します。サンプルの2000 万以上のパスワードの構造は、最初の13のマスクに含まれています。これらの結果は、構造化暗号の普遍性に関する限り、かなり衝撃的です。残りの50%は、この図では縮小されている長い右尾の中に存在します。実際、260,500個のユニークマスクのうち、この図では400個しか示されていません。このような普遍的な構造のパスワードの概念は信じられないほどですが、ユーザーがパスワードを作成して記憶する方法を考えると、驚くべきことではありません。分析データに基づいて、これが可能な理由を説明するのに役立ついくつかの論理的要因があります。ユーザーが大文字を含むパスワードを入力するよう求められた場合、90%以上の時間、最初の文字としてそれが使用されます。数字を要求されると、ほとんどのユーザーはパスワードの最後に2桁(おそらく卒業年)を追加します。次に人気のあるオプションは、パスワードを4桁の数字で締めくくることです(おそらく昨年または今年)。この場合、次に人気のある数字は、最後に1つの数字と最後に3つの数字を持ちます。このような構造的共通性により、攻撃者はユーザーのパスワードの構造を予測できます。
この構造的知識を活用することで、パスワードがすべて9文字で始まり9文字であっても、ユーザーはパスワードをthan(ランダムな文字)に設定する可能性が高いと安全に仮定できます。したがって、暗号構造が与えられたとき、連続した文字を見ると、それは単語である可能性が高いと仮定します。これは、多くのキースペースを排除するため、クラッカーにとって非常に有用な仮定です。これは、一般的な暗号構造の統計的有意性を利用したハイブリッド攻撃になります。potatoespwivwdhpp
通常、ペネトレーションテスターとして、ハッシュのセットを破っても、すべてを解読する時間がない場合があります。しかし、それらを破壊することで、システムへのアクセスがアップグレードされ、顧客により有用な発見がもたらされます。したがって、パスワードを解読する際に、ハッシュ値のセットを解読するのにどれだけの時間を割り当てるかを決定すると便利です。以前の分析で発見された構造を使用すると、攻撃者は、最も速い完了時間でソートされたパスワードの複雑さ要件に基づいて、トップ10の一般的な構造をカバーしたいと考えていることがわかります。最後に、攻撃者はクラックを実行するのに1時間以内を費やすことで、自分の方法に時間制限を課すことができます。これは、ハッシュを取得する最近のペネトレーションテストで発見されました。以下はCPUベースのクラッカーの結果のスナップショットです。
この場合、最も早く完成する構造は、大文字に3つの小文字(単語のための“W”)、4桁の数字として定義します。ハッシュセットには69個のパスワードがあり、私の標準的なCPUは1分以内にその構造のすべての可能性をトラバースすることができます。62分後にクラックを停止し、491アカウントと一致する221個のユニークなクラックハッシュが生成され、合計で11%の侵害が発生しました。パスワード解読とアカウント漏洩の数に大きな差がある理由は、Office設定が一般的なパスワードを使用する傾向があるためです。攻撃者が環境で共通のパスワードが使用されていると判断した場合、同じパスワードを持つすべてのユーザーも侵害されます。U W3 ddd
ハイブリッドまたはルールベースの攻撃例えばは、これらの暗号のいくつかをより速く解読することができるが、攻撃暗号の構造は、我々がより多くの鍵空間をカバーすることを可能にする。Faster攻撃がターゲットハッシュを破壊できないことが判明した場合、この方法は効果的な次のステップです。さらに、この例はかなり平凡なCPUで行われたことを覚えておくことが重要であり、強力なGPUで同じ攻撃を実行すると、この時間を数秒に短縮できます。正確なタイミングは効果的な実行理論ほど重要ではない。統計
分析は、一般的なパスワード構造を攻撃するのに役立ちますが、特定のアプリケーションを見つけるのに役立つツールがあります。CeWL のようなツールは、ウェブページから単語を抽出し、企業固有の単語リストや辞書を生成するために使用できます。これは、企業がその業界、会社、または仕事に関連するパスワードを使用する傾向があるためです。また、作業環境では一般的なパスワードが一般的であることが判明したため、すでに解読されたパスワードを他のパスワードのベースとして使用することも可能です。例えば、“”があるユーザのパスワードであることがわかった場合、新しい単語リストに“”を入れてルールセットに入れ、他のユーザがパスワード“”を持っていることを発見することができます。クラックされた基本語(など)を使用''して周囲の文字を修飾するという概念は、パスワード再利用の概念にまで遡ることができる、エンタープライズ環境からダンプされたハッシュ値をクラックするのに非常に効果的です。私たちが実施したペネトレーションテストによると、これは未解読ハッシュの最後の20%をクラックするのに最適です。AcmeCorp 1234 AcmeCorp AcmeCorp @ 2015 AcmeCorp
推測されたすべてのパスワードがアプリケーションの規定に準拠するように辞書をトリミングすることも重要です。長さや文字構成のため推測できないパスワードを推測する時間を無駄にしないようにします。
の鍵空間(標準辞書攻撃)をカバーする最速の攻撃から、最も遅く最大の鍵空間(純粋なブルートフォース)までをまとめることが、攻撃に割り当てられた時間を考慮する上で最も理想的な進行です。したがって、攻撃者はこれを考慮した標準的なアプローチを実装する必要があります。攻撃者が侵入しようとしているアカウントがフェーズ1で完了していれば、他の攻撃を続ける理由はないかもしれませんが、多くの場合、標的アカウントが存在する場合、単純な辞書攻撃では不十分であったり、攻撃者ができるだけ多くのアカウントを侵害したいだけで、統計構造を使用したハイブリッド攻撃と標的を絞ったブルートフォース攻撃が必要になる可能性があります。したがって、前述の方法や自動化プロセスを含む方法論を確立することが重要である。PRINCEのような最近のツールは パスワードクラッキングを容易にするのに役立つ。PRINCEのようなツールベルトを開発してメソッドを試すことは重要ですが、ツールの背後にある機能を理解し、それらに完全に依存するのではなく、クラックをより効果的にします。
これらの暗号を使用して解析することで、必要な複雑さのレベルを与えられた最も一般的な構造を決定することができます。したがって、開発者は、ユーザーが前のグラフの曲線をフラットにするために、これらの非常に一般的な構造のいくつかを使用しないようにするコントロールを実装する必要があります。しかし、このアイデアの問題点は、シンプルな構造がなければ、ユーザーがパスワードを覚えるのが難しいことです。2要素認証が必要なパスワードマネージャをお勧めする。これらのアプリはすべてのパスワードを生成して保存するので、メモリは問題ありません。彼らが生成するパスワードは構造的にランダムであり、アプリケーションが許可する限り常に使用できます。前述したように、暗号化されたパスワードは、攻撃者の見通しを遅らせるもう一つの非常に効果的な方法です。最後に、パスワードの共有やパスワードの再利用の危険性をユーザーが理解できるようにするポリシーをオフィス内に実装することは、ユーザーが必ずしも遵守していなくても、正しい方向への成功したステップです。彼らは常に従わないかもしれませんが、効果的な制御です。
暗号解読は曖昧な概念です。クラッキングが難しくなるにつれて、効率に基づく標的型攻撃が必要となり、個々のクラッキング手法が確立されるべきです。最終的にハッシュ生成速度を向上させるために投資する価値はありません。したがって、統計データやツールを攻撃手段として使用した手法の実装やプロセスの簡素化は、パスワード解読を容易にすることができます。開発者はこれに対処するための制御を開発でき、ユーザーは安全なパスワードマネージャを使用してこれらの攻撃の効果を最小限に抑えることができますが、そのような実装はまだ普及していません。現在、暗号に対する統計的攻撃は、クラック数と時間接続効率の両面で有効である。自分のパスワードについて考え、パスワードの構造や、攻撃者がユーザーのアカウントに侵入する可能性のあるオフィス内の制御に基づいて、どれだけの速さで解読できるかを自問してください。