Overview
ブルートフォース攻撃(Brute Force Attack)とは、パスワードや暗号鍵などの認証情報を、考えられるすべての組み合わせを順番に試行して突破する総当たり攻撃の総称です。最も原始的ながら確実性の高い攻撃手法であり、十分な時間と計算リソースがあれば理論上はあらゆるパスワードを解読できます。
ブルートフォース攻撃にはいくつかのバリエーションがあります。辞書攻撃(Dictionary Attack)は一般的な単語やよく使われるパスワードのリストを使用する手法、パスワードスプレー(Password Spraying)は一つの一般的なパスワードを多数のアカウントに対して試行する手法です。また、レインボーテーブルはハッシュ値から元のパスワードを逆引きするための事前計算テーブルを使用する手法です。
近年のGPUの高性能化により、オフラインでのパスワードクラッキング速度は飛躍的に向上しています。Hashcatなどのツールを使用すると、最新のGPUで毎秒数十億のハッシュを計算でき、短い・単純なパスワードは数秒で解読されます。適切なパスワードポリシーとアカウントロックアウト、多要素認証の導入が不可欠です。
Details
ブルートフォース攻撃の種類
- 単純総当たり攻撃(Simple Brute Force):文字の全組み合わせを順番に試行する。短いパスワードには有効だが、文字数が増えると指数関数的に試行回数が増加し、現実的な時間内での解読が困難になる
- 辞書攻撃(Dictionary Attack):一般的な単語、よく使われるパスワード(「password」「123456」等)、過去の漏洩データから収集されたパスワードリストを使用する。多くのユーザーが弱いパスワードを使用しているため、成功率が高い
- ハイブリッド攻撃(Hybrid Attack):辞書攻撃と総当たりを組み合わせた手法。辞書の単語に数字や記号を付加する変換ルール(例:「password」→「P@ssw0rd123」)を適用して試行する
- リバースブルートフォース:一つのパスワードを多数のユーザー名に対して試行する。アカウントロックアウトを回避しながら、弱いパスワードを使用しているアカウントを発見できる
- パスワードスプレー(Password Spraying):リバースブルートフォースの発展形。一般的なパスワードを時間をかけて多数のアカウントに試行する。ロックアウト閾値を下回る速度で実行するため、検知が困難
GPUクラッキングとHashcat
Hashcatは世界で最も高速なパスワード回復ツールで、GPUの並列計算能力を活用してハッシュ値のクラッキングを行います。最新のハイエンドGPU(NVIDIA RTX 4090等)を使用すると、MD5ハッシュに対して毎秒1,640億回以上の試行が可能です。
bcryptやArgon2などの計算コストの高いハッシュアルゴリズムは、GPU並列計算に対して耐性があります。例えば、bcryptのコスト12の場合、同じGPUでも毎秒数万回程度の試行に制限されます。パスワードの保存にはMD5やSHA-1ではなく、bcrypt、scrypt、Argon2idなどの専用アルゴリズムを使用することが極めて重要です。
アカウントロックアウト
一定回数のログイン試行失敗後にアカウントをロックする防御機構です。一般的には5〜10回の失敗後に一時的(15〜30分)または永久的なロックを適用します。ただし、アカウントロックアウトにはDoS攻撃への悪用リスクがあります。攻撃者が意図的に他人のアカウントをロックアウトさせることで、正規ユーザーのアクセスを妨害できます。
このリスクを軽減するため、段階的なロックアウト(最初は短時間、繰り返すと長時間)、CAPTCHAの導入、IPベースのレート制限との組み合わせなどが推奨されます。
レート制限とスロットリング
レート制限(Rate Limiting)は、特定のIPアドレスやユーザーアカウントからのログイン試行回数を時間単位で制限する防御手法です。例えば、同一IPからのログイン試行を1分間に5回に制限します。
さらに高度な手法として、プログレッシブ遅延(Progressive Delay)があります。失敗するたびに次の試行までの待機時間を指数関数的に増加させる方式で、1回目の失敗後は1秒、2回目は2秒、3回目は4秒、4回目は8秒と増加させます。これにより自動化されたブルートフォースツールの効率を大幅に低下させることができます。
Security Measures
- 01強力なパスワードポリシーの実施:最低12文字以上のパスワードを要求し、パスフレーズの使用を推奨してください。既知の漏洩パスワードリスト(Have I Been Pwned API等)との照合を行い、一般的な弱いパスワードの設定を拒否しましょう。定期的な強制変更よりも、長く強力なパスワードの設定を重視します。
- 02多要素認証(MFA)の導入:パスワードに加えて、認証アプリやハードウェアセキュリティキーによる二要素目の認証を義務化してください。パスワードが漏洩・解読されても、MFAが有効であればアカウントの不正アクセスを防止できます。
- 03適切なレート制限とアカウントロックアウト:ログイン試行に対するレート制限を実装し、一定回数の失敗後にプログレッシブ遅延またはアカウントロックアウトを適用してください。ただし、正規ユーザーへの影響を最小限にするため、CAPTCHA導入やIPベースの制限との組み合わせを検討しましょう。
- 04安全なパスワードハッシュアルゴリズムの使用:パスワードの保存にはbcrypt、scrypt、またはArgon2idを使用し、適切なコストパラメータを設定してください。MD5やSHA-1などの高速ハッシュアルゴリズムは絶対に使用しないでください。ソルト(Salt)の付与により、レインボーテーブル攻撃も防止できます。
- 05ログイン試行の監視とアラート:異常なログイン試行パターン(短時間の大量試行、複数IPからの同一アカウントへの試行、通常と異なるジオロケーション)を検知するSIEM/ログ分析システムを導入してください。検知時にリアルタイムでセキュリティチームにアラートを送信し、迅速な対応を可能にしましょう。
- 06CAPTCHAの導入:ログインページにreCAPTCHA v3やhCaptchaなどのCAPTCHAを導入し、自動化されたブルートフォースツールの実行を困難にしてください。リスクスコアに基づく適応型CAPTCHA(通常時は非表示、疑わしい場合のみ表示)の採用が、ユーザビリティとセキュリティのバランスに優れています。
Incidents
📋 iCloud セレブリティ写真流出事件(2014年)
2014年8月、「Celebgate」または「The Fappening」として知られる事件が発生しました。攻撃者はAppleのiCloudサービスに対してブルートフォース攻撃と標的型フィッシングを組み合わせ、著名人のiCloudアカウントに不正アクセスしました。
当時、AppleのiCloudログインAPIにはレート制限やアカウントロックアウトが適切に実装されていなかったため、iBruteなどのツールを使用した大量のパスワード試行が可能でした。この事件を受けてAppleはiCloudのセキュリティを強化し、ログイン試行の制限を導入するとともに、二要素認証の適用を大幅に拡大しました。
📋 WordPress xmlrpc.php ブルートフォース攻撃
WordPressのxmlrpc.phpエンドポイントは、XML-RPCプロトコルを通じて外部からの投稿やコメント管理を可能にする機能ですが、ブルートフォース攻撃の格好の標的となっています。特にsystem.multicall機能を悪用すると、1回のHTTPリクエストで数百のパスワードを同時に試行でき、従来のログイン制限を回避できます。
この手法により、通常のwp-login.phpに対するブルートフォース攻撃と比較して、数十倍から数百倍の効率でパスワードクラッキングが可能となります。対策としてxmlrpc.phpの無効化、アクセス制限、WAF(Web Application Firewall)の導入が広く推奨されています。世界中の多くのWordPressサイトが日常的にこの攻撃にさらされています。
📋 Alibaba TaoBao アカウント侵害(2016年)
2016年、中国のECプラットフォームAlibaba傘下のTaoBao(淘宝網)で、約2,000万件のアカウントに対するブルートフォース攻撃が発生しました。攻撃者は他のサービスから漏洩した9,900万件のユーザー名とパスワードの組み合わせを使用してログインを試行しました。
約2,059万件のアカウントで不正ログインに成功し、攻撃者はユーザーの個人情報や購入履歴にアクセスしました。この攻撃はクレデンシャルスタッフィング(資格情報の使い回し攻撃)の要素も含んでおり、ユーザーが複数のサービスで同じパスワードを使い回すリスクを如実に示しました。Alibabaは影響を受けたアカウントのパスワードリセットを実施し、セキュリティ対策を強化しました。