パスワードを解読する方法

簡単なメモ-この記事は、パスワードを解読する方法の理論についてです。サイバー犯罪者がどのように攻撃を実行するかを理解することは、これらのタイプの攻撃からシステムを保護する方法を理解するために非常に重要です。

所有していないシステムをハッキングしようとすることは、管轄区域では違法である可能性があります(さらに、自分のシステムをハッキングすると、その製品の保証に違反する可能性があります)。

基本から始めましょう。ブルートフォース攻撃とは何ですか?

このタイプの攻撃では、(自動化されたツールを使用して)考えられるすべての文字、数字、および文字の組み合わせを試行して、ユーザーとしてログインを繰り返し試行します。

これは、オンライン(ソーシャルメディアや銀行サイトなどのアカウントでさまざまなユーザー名とパスワードの組み合わせを継続的に試すことにより、リアルタイムで)またはオフライン(たとえば、ハッシュされたパスワードのセットを取得して解読しようとしている場合)のいずれかで実行できます。それらはオフラインです)。

オフラインが常に可能であるとは限りませんが(ハッシュ化されたパスワードのセットを取得するのは難しい場合があります)、ノイズははるかに少なくなります。これは、セキュリティチームが同じアカウントからの多くの失敗したログインアカウントにおそらく気付くためですが、パスワードをオフラインで解読できれば、失敗したログイン試行の記録はありません。

これは短いパスワードで比較的簡単です。可能性の数が非常に多いため、パスワードが長くなると、指数関数的に困難になります。

たとえば、誰かが小文字のみで構成される5文字の長さのパスワードを使用していることがわかっている場合、可能なパスワードの総数は26 ^ 5です(最初の文字は26文字、2番目の文字は26文字から選択できます)。文字など)、または11,881,376の可能な組み合わせ。

しかし、誰かが小文字のみの11文字のパスワードを使用している場合、可能なパスワードの総数は26 ^ 11、つまり3,670,344,486,987,776の可能なパスワードです。

大文字、特殊文字、数字を追加すると、解読がさらに難しくなり、時間がかかります。可能性のあるパスワードが多ければ多いほど、ブルートフォース攻撃で正常にログインするのが難しくなります。

身を守る方法

このタイプの攻撃は、いくつかの異なる方法で防御できます。まず、十分に長く複雑なパスワード(少なくとも15文字)を使用できます。アカウントごとに一意のパスワードを使用して(パスワードマネージャーを使用してください)、データ侵害による危険を減らすこともできます。

セキュリティチームは、ログインに一定回数失敗した後、アカウントをロックアウトできます。また、Captchaのような二次検証方法を強制したり、2番目のコード(SMSまたは電子メール、アプリベース、またはハードウェアキーベース)を必要とする2要素認証(2FA)を使用したりすることもできます。

これは、ブルートフォース攻撃を実行する方法に関する記事です。

どうすればパスワードをより速く解読できますか?

辞書攻撃では、プリコンパイルされた「辞書」または組み合わせのリストに含まれるいくつかの組み合わせを試行して、繰り返しログインを試みます。

文字と数字の組み合わせはすでに計算されているため、これは通常、ブルートフォース攻撃よりも高速であり、時間と計算能力を節約できます。

ただし、パスワードが十分に複雑で(たとえば、1098324ukjbfnsdfsnej)、「辞書」(作業中の組み合わせのプリコンパイル済みリスト)に表示されない場合、攻撃は機能しません。

多くの場合、パスワードを選択するときに、一般的な単語またはそれらの単語のバリエーション(たとえば、「password」または「p @ SSword」)を選択するため、成功することがよくあります。

ハッカーは、パスワードの一部(たとえば、犬の名前、子供の誕生日、記念日など、ハッカーがソーシャルメディアページやその他のオープンソースリソースで見つけることができる情報)を知っているか推測するときにも、このタイプの攻撃を使用する可能性があります。

ブルートフォース攻撃に対する上記と同様の保護対策により、これらのタイプの攻撃の成功を防ぐことができます。

ハッシュ化されたパスワードのリストがすでにある場合はどうなりますか?

パスワードは、Linuxの場合は/ etc / shadowファイルに、Windowsの場合はC:\ Windows \ System32 \ configファイルに保存されます(オペレーティングシステムの起動中は使用できません)。

このファイルを取得できた場合、またはネットワーク上のトラフィックをスニッフィングするなどの別の方法でパスワードハッシュを取得した場合は、「オフライン」のパスワードクラッキングを試すことができます。

上記の攻撃ではログインを繰り返し試行する必要がありますが、ハッシュ化されたパスワードのリストがある場合は、ログイン試行の繰り返し失敗によって生成されるアラートを発することなく、マシン上でパスワードを解読してみることができます。次に、パスワードの解読に成功した後、一度だけログインを試みます(したがって、ログイン試行の失敗はありません)。

ハッシュファイルに対してブルートフォース攻撃または辞書攻撃を使用でき、ハッシュの強度によっては成功する可能性があります。

