貢献者:KirstenS,Paul McMillan,Raesene,Adedov,Dinis.Cruz,JoE,Daniel Waller,kingthorin
ブルートフォース攻撃をブロッキング
web開発者が直面する一般的な脅威は、ブルートフォース攻撃として知られているパスワード推ブルートフォース攻撃とは、文字、数字、記号の可能なすべての組み合わせを体系的に試して、正しい組み合わせが機能することを発見するまで、パスワードを発見しようとする試みです。,Webサイトでユーザー認証が必要な場合は、ブルートフォース攻撃の適切な標的になります。
攻撃者はブルートフォース攻撃によって常にパスワードを発見できますが、それを見つけるのに何年もかかる可能性があるという欠点があります。パスワードの長さと複雑さに応じて、可能な組み合わせの兆がある可能性があります。
物事を少しスピードアップするために、ブルートフォース攻撃は、ほとんどの人が完全にランダムなパスワードではなく、それらを使用するため、辞書の単語, これらの攻撃と呼ばれる辞書攻撃をハイブリッド力。ブルートフォース攻撃は、ユーザーアカウントを危険にさらし、不要なトラフィックでサイト
ハッカーは、ワードリストとスマートルールセットを利用して、ユーザーのパスワードをインテリジェントかつ自動的に推測する広く利用可能なツールを使用して、ブルー このような攻撃は検出するのは簡単ですが、防ぐのはそれほど簡単ではありません。
たとえば、多くのHTTPブルートフォースツールは、開いているプロキシサーバーのリストを介して要求を中継できます。, それぞれの要求が来たからに違うIPアドレスはできませんのブロックこれらの攻撃だけでブロックのIPアドレスです。さらに複雑なもの、ツールのみを別のユーザー名とパスワードの各試みることはできませんロックアウトして一つのアカウントのためのパスワードに失敗したことを伝え、”よくやった!
アカウントのロック
ブルートフォース攻撃をブロックする最も明白な方法は、定義された数の誤ったパスワード試行の後にアカウントをロック,または、管理者が手動でロックを解除するまで、アカウントがロックされたままになることがあります。
しかし、誰かが簡単にセキュリティ対策を悪用し、何百人ものユーザーをロックアウトする可能性があるため、アカウントのロックアウトは必ずしもaccounts.In 事実、一部のWebサイトでは非常に多くの攻撃が発生し、常に顧客アカウントのロックを解除するため、ロックアウトポリシーを強制することができま,
アカウントロックアウトの問題は次のとおりです。
- 攻撃者は、多数のアカウントをロックアウトすることにより、サービス拒否(DoS)を引き起こす可能性があります。
- 存在しないアカウントをロックアウトすることはできないため、有効なアカウント名のみがロックされます。 攻撃者は、エラー応答に応じて、この事実を使用してサイトからユーザー名を取得する可能性があります。
- 攻撃者が転用によるロックの多くを占や洪水のヘルプデスク支援に発信します。,
- 攻撃者は、管理者がロックを解除してから数秒後であっても、同じアカウントを継続的にロックアウトし、アカウントを効果的に無効にすること
- ユーザーアカウント誤動作防止が効果を発揮しな対し遅いが攻撃してい数にパスワードできます。
- アカウントロックアウトは、ユーザー名の大きなリストに対して一つのパスワードを試みる攻撃に対して無効です。
- アカウントロックアウトは、攻撃者がユーザー名とパスワードのコンボリストを使用していて、最初の数回の試行で正しく推測している場合は無効です。,
- 管理者アカウントなどの強力なアカウ 一部のシステムロック出管理者アカウントのみをネットワークに基づくログイン.
- 一度アカウントをロックアウトしても、攻撃は継続し、貴重な人的資源とコンピューター資源を消費する可能性があります。
アカウントロックアウトは有効な場合がありますが、制御された環境やリスクが非常に大きい場合にのみ有効です。,ほとんどの場合、しかし、誤動作防止が不十分なために停止力攻撃であった。
たとえば、複数の入札者が同じアイテムを巡って戦っているオークションサイトを考えてみましょう。オークションのウェブサイトがアカウントのロックアウトを強制した場合、ある入札者は、オークションの直前に他のアカウントをロックするだけで、bids.An 攻撃者は、同じ手法を使用して、重要な金融取引や電子メール通信をブロックする可能性があります。,
デバイスクッキー
既知および未知のブラウザまたはデバイスからの認証試行を個別にロックアウトすることも検討できます。デバイスクッキーによるオンライン推測攻撃の遅さの記事では、特定のブラウザが成功したログインに既に使用されているかどうかに関する情報このプロトコルは、普通のアカウントのロックアウトよりもDoS攻撃の影響を受けにくく、効果的で実装が簡単です。,
その他の対策を見つける
説明したように、アカウントのロックアウトは通常実用的な解決策ではありませんが、ブルートフォース攻撃に対処するまず、攻撃の成功は時間に依存するので、簡単な解決策は、パスワードをチェックするときにランダムな一時停止を挿入することです。数秒の一時停止を追加すると、ブルートフォース攻撃が大幅に遅くなる可能性がありますが、ほとんどの正当なユーザーが自分のアカウントにログインする,
遅延を追加すると、シングルスレッド攻撃が遅くなる可能性がありますが、攻撃者が複数の同時認証要求を送信すると効果的ではありません。
別の解決策は、複数の失敗したログインでIPアドレスをロックアウトすることです。この解決策の問題は、ISPまたは大企業が使用するプロキシサーバーをブロックすることによって、大規模なユーザーグループを誤ってブロックする可能性があ別の問題は、多くのツールがプロキシリストを利用し、次に進む前に各IPアドレスからいくつかの要求しか送信しないことです。,
広く利用可能なオープンプロキシリストを使用すると、攻撃者はIPブロックメカニズムを簡単に回避する可能性があります。がほとんどのサイトにはないブロック後に一つだけに失敗したパスワードは、攻撃者は利用でき合うり行います。攻撃者はリスト1,000の代理人が受験することができ2,000円又は3,000パスワードなしでられるように作ってあります。
それにもかかわらず、この方法の弱点にもかかわらず、攻撃の数が多いWebサイト(特にアダルトWebサイト)は、プロキシIPアドレスをブロックすること,
シンプルで驚くほど効果的な解決策は、失敗したパスワードに予測可能な動作を使用しないようにWebサイトを設計することです。たとえば、ほとんどのWebサイトでは、パスワードの失敗とともに”HTTP401エラー”コードが返されますが、一部のwebサイトでは、代わりに”HTTP200成功”コードが返されますが、これはいくつかの自動化されたシステムを愚かにしますが、回避するのも簡単です。
より良い解決策は、最終的に最も専用のハッカーを除くすべてを阻止するのに十分な動作を変えることです。,また、例えば、異なるエラーメッセージは毎回やりましょうを通じてユーザがページにそして迅速かつて再度パスワードになります。
いくつかの自動化されたブルートフォースツールは、攻撃者が失敗したパスワードの試行を示す特定のトリガー文字列を検索するように設定できます。たとえば、結果のページに”不正なユーザー名またはパスワード”というフレーズが含まれている場合、ツールは資格情報が失敗したことを認識し、リスト内の次の,これらのツールを欺く簡単な方法は、認証に成功したときに取得するページのHTMLソースにコメントとしてこれらのフレーズも含めることです。
一つまたは二つのログイン試行が失敗した後、ユーザー名とパスワードの入力だけでなく、秘密の質問に答えるようにユーザーに促すことができます。この問題自動攻撃を防いでくれるので、攻撃者からのアクセスの場合でも、いくのユーザ名とパスワードを正しい。,
また、システム全体で多数の攻撃を検出することができ、これらの条件下では、すべてのユーザーに秘密の質問に対する答えを求めることができます。アカウントを攻撃から保護したい上級ユーザーの場合は、特定のIPアドレスからのみログインを許可するオプションを与えます。
その他のテクニックは次のとおりです。
- アカウントを攻撃からすべてのユーザーが同じURLからサイトにアクセスできるわけではないように、ユーザーのブロックに一意のログインUrlを割り当てます。,
- aを使用して自動攻撃を防ぐ
- アカウントを完全にロックアウトするのではなく、機能が制限されたロックダウンモードにします。
攻撃者は、多くの場合、これらの技術の多くを自分で回避することができますが、いくつかの技術を組み合わせることによって、ブルートフォースをattacks.It あなたのwebサイトから特にパスワードを取得すると判断された攻撃者を止めるのは難しいかもしれませんが、これらの技術は確かに初心者のハッカー,これらの技術はまた、攻撃者側の作業を増やす必要があり、攻撃を検出し、攻撃者を特定する機会を増やすことができます。
ブルートフォース攻撃は完全に停止するのは難しいですが、失敗したログイン試行ごとにWEBサーバーにHTTP401ステータスコードが記録されるため、検出するのはlogs.It ブルートフォース攻撃のログファイルを監視することが重要です-特に、攻撃者が有効なパスワードを見つけたことを意味する200のstatuscodesが混在しています。,誰かのメールまたはIRCクライアントの参照URLを持つins
ブルートフォース攻撃は完全に停止するのは驚くほど難しいですが、慎重な設計と複数の対策で、これらの攻撃への露出を制限するこ,
最終的に、唯一の最善の防御は、ユーザーが強力なパスワードの基本的なルールに従うことを確認することです:長い予測不可能なパスワードを使用し、辞
コンピュータと人間を区別するための完全に自動化された公開チューリングテスト、または、人間とコンピュータを区別するためのプログラムです。最初に広く自動検索の提出を防ぐためにAlta Vistaによって使用され、sはブルートフォース攻撃を含む自動化された悪用の任意の種類を停止するのに特に,
彼らは、人間が合格するのは簡単ですが、コンピュータが合格するのは難しいいくつかのテストを提示することによって動作します。
aが有効であるためには、人間はできるだけ時間の100パーセントに近い正しくテストに答えることができなければなりません。コンピュータなどに近いと100%の時間として可能です。研究者カーネギーメロン大学のコンピュータ科学を継続的に改善や新たな。,
あなた自身を開発している場合は、それが問題であることがどれほど難しいかではないことを覚えておいてください-それはコンピュータが正しい答えを得ることである可能性がどれほど高いかです。私はかつて、三つのシマウマの写真をユーザーに提示するaを見ました,どのように多くのシマウマがあったかを尋ねる複数の選択肢の質問でpicture.To 質問に答
コンピュータプログラムが質問を理解し、画像を解釈することは非常に難しいでしょうが、プログラムはランダムに答えを推測し、それを三分の一, これは満足のいくレベルのリスクに見えるかもしれませんが、決して効果的ではありません。無料の電子メールサービスを実行し、スパマーが一括でアカウントを作成するのを防ぐためにこのようなものを使用する場合は、1,000のアカウントを自動的に作成し、平均して333の試行が成功することを期待するスクリプトを作成するだけです。
それにもかかわらず、単純なものはまだブルートフォース攻撃に対して有効かもしれません。,攻撃者が正しいユーザー名とパスワードの推測を送信する可能性を、この章で説明する他の技術と組み合わせて正しく推測する可能性と組み合わせると、シンプルであっても効果的であることが証明されます。
図1:パスワード認証遅延:C#
図2:パスワード認証遅延:VB.NET
Public Sub AuthenticateRequest(ByVal obj As Object, ByVal ea As System.EventArgs) Dim objApp As HttpApplication Dim objContext As HttpContext Dim ran As Random objApp = obj objContext = objApp.Context ' If user identity is not blank, pause for a random amount of time If objApp.User.Identity.Name <> "" Then ran = New Random Thread.Sleep(ran.Next(ran.Next(minSeconds, maxSeconds) * 1000)) End IfEnd Sub