catch-img

ブルートフォース攻撃の危険性とその対策5種

ブルートフォース攻擊(ブルートフォースアタック)とはサイバーセキュリティにおいて、ユーザのアカウント・パスワードを解読するため、考えられる全てのパターンや組み合わせを試す攻擊手法のことです。

「ブルートフォース(brute force)」という言葉がもともと意味「強引な」「力ずく」といった意味を表しており、総当り攻擊とも呼称されます。
ユーザー名やパスワードを解読することで、不正アクセス等の被害へと繋がる可能性が非常に高い攻撃手法と言われています。

ブルートフォース攻撃は一見すると原始的で初歩的な手法に感じますが、原理的には時間をかけすべてのパターンを試せば、いつかは正解に行きつくという確実性と再現性を持った攻撃手法です。

また後述しますが、ブルートフォース攻撃ではツールやソフトウェアを利用して攻撃することが一般的です。
昨今の著しいコンピュータの性能向上によって反復処理のスピードも上がっているため、以前より早く正解を当てられてしまう環境が整っています。

ブルートフォース攻撃は原始的ですが、決して軽視できる攻撃ではありません。

本記事では、ブルートフォース攻擊の仕組みと対策方法5種をご紹介します。


ブルートフォース攻撃の手法とは

前出の通りブルートフォース攻撃とはユーザー名、パスワードを組み合わせて一致するまで当たり続けるという攻撃手法です。

それらの組合せは膨大な数となります。
そのため、ブルートフォース攻撃は手動ではなくツールやソフトウェアを利用して行われることが一般的です。
代表的なツールとしてはHydraなどが挙げられるでしょう。

ブルートフォース攻撃に利用されるソフトウェアは、統計的に正確になりコードを解読するまで、何十億もの文字、数字、記号の組み合わせを繰り返し実行します。

ここでブルートフォース攻撃の種類を2つご紹介します。
基本的にはID(ユーザー名)とパスワードの組み合わせ方による分類です。


インクリメンタル攻撃

ID(ユーザー名など)を固定し、パスワードを連続した順番に試行して行くタイプのものです。
組み合わせ例:
ID(固定):securetarou
パスワード:aaaa、baaa、caaa、daad、、、


辞書攻撃

こちらもID(ユーザー名など)を固定し、パスワードを順番に試行するタイプです。
「インクリメンタル攻撃」と異なる点は「インクリメンタル攻撃」が「連続した順番」に試して行くのに対し、こちらは「辞書ファイル」と呼ばれるよくパスワードに用いられるであろう文字列のかたまりをランダムに試行していきます。

組み合わせ例:
ID(固定):securetarou
パスワード:password123、p@ssword123、Password123、、、
※パスワード候補がファイルにリスト化されており、それをランダムに試していく

上記で紹介した例はIDを固定し、パスワードを施行していく手法でしたが、パスワードを固定し、IDを変えていく「リバースブルートフォース攻撃」という手法も存在します。

IDに対してパスワードの入力回数を制限するという対策が存在しますが、この方法を取ると制限を回避して攻撃を続ける事ができます。

このような特定のIDのみを攻撃し続ける事によるアカウントロックなどの対策を避けるような攻撃を「パスワードスプレー攻撃」とも呼びます。


ブルートフォース攻撃への対策とは

ブルートフォース攻撃に対してはどのように対策していく方法がよいのでしょうか。

OWASPにおいてもブルートフォース攻撃への対策がまとめて取り上げられています。
抜粋してご紹介します。


一定回数以上のパスワード認証失敗時に、アカウントをロックする

ブルートフォース攻撃への対策として最も一般的な方法は、ログイン時に決まった回数以上パスワードの入力を間違えた際にアカウントをロックアウト(利用できなくする)です。

具体的には「3回」などと同一アカウントでログインが試せる回数を決め、これ以上の回数パスワード入力を失敗した場合にはアカウントがロックされます。
その後はメールなどの認証を経由してのパスワードの再設定以外ではロックが解除できないといった流れの対策になります。

この手法は、ユーザーにとってもデメリットが少なく、かつ攻撃をかなり高い確率で防ぐことができるため、最も一般的なブルートフォース攻撃への対策として知られています。

ただし、この対策方法は逆に悪用された場合、多くのユーザーアカウントを意図的にロックアウトすることも可能です。
そのため、すべてのシステムや場面で必ず利用できる対策ではありません。


未知のデバイス・ブラウザ・IPからのアクセスを確認する

利用したことのないデバイスからのアクセスや、ブラウザのクッキー情報を保持しないアクセス、普段とは異なるIPからのログインがされた場合には、原則的にメールやSMSによる認証を挟んだり、アクセスを拒否することも有効な対策です。


パスワード入力の失敗時に、時間をおかないと再試行できなくする

パスワード入力に失敗した場合、ある一定の時間(数十秒、または数十分など)が経過しない限り、同じIDに対するパスワード入力をできなくするというのも対策方法の一つです。

特にツールなどを利用した短時間で非常に多い回数のブルートフォース攻撃に対策する方法となります。

この方法は、単一のセッションスレッドから行われるブルートフォース攻撃には有効ですが、攻撃者が複数のスレッドを利用して同時にログイン認証しようとした場合は、この対策が回避される可能性が高くなります。


パスワード入力の失敗時に、再試行以外のアクションを要求する

攻撃者により繰り返し実行されるブルートフォース攻撃に対策するため、一度パスワードの認証に失敗した場合、パスワードの入力以外の行動をさせることも対策の一つです。
具体的には「秘密の質問」を入力させる方法などが存在します。


CAPTCHAの利用

CAPTCHA(Webページに設置された入力フォームなどで、人間による操作・入力であることを確かめるために行われるテスト)を利用することで、ツールなどを利用したブルートフォース攻撃に対応することが可能です。

具体的にはパスワードの認証時に歪んだ単語や画像を読み取ったり、「私はロボットではありません」というボックスにチェックを付けたりする仕組みを指します。

これは、ひたすらIDやパスワードを繰り返し入力しようとする攻撃に対して、画面上でマウスをクリックさせるというひと手間を入れさせることで、攻撃を手を緩めさせようとするものです。
Googleの提供するreCAPTCHAなどが有名です。


さいごに

ブルートフォース攻撃はその手法が原始的ではありますが、ゆえに世界中で広く使われておりWeb 開発者も運営者も注意を払うべき攻撃手法です。

Webアプリケーションの開発時に適切な対応が実装されているかを意識することが問題解消へ向けての第一歩となります。
Webに携わる開発者・管理者として、全体像に目を向けながらセキュアな開発を心がけましょう。

弊ブログにおいては、Webセキュリティ対策をどのような順番で進めていくべきかに関してまとめた記事もございます。
こちらも併せてご一読いただけますとWebセキュリティに関する理解が進みやすくなると思います。

また、ブルートフォース攻撃が原因となりやすい不正アクセスの被害などについてはこちらにまとめております。サイバー攻撃の被害例などを把握するのにお役立てください。

最後になりますが、Webアプリケーションに潜む各種の脆弱性については、yamoryを用いることで検出が可能です。
ぜひ一度お試しいただければ幸いです。

人気の記事

募集中のセミナー

ページトップへ戻る