ちょっと待ってください-ハッシュとは何ですか?

35D4FFEF6EF231D998C6046764BB935D

このメッセージを認識しますか?「こんにちは私の名前はミーガンです」と書かれています

7DBDA24A2D10DAF98F23B95CFAF1D3AB

これはこの記事の最初の段落です。はい、それはナンセンスのように見えますが、実際には「ハッシュ」です。

ハッシュ関数を使用すると、コンピューターで文字列(文字、数字、記号の組み合わせ)を入力し、その文字列を取得して混合し、固定長の文字列を出力できます。そのため、文字列の入力の長さが大きく異なっていても、上記の両方の文字列の長さは同じです。

ハッシュは、ほぼすべてのデジタルコンテンツから作成できます。基本的に、すべてのデジタルコンテンツは、バイナリ、または一連の0と1に減らすことができます。したがって、すべてのデジタルコンテンツ(画像、ドキュメントなど)をハッシュできます。

多くの異なるハッシュ関数があり、そのうちのいくつかは他よりも安全です。上記のハッシュはMD5で生成されました(MDは「メッセージダイジェスト」の略です)。関数が異なれば、生成するハッシュの長さも異なります。

同じハッシュ関数の同じコンテンツは、常に同じハッシュを生成します。ただし、わずかな変更でもハッシュは完全に変更されます。例えば、

2FF5E24F6735B7564CAE7020B41C80F1

「こんにちは私の名前はミーガンです」のハッシュです。ミーガンのMを大文字にするだけで、ハッシュが上から完全に変更されました。

ハッシュも一方向性関数です(つまり、元に戻すことはできません)。これは、ハッシュ(一意で一方向)をコンテンツのデジタル指紋の一種として使用できることを意味します。

ハッシュがどのように使用されるかの例は何ですか?

ハッシュは、メッセージが変更されていないことの確認として使用できます。

たとえば、電子メールを送信する場合、電子メール全体をハッシュして、ハッシュを送信することもできます。次に、受信者は同じハッシュ関数を介して受信したメッセージを実行し、メッセージが転送中に改ざんされているかどうかを確認できます。2つのハッシュが一致する場合、メッセージは変更されていません。それらが一致しない場合、メッセージは変更されています。

また、パスワードは通常、保存時にハッシュされます。ユーザーがパスワードを入力すると、コンピューターはハッシュ値を計算し、保存されているハッシュ値と比較します。このように、コンピュータはパスワードをプレーンテキストで保存しません(したがって、一部のせんさく好きなハッカーはパスワードを盗むことができません!)。

誰かがパスワードファイルを盗むことができた場合、関数を元に戻すことができないため、データは役に立ちません(ただし、レインボーテーブルのように、どの平文が既知のハッシュを作成するかを理解する方法はあります)。

ハッシュの問題は何ですか?

ハッシュが任意の長さまたはコンテンツのデータを取得できる場合、ハッシュできるデータの可能性は無限にあります。

ハッシュはこのテキストを固定長のコンテンツ(たとえば、32文字)に変換するため、ハッシュの組み合わせの数には限りがあります。それは非常に多くの可能性ですが、無限の可能性ではありません。

最終的に、2つの異なるデータセットが同じハッシュ値を生成します。これは衝突と呼ばれます。

ハッシュが1つあり、可能なすべてのプレーンテキスト値を調べてハッシュに一致するプレーンテキストを見つけようとすると、非常に長く、非常に困難なプロセスになります。

ただし、どちらのハッシュが衝突するかを気にしない場合はどうなりますか?

これは数学では「誕生日の問題」と呼ばれています。23人の生徒のクラスでは、特定の日に誕生日を迎える確率は約7%ですが、2人が同じ誕生日を共有する確率は約50%です。

同じタイプの分析をハッシュ関数に適用して、(他のハッシュと一致する特定のハッシュの代わりに)一致する2つのハッシュを見つけることができます。

これを回避するには、衝突の可能性が低いSHA3などのより長いハッシュ関数を使用できます。

ここでSHA3とここでMD5の独自のハッシュ関数を生成してみることができます。  

ブルートフォースハッシュを試すことはできますが、非常に長い時間がかかります。これを行うより速い方法は、事前に計算されたレインボーテーブル(辞書攻撃に似ています)を使用することです。

ハッキングされるのは本当に簡単なようです。私は心配する必要がありますか?

ハッキングについて覚えておくべき最も重要なことは、誰もがしなければならない以上の仕事をしたくないということです。たとえば、ブルートフォースハッシュは非常に時間がかかり、困難な場合があります。パスワードを取得する簡単な方法がある場合は、おそらくそれが悪意のある攻撃者が最初に試みることです。

つまり、基本的なサイバーセキュリティのベストプラクティスを有効にすることが、ハッキングを防ぐ最も簡単な方法である可能性があります。実際、Microsoftは最近、2FAを有効にするだけで、自動化された攻撃の99.9%をブロックすることになると報告しました。

追加資料:

人気のパスワードクラッキングツール