こんにちは、フルスタックエンジニアのryuです。
今回の記事では、基本情報技術者試験の過去問を使いながら、パスワードリスト攻撃とは何かを解説します。
パスワードに関する攻撃には、
「パスワードリスト攻撃」 「辞書攻撃」 「ブルートフォース攻撃」 「リバースブルートフォース攻撃」
など、似た名前のものがいくつもあります。
基本情報技術者試験では、この違いを選択肢から見分ける問題が出ることがあります。
名前だけを丸暗記すると混乱しやすいのですが、
「何を固定して、何を変えながらログインを試しているのか」
に注目すると整理しやすくなります。
パスワードリスト攻撃のポイントは、別のサービスなどから流出したIDとパスワードの組合せを使って、ほかのサービスへログインを試すことです。
この記事では、過去問を解きながら、パスワードリスト攻撃の仕組み、ほかの攻撃との違い、対策方法、科目Bのセキュリティ問題での考え方まで順番に解説します。
パスワードリスト攻撃の手口に該当するものはどれか¶
今回はこちらの問題です。
パスワードリスト攻撃の手口に該当するものはどれか。
ア:辞書にある単語をパスワードに設定している利用者がいる状況に着目して、攻撃対象とする利用者IDを一つ定め、辞書にある単語やその組合せをパスワードとして、ログインを試行する。 イ:パスワードの文字数の上限が小さいWebサイトに対して、攻撃対象とする利用者IDを一つ定め、文字を組み合わせたパスワードを総当たりして、ログインを試行する。 ウ:複数サイトで同一の利用者IDとパスワードを使っている利用者がいる状況に着目して、不正に取得した他サイトの利用者IDとパスワードの一覧表を用いて、ログインを試行する。 エ:よく用いられるパスワードを一つ定め、文字を組み合わせた利用者IDを総当たりして、ログインを試行する。 出典:平成31年春期 問37
答えは、ウです。
ウでは、
別のサイトから取得した
ID + パスワード
↓
別サービスでログインを試す
という攻撃を行っています。
これがパスワードリスト攻撃です。
パスワードリスト攻撃とは?¶
パスワードリスト攻撃とは、何らかの方法で入手したIDとパスワードの組合せを利用し、別のWebサービスなどへの不正ログインを試みる攻撃です。
英語では、Credential Stuffingと呼ばれることがあります。
例えば、利用者がサービスAとサービスBで同じ認証情報を使っているとします。
サービスA
ID:ryu@example.com
パスワード:abc12345
サービスB
ID:ryu@example.com
パスワード:abc12345
もしサービスAからIDとパスワードが流出すると、攻撃者はその組合せを使ってサービスBへログインを試すことができます。
サービスAから認証情報が流出
↓
ryu@example.com / abc12345
↓
サービスBでログインを試す
↓
同じパスワードならログイン成功
これがパスワードリスト攻撃の基本的な考え方です。

