ハッカーや侵入テスターがシステムを破壊し、データベースダンプからプレーンテキストパスワードにアクセスしたい场合、まず保存されたパスワードハッシュ値を解読する必要があります。多くの攻撃者はこの概念に突っ込んでいます。彼らはほとんど理由なく、自分がやりたい任意のパスワード攻撃を試みました。このディスカッションでは、いくつかの効果的なパスワードクラッキング方法と、パスワードの統計分析をツールと組み合わせて、効率的で成功したクラッキングを実現するための時間制限のある方法を作成する方法を説明します。
パスワードの解読は死にかけている事業です。ユーザーはより复雑なパスワードを作成する必要があり、一部のバックエンド开発者は标准的なハッシュ関数を置き换えるために Bcrypt などのメカニズムを使用し始めました。Bcrypt ハッシュ値の生成に時間がかかるため、パスワードの解読が難しくなります。クラッカーはパスワードを効率的に解読するために非常に迅速にハッシュ値を生成する必要があるため、Bcryptはこのような攻撃に対して非常に強力なツールです。この例を説明するために、2012年に導入された25のGPUクラスターで作成されたパスワードクラッカーは、NTLMのハッシュ生成速度が毎秒3,500億ハッシュであるのに対し、Bcryptのハッシュ生成速度は71,000です。これを比較モデルとして、生成された Bcrypt ハッシュごとに 500 万個の NTLM ハッシュを生成できます。Bcrpytedアルゴリズムに直面したとき、ハッカーはパスワードについてより多くの計算的な推測を行わなければならず、すべての可能性に対して乱暴な力を使用することに頼ることはできません。
注: 攻撃者がパスワードの長さが非常に短く、キースペースの暴力解読にそれほど時間がかからないことを知っている場合、インクリメンタル攻撃手順は必要ありません。
パスワードの解読に成功するには、时间効率が重要な要素となります。ユーザーのパスワードのキースペース全体を上書きするのは良いことですが、そのために必要な時間は通常実行可能ではありません。したがって、クラッキングするときは、最初に最も時間を節約する攻撃を試し、失敗した場合は、より多くのキースペースをカバーする遅い暗号攻撃に進むことが重要です。最速の方法は、一般的なユーザーのパスワードと以前のパスワードダンプに基づく単純な辞書攻撃です。そこから辞書を操作して、最後に数字や記号を付けたり、文字を変えたりしてみるべきです。これはハイブリッド攻撃またはルールベース攻撃と呼ばれます。次に、機械学習機能を使用して可能なパスワードを生成してみてください。マルコフ連鎖はその良い例です。英語に存在する一般的な要素を組み合わせて単語(例えば、「ing」、「er」、「qu」)を形成することで、以下のようなパスワードの良い推測を生成できます。この特定のパスワードはどのような方法でも簡単に解読できますが、すべての攻撃ベクトルを簡素化するために、このパスワードを使用します。Password1234Password1234
最後に、マスク攻撃と呼ばれる標的を絞った暴力攻撃は、暗号構造に基づいて、与えられたパスワードのすべてのキースペースをカバーします。パスワードの「構造」とは、パスワードを作成するために使用される文字の種類と順序を指します。たとえば、大文字の「構造」の後に小文字 7 文字、4 桁の数字 ( と表記) が続きます。Password1234ullllllldddd
小文字、大文字、記号、数字(l)(u)(s)(d)
したがって、攻撃者がこの構造を使用して文字の組み合わせの可能性をすべて作成することを決定した場合、最終的には パスワード を見つけることになります。その後、攻撃者の問題は次のようになります。ハッシュ値のセットを攻撃するとき、最初にどの構造をターゲットにすべきですか?Password1234
この质问に答えるために、他の暗号构造よりも一般的な暗号构造が存在するかどうか、そしてその构造がどの程度正しいかを确认するために、一般的な暗号ダンプの统计分析を行いました。公開されている3400万件を超えるパスワードのサンプルサイズには、RockYou、LinkedIn、phpBBなどの有名なパスワードダンプが含まれています。
次の図は、マスク構造の各ユニークなマスクの周波数を示しています。赤い線は、最も頻繁に出現する13番目のマスクの後に出現する50%線を示します。
これは、最初の 13 個の固有マスク構造がサンプル パスワードの 50% を占めていることを意味します。サンプル中の2000万を超えるパスワードの構造は、最初の13のマスクの中にあります。これらの結果は、構造化パスワードの普遍性に関してはかなり衝撃的です。残りの 50% は、この図では縮小された長い右側の尾の中にあります。実際、260,500 個のユニークなマスクのうち、この図には 400 個しか表示されていません。この汎用構造暗号の概念は信じられないほどです。しかし、ユーザーがパスワードをどのように作成して記憶するかを考えると、これは驚くべきことではありません。分析データに基づいて、これがどのように可能であるかを説明するのに役立ついくつかの論理的な要素があります。ユーザーに大文字を含むパスワードを求められた場合、90%以上の確率で最初の文字として使用されます。数字を要求すると、ほとんどのユーザーはパスワードの末尾(おそらく卒業年)に2桁の数字を追加します。次に人気のある選択肢は、パスワードを4桁の数字で終わらせることです(おそらく前年または今年)。この場合、次に人気のある数字は最後に数字があり、最後に3つの数字があります。このような構造的共通性により、攻撃者は、ユーザのパスワードの構造が最も可能性が高いものを予測することができる。
これらの構造的知識を活用すると、ユーザーはパスワードを than (ランダムな文字) に設定する可能性が高いと考えても大丈夫です。9 文字で始まり、9 文字で構成されています。したがって、暗号構造が与えられた場合、連続した文字を見ると、それは単語である可能性が高いと仮定します。これは、大量のキースペースを排除するため、クラッカーにとって非常に有用な仮定です。そして、これは共通の暗号構造の統計的有意性を利用したハイブリッド攻撃になります。potatoespwivwdhpp
通常、浸透テスターとして、ハッシュ値のセットを破壊したとしても、すべてのハッシュ値を解読する时间がない可能性があります。しかし、それらを破壊すると、システムへのアクセスがアップグレードされ、お客様にとってより有用な発見が得られる可能性があります。したがって、パスワードを解読するときに、ハッシュ値のセットを解読するためにどのくらいの時間を割り当てるかを決定することが役立ちます。以前の分析で見つかった構造を使用すると、攻撃者は、最も早い完了時間で並べ替えられたパスワードの複雑さの要件に基づいて、上位 10 の人気のある構造をカバーしたいと判断できます。最後に、攻撃者はクラックを実行するのに1時間以内を費やすことで、自分の方法に時間制限を設けることができます。これは、ハッシュを取得するための最近の浸透テストで発見されました。以下は、CPU ベースの cracker の結果のスナップショットです。
この場合、最も早く完成する構造は です。これを大文字 1 文字、小文字 3 文字 (「W」は「Word」を意味します)、次に 4 桁の数字として定義します。ハッシュセットにはその構造に一致するパスワードが 69 個あり、私の標準的な CPU はその構造のすべての可能性を 1 分でトラバースできます。62分でクラッキングを停止し、クラッキングの结果、491のアカウントに一致する221のユニークなクラッキングハッシュ値が生成され、合计で11%のリークにつながりました。解読パスワードとアカウント流出件数の差が大きいのは、Officeの設定でよく使うパスワードを使ってしまうことが多いからです。共通のパスワードが環境で使用されていると攻撃者が判断した場合、同じパスワードを持つすべてのユーザーも脅威にさらされます。U(W3)dddd
例えば、ハイブリッド攻撃やルールベースの攻撃では、いくつかのパスワードをより迅速に解読することができますが、攻撃パスワードの构造は、より多くのキースペースをカバーすることができます。この方法は、Faster 攻撃がターゲット ハッシュの破壊に成功しないことが証明された場合に有効な次のステップです。さらに、この例はかなり平凡なCPUで行われており、強力なGPUで同じ攻撃を実行することで、この時間を数秒に短縮できることを覚えておくことが重要です。そのため、正確なタイミングは理論を効果的に実行するほど重要ではない。best64
に対する統計分析は、一般的な暗号構造を一般的に攻撃するのに役立ちます。ただし、特定のアプリケーションを特定するのに役立つツールがいくつかあります。CeWL などのツールは、Web ページから単語をクロールし、企業に特化した単語リストや辞書を生成するために使用できます。業界や会社、仕事に関連したパスワードを使う傾向があるため、効果があります。また、一般的なパスワードは職場環境では普及していると判断したので、すでにクラックされているパスワードを他のパスワードのベースにすることも可能で、これも似ているかもしれません。たとえば、"" がユーザーのパスワードであることがわかった場合、"" を新しい単語リストに追加し、ルールセットに入れて、他のユーザーが "" というパスワードを持っていることがわかります。'' などのクラッキングされた基本ワードを使用し、周囲の文字で装飾するこの概念は、パスワードの再利用の概念にさかのぼる、エンタープライズ環境からダンプされたハッシュ値をクラッキングする際に非常に効果的です。これは、私たちが実施した浸透テストによると、最後の20%のクラックされていないハッシュ値をクラックするのに最適です。AcmeCorp1234AcmeCorpAcmeCorp@2015AcmeCorp
また、推測されたすべてのパスワードがアプリケーションで指定された要件に準拠するように辞書をトリミングすることも重要です。長さや文字構成のために推測できないパスワードを推測する時間を無駄にしないようにします。
攻撃に割り当てられた时间を考虑するには、最も速い攻撃から始めて、最小のキースペース(标准的な辞书攻撃)をカバーして、最も遅くて最大のキースペース(纯粋な蛮力)を行うのが最も理想的です。したがって、攻撃者はそれを考慮した標準的な方法を実行する必要があります。攻撃者が侵入したいアカウントが第1段階で完了した場合、他の攻撃を続ける理由はないかもしれません。ただし、ターゲットアカウントが存在する場合、単純な辞書攻撃では不十分であったり、攻撃者ができるだけ多くのアカウントを破壊したいだけであるため、統計構造を用いたハイブリッド攻撃と標的型暴力攻撃が必要になる場合が多い。したがって、クラッキングを成功させるためにはメソッドの確立が不可欠であり、これには前述のメソッドといくつかの自動化されたプロセスが含まれています。最近のツール ( PRINCE など) は、パスワードの解読を容易にするのに役立ちます。PRINCEがメソッドで試すようなツールバンドを開発することも重要ですが、ツールに完全に依存するのではなく、ツールの背後にある機能を理解しておくことで、クラックの効果が高まります。
これらのパスワードを使用して分析することで、必要な複雑さを考慮して最も一般的な構造を特定できます。したがって、開発者はおそらく、前のグラフの曲線を平らにするために、これらの非常に人気のある構造のいくつかをユーザーが使用しないようにするためのいくつかのコントロールを実装する必要があります。しかし、このアイデアの問題点は、単純な構造がなければ、ユーザーがパスワードを覚えにくくなる可能性があることです。2要素認証が必要なパスワードマネージャーを使用することをお勧めします。これらのアプリケーションはあなたのためにすべてのパスワードを生成して保存するので、メモリは問題ではありません。彼らが生成したパスワードは構造的にランダムであり、アプリが許可する限り常に使用できます。私が前に述べたように、暗号化されたパスワードは、攻撃者の展望を遅らせるもう一つの非常に効果的な方法です。最後に、ユーザーがパスワードを共有したり再利用したりすることの危険性を理解できるようにオフィス内でポリシーを実装することは、ユーザーが常に遵守しているわけではなくても、正しい方向への成功した一歩です。彼らは常に遵守することはできないかもしれませんが、これは効果的なコントロール措置です。
パスワードクラッキングは漠然とした概念かもしれません。クラッキングの難易度が高まるにつれて、効率に基づく標的型攻撃が求められ、個別のクラッキング方法を確立する必要があります。最終的にハッシュ生成速度を上げるためにお金を投入する価値はありません。したがって、統計データとツールを攻撃手段として使用して、1つの方法と簡素化されたプロセスを実装することで、パスワードの解読を容易にすることができます。開発者はこのような状況に対応するための制御を開発することができ、ユーザーは安全なパスワードマネージャーを使用してこれらの攻撃の有効性を最小限に抑えることができます。しかし、このような実装はまだあまり流行していません。現在、パスワードに対する統計攻撃は、クラック数と時間接続効率の両方で有効です。あなた自身のパスワードについて考えて、パスワードの构造と、攻撃者がユーザーのアカウントをハッキングする可能性のあるオフィス内の制御によって、どのくらいの速度でパスワードがハッキングされるかを自问してください。