ブルートフォース攻撃(総当たり攻撃)とは?「仕組み」や「対策」をわかりやすく解説!

パスワードを使ったログイン方式では、ブルートフォース攻撃(Brute Force Attack)という危険な攻撃手法が存在します。この攻撃は、文字通り「力ずく」でパスワードを突破しようとする方法で、現在でも多くのシステムがその対象となっています。

この記事では『ブルートフォース攻撃』について、以下の内容を図を用いてわかりやすく解説します。

  • ブルートフォース攻撃(総当たり攻撃)とは?
  • ブルートフォース攻撃の流れ
  • 「辞書攻撃」や「リバースブルートフォース攻撃」との違い
  • ブルートフォース攻撃への対策方法

ブルートフォース攻撃(総当たり攻撃)とは?

ブルートフォース攻撃(総当たり攻撃)とは?

ブルートフォース攻撃(Brute Force Attack)は、考えられるすべての文字の組み合わせを総当たりで試し、正しいパスワードを見つける攻撃手法です。別名「総当たり攻撃」とも呼ばれています。

例えば、「英小文字4桁」の形式のパスワードであれば、aaaa, aaab, aaac, …, zzzzというように、攻撃者はこれらすべてのパターンを一つひとつ試し、ログインできるパスワードを探します。その名の通り「力ずく(brute force)」で突破を目指す強力な攻撃手法です。

ブルートフォース攻撃の流れ

ブルートフォース攻撃は、以下のような流れで行われます。

  • 攻撃対象のユーザーIDを決める
    • 例:admintest@example.comなど、狙いたいアカウントを固定
  • あらゆる文字列のパターンを生成
    • アルファベット、数字、記号を組み合わせたあらゆるパターンのパスワードを生成
  • ログインフォームに自動で入力
    • 自動化されたスクリプトやツールで連続的にログイン試行
  • 正しいパスワードが見つかればログイン成功
    • 成功すれば不正アクセスされます。その場合、アカウントが乗っ取られたり、個人情報などが盗まれる可能性があります。

「ブルートフォース攻撃」と「辞書攻撃」の違い

「ブルートフォース攻撃」とよく似た攻撃に「辞書攻撃(Dictionary Attack)」があります。以下に違いを示します。

比較項目ブルートフォース攻撃辞書攻撃
攻撃の内容すべての文字の組み合わせを総当たりで試すよく使われるパスワードだけを試す
処理時間非常に長い比較的短い
成功率理論上すべてのパスワードに有効一般的なパスワードに有効
攻撃の柔軟性時間さえあれば必ず突破できる(理論上)辞書にないパスワードには無力

辞書攻撃の方が実際の攻撃でよく使われます。理由は、短時間で多くのアカウントに効果を発揮しやすいためです。

「ブルートフォース攻撃」と「リバースブルートフォース攻撃」の違い

リバースブルートフォース攻撃はその名の通り、ブルートフォース攻撃の「逆」のことを実行する攻撃です。

ブルートフォース攻撃は、「ユーザーIDを固定」して、いろいろなパスワードを試してログインを狙います(例:adminに対してpassword1password2password3…を順番に試す)。

一方、リバースブルートフォース攻撃は「パスワードを固定」して、いろいろなユーザーIDを試してログインを狙います(例:パスワードを123456に固定して、user1user2user3…と順番に試す)。なお、変更される部分がIDではない別の要素の場合もあります。

以下に「ブルートフォース攻撃」と「リバースブルートフォース攻撃」の違いをまとめます。

比較項目ブルートフォース攻撃リバースブルートフォース攻撃
固定するものユーザーID(例:admin)パスワード(例:123456)
変えるものパスワードユーザーID
主な目的1つのアカウントを突破多くのアカウントのうち何人かを突破
代表例「admin」に全パスワードを試す「123456」で全IDを試す
利用されやすい理由特定の重要アカウントを狙えるアカウントロックを回避しやすい

攻撃者にとって、リバースブルートフォース攻撃を利用する最大のメリットは、「アカウントロックを回避しやすい」ことです。多くのシステムでは、同じIDでログインを何度も失敗すると「アカウントロック」される仕組みがある一方で、ユーザーIDを何度間違えてもロックがかからない場合があります。そのため、「パスワードを固定してIDを変える」ことで、システムのセキュリティ対策をすり抜けて攻撃を続けられる可能性があるのです。

リバースブルートフォース攻撃は「逆総当たり攻撃」や「リバースブルートフォースアタック」とも呼ばれています。

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

ブルートフォース攻撃を防ぐためにできる実践的な対策を紹介します。

対策1:強力なパスワードを使う

単純なパスワードは即突破されます。以下のポイントを意識した強固なパスワードを設定しましょう。

  • できるだけ長い文字数(例:12文字以上)
  • 英大文字・小文字・数字・記号を混ぜる
  • 「password123」など、推測されやすいものは避ける
  • 意味のある単語の組み合わせも避ける
  • OK例:xT!7g@2v#MnZ8Wq

パスワードマネージャーを活用すると強力なパスワードを安全に管理できます。

対策2:二要素認証(2FA)の導入

パスワードがバレても、認証コードやスマホアプリでの認証が必要になるため、不正ログインを防げます。

2FAの例

  • Google Authenticator(ワンタイムコード)
  • SMS認証(スマホに届く確認コード)
  • メールによる本人確認リンク

対策3:アカウントロック機能の導入

特定のIDに対して、ログイン失敗が一定回数を超えたら一時的にアカウントをロックする仕組みを実装すると、ブルートフォース攻撃の試行を防止できます。

対策4:reCAPTCHAの導入

Google reCAPTCHAなどの仕組みを使うと、ログインフォームにアクセスしてきたのが人間かボットかを判別できます。これにより、自動化ツールによる攻撃の多くを防ぐことができます。

本記事のまとめ

この記事では『ブルートフォース攻撃』について、以下の内容を説明しました。

  • ブルートフォース攻撃(総当たり攻撃)とは
    • 考えられるすべての文字列パターンを総当たりで試す攻撃手法。
    • 例:aaaazzzzまで順番にすべてのパスワードを試す。
    • 時間とリソースがあれば、理論上どんなパスワードでも突破可能。
  • 辞書攻撃との違い
    • 辞書攻撃は、「よく使われるパスワードをまとめたリスト(辞書)」を使って試す攻撃。
    • 全パターンを試すブルートフォース攻撃に比べて処理が早い。
    • 簡単なパスワードに対しては辞書攻撃のほうが効率的。
    • 辞書攻撃は、辞書にないパスワードは突破できない。
  • リバースブルートフォース攻撃との違い
    • ブルートフォース攻撃は「ユーザーIDを固定して、パスワードを変える」。
    • リバースブルートフォース攻撃は「パスワードを固定して、ユーザーIDを変える」。
    • リバースブルートフォースは、アカウントロックの仕組みを回避しやすい。
    • 一部の弱いパスワードを使っているユーザーを狙うのに有効。

お読み頂きありがとうございました。