重要なのは、攻撃者が必ずしもパスワードそのものを推測しているわけではないことです。
すでに取得したIDとパスワードの組合せを別のサービスでも試している点が特徴です。
なぜパスワードの使い回しが危険なの?¶
パスワードリスト攻撃が成立しやすくなる大きな原因が、パスワードの使い回しです。
例えば、10個のサービスを利用していて、すべて同じパスワードを使っていたとします。
そのうち1つのサービスから認証情報が漏えいすると、ほかのサービスにも影響が広がる可能性があります。
サービスAから認証情報が漏えい
↓
サービスBでも試す
↓
サービスCでも試す
↓
サービスDでも試す
つまり、利用しているサービスのうち一つで情報が漏れただけでも、同じ認証情報を使っている別サービスまで不正ログインされる可能性があります。
そのため、サービスごとに異なるパスワードを使うことが重要です。
アは辞書攻撃¶
それでは、ほかの選択肢も確認してみましょう。
アはこちらです。
辞書にある単語をパスワードに設定している利用者がいる状況に着目して、攻撃対象とする利用者IDを一つ定め、辞書にある単語やその組合せをパスワードとして、ログインを試行する。
これは辞書攻撃です。
辞書攻撃では、攻撃対象のIDを決めたうえで、
password
admin
welcome
baseball
dragon
のような、パスワードとして使われやすい文字列を集めたリストを使ってログインを試します。
イメージすると、
ID:user@example.com に固定
password1 → 失敗
welcome → 失敗
admin123 → 失敗
...
という攻撃です。
ポイントは、
IDを固定して、辞書に登録されたパスワード候補を順番に試す
ことです。
パスワードリスト攻撃との違いは、別サービスから取得した「IDとパスワードの組合せ」をそのまま使っているわけではない点です。
イはブルートフォース攻撃¶
イはこちらです。
パスワードの文字数の上限が小さいWebサイトに対して、攻撃対象とする利用者IDを一つ定め、文字を組み合わせたパスワードを総当たりして、ログインを試行する。
これはブルートフォース攻撃(総当たり攻撃)です。
ブルートフォース攻撃では、考えられる文字列の組合せを順番に試します。
例えば、数字4桁のパスワードなら、
0000
0001
0002
0003
...
9999
というように試すイメージです。
つまり、
ID:固定
パスワード:総当たり
です。
パスワード候補を辞書から選ぶのではなく、可能な組合せを網羅的に試す点が辞書攻撃との違いです。
エはリバースブルートフォース攻撃¶
エはこちらです。
よく用いられるパスワードを一つ定め、文字を組み合わせた利用者IDを総当たりして、ログインを試行する。
これはリバースブルートフォース攻撃(逆総当たり攻撃)です。
一般的なブルートフォース攻撃では、
IDを一つ固定
↓
パスワードを何度も変更
します。
一方、リバースブルートフォース攻撃では逆です。
パスワードを一つ固定
↓
IDを次々変更
します。
例えば、非常によく使われるパスワードを一つ決め、
password = "password123"
user001 → 試す
user002 → 試す
user003 → 試す
user004 → 試す
という形で攻撃します。
名前に「リバース」と付いているのは、通常の総当たり攻撃とはIDとパスワードの扱いが逆だからです。
4つの攻撃を比較して覚えよう¶
今回の選択肢に出てきた攻撃を整理すると、次のようになります。
| 攻撃 | ID | パスワード | 特徴 |
|---|---|---|---|
| パスワードリスト攻撃 | 流出したID | 流出したパスワード | 別サービスから得た組合せを試す |
| 辞書攻撃 | 基本的に固定 | 辞書の候補を試す | よく使われる単語などを試す |
| ブルートフォース攻撃 | 基本的に固定 | 総当たり | 全ての組合せを試す |
| リバースブルートフォース攻撃 | 多数試す | 固定 | よく使われるパスワードを多数のIDへ試す |
基本情報技術者試験では、攻撃名を見て意味を答えるだけではなく、今回のように「説明から攻撃名を判断する」問題があります。
そこで、
何が固定されているのか 何を変えているのか 認証情報をどこから入手したのか
を見るようにすると判断しやすくなります。
パスワードリスト攻撃への対策¶
では、パスワードリスト攻撃を防ぐにはどうすればよいのでしょうか。
利用者側で特に重要なのは、次のような対策です。
パスワードを使い回さない¶
一番重要なのは、複数のサービスで同じパスワードを使い回さないことです。
例えば、
サービスA:Password_A
サービスB:Password_B
サービスC:Password_C
のように異なるパスワードにしておけば、サービスAから認証情報が漏れたとしても、そのパスワードをサービスBやCへそのまま使うことはできません。
「全部違うパスワードなんて覚えられない」と感じる場合は、信頼できるパスワードマネージャーなどを利用して管理する方法もあります。
多要素認証を設定する¶
多要素認証も、不正ログイン対策として重要です。
パスワードだけの場合、
ID + パスワード
↓
ログイン
ですが、多要素認証を設定すると、
ID + パスワード
+
別の認証要素
↓
ログイン
となります。
例えば、
- 認証アプリ
- セキュリティキー
- 生体認証
- 所持している端末を使った確認
などです。
仮にIDとパスワードが第三者に知られても、追加の認証が必要であれば、それだけでログインされるリスクを下げられます。
多要素認証についてはこちらでも解説しています。
あわせて読みたい
パスキーを利用できるサービスでは検討する¶
近年は、パスワードではなくパスキーを利用できるサービスも増えています。
利用できるサービスであれば、パスキーを利用することも不正ログイン対策の一つです。
基本情報技術者試験では、特定のサービスの設定方法を覚えるよりも、
パスワードだけに依存しない認証を利用する
という考え方を理解しておくとよいでしょう。
不審なログインに気付けるようにする¶
サービスによっては、
- ログイン履歴
- ログイン通知
- 不審なアクセスの通知
などを確認できます。
身に覚えのないログインがあった場合は、パスワード変更やログアウト処理など、サービスが案内している対処を行いましょう。
サービス提供者側ではどう対策する?¶
基本情報技術者試験では、利用者側だけでなく、システムを提供する側の視点で考えることも大切です。
例えば、サービス提供者側では、
- 多要素認証を提供する
- 不審なログインを検知する
- ログイン試行を監視する
- 異常なアクセスに制限をかける
- 利用者へログイン通知を行う
- 漏えいした認証情報の悪用を検知する
などの対策が考えられます。
ここで大切なのは、
「パスワードを複雑にすればすべて解決する」と考えないこと
です。
パスワードリスト攻撃では、攻撃者が正しいパスワードをすでに持っている場合があります。
そのため、パスワードの強度だけでは防げないケースがあります。
「認証情報が漏えいする可能性もある」という前提で、多要素認証や異常検知など複数の対策を組み合わせることが重要です。
科目Bのセキュリティでは「攻撃の流れ」を読む¶
今回の問題は、旧試験制度の知識問題です。
しかし、現在の基本情報技術者試験では科目Bでも情報セキュリティが扱われます。
科目Bのセキュリティ問題では、
「パスワードリスト攻撃とは何ですか?」
と単純に聞かれるとは限りません。
例えば、
あるサービスからIDとパスワードが漏えいした
↓
利用者の多くが別サービスでも同じパスワードを使っていた
↓
別サービスでも不正ログインが発生した
という状況から、
「何が原因なのか」 「どの攻撃手法が考えられるのか」 「どの対策が必要なのか」
を考える必要があります。
この例なら、
他サービスから認証情報が漏れる
↓
同じ認証情報を別サービスへ入力
↓
パスワードを使い回していた利用者へ不正ログイン
という流れです。
ここまで読めれば、パスワードリスト攻撃だと判断できます。
つまり、科目Aで用語を覚え、科目Bではその知識を実際の状況へ当てはめるイメージです。
Giji Academyで科目Bのセキュリティを実践的に学ぶ¶
情報セキュリティは、用語を一つずつ暗記するだけでは、実際の問題になると迷いやすい分野です。
今回のパスワードリスト攻撃も、
パスワードリスト攻撃
=
流出したパスワードを使う
だけではなく、
別サービスからID・パスワードが漏えい
↓
パスワードを使い回している
↓
別サービスへログインを試す
↓
不正ログイン
という流れまで理解しておく方が、問題文が変わっても対応しやすくなります。
Giji Academyでは、基本情報技術者試験の科目Bに関連するセキュリティ問題を、ネットワークやサーバーの仕組みから段階的に学習できます。
擬似言語だけではなく、
- ネットワーク
- サーバー
- 認証
- 攻撃手法
- セキュリティ対策
などを、状況をイメージしながら学べるようにしています。
「用語は覚えているのに、科目Bの長い問題になると分からなくなる」という方は、用語の暗記から一歩進んで、攻撃の流れや対策まで考える練習をしてみてください。
登録不要で無料体験できます。
過去問解説まとめ¶
今回の記事では、次の問題について解説しました。
パスワードリスト攻撃の手口に該当するものはどれか。
ア:辞書にある単語をパスワードに設定している利用者がいる状況に着目して、攻撃対象とする利用者IDを一つ定め、辞書にある単語やその組合せをパスワードとして、ログインを試行する。 イ:パスワードの文字数の上限が小さいWebサイトに対して、攻撃対象とする利用者IDを一つ定め、文字を組み合わせたパスワードを総当たりして、ログインを試行する。 ウ:複数サイトで同一の利用者IDとパスワードを使っている利用者がいる状況に着目して、不正に取得した他サイトの利用者IDとパスワードの一覧表を用いて、ログインを試行する。 エ:よく用いられるパスワードを一つ定め、文字を組み合わせた利用者IDを総当たりして、ログインを試行する。 出典:平成31年春期 問37
答えは、ウです。
今回の4つの攻撃は、次のように整理できます。
- パスワードリスト攻撃:流出したIDとパスワードの組合せを別サービスで試す
- 辞書攻撃:よく使われる単語などをパスワード候補として試す
- ブルートフォース攻撃:考えられるパスワードを総当たりする
- リバースブルートフォース攻撃:パスワードを固定し、多数のIDでログインを試す
パスワードリスト攻撃への対策としては、パスワードを使い回さないことや、多要素認証などを利用することが重要です。
基本情報技術者試験では、攻撃手法の名前だけを暗記するのではなく、
どの情報を使って、誰に対して、何を試しているのか
まで理解しておきましょう。
Giji Academyでは、擬似言語に加えて、科目Bに関連するセキュリティ問題も実践的に学習できます。
Giji Academy|科目Bの擬似言語・セキュリティを学ぶ
基本情報技術者試験の過去問解説はこちらから確認できます。
あわせて読みたい





