その認証コード、攻撃者に渡っています ― 多要素認証をすり抜けるフィッシングの正体
こんばんは、かーでぃです。
技術書典20に向けてバックアップ本を書いているところなのですが、色々とセキュリティのことを勉強していくうちに、多要素認証(MFA)を突破する「リアルタイムフィッシング」なるものを見つけたので、記事にしておきます。
多要素認証してるから安心だぜ!と油断してると、痛い目を見る生きづらい世の中になってきました…
フィッシングとは?
フィッシングの目的
「フィッシング=パスワードを盗む攻撃」と思われがちですが、実はそれは途中段階に過ぎません。攻撃者の本当の目的は、アカウントにログインすることです。
まず言葉の由来ですが、フィッシング(Phishing) は英語の fishing(釣り) から来ています。
不特定多数にメールやメッセージを送り、だまされて情報を入力した人だけを「釣り上げる」ことから、この名前が付けられました。
なお “ph” という綴りは、昔のハッカー文化(phone-phreak=電話回線の不正利用)に由来する表記と言われています。

いま狙われているのは銀行口座だけではありません。メール、クラウドストレージ、チャット、グループウェアといった“仕事で使っているアカウント”が主な標的です。これらにログインできてしまえば、社内のやり取りを盗み見たり、取引先になりすましてメールを送ったり、共有フォルダから情報を持ち出したりできます。
つまり、パスワードは「盗みたい情報」ではなく、社内へ入るための鍵です。一度ログインに成功すれば、攻撃者はウイルスをばらまかなくても内部に入り込めます。最近の攻撃では、マルウェアを使わず“正規ユーザーとして振る舞う”方が、発見されにくく効果的だからです。
フィッシングは情報収集のための詐欺ではなく、企業ネットワークへ侵入するための入口になっています。だからこそ、少し怪しいメールを開いてしまった、というレベルの話では終わらず、組織全体の問題に発展する可能性があるのです。
どういう手で攻めてくる?
フィッシング攻撃は、特別なハッキング技術でシステムを壊すものではありません。多くの場合、人の行動を利用してログインさせることで成立します。いわば「侵入」ではなく、「入れてもらう」攻撃です。
最初はメールやメッセージから始まります。「アカウントのセキュリティ確認が必要です」「不審なログインが検知されました」「パスワードの有効期限が切れます」といった内容で、ログインを急がせる文面が送られてきます。最近では宅配の不在通知やクラウド共有の案内、請求書の確認依頼など、業務の延長に見えるものも多く、ぱっと見ただけでは判断が難しくなっています。
メール内のリンクを開くと、ログイン画面が表示されます。ここで表示されるのは“それっぽい画面”ではなく、本物と見分けがつかないレベルで再現されたページです。ロゴや配色だけでなく、パスワードを間違えたときの挙動まで再現されていることもあり、利用者は疑わずにIDとパスワードを入力してしまいます。この攻撃が厄介なのは、システムを破ったわけではなく、正規の手順でログインが成功してしまう点にあります。そのため、サービス側から見ると通常のログインと区別がつかず、発見が遅れやすいのです。
多要素認証とは?
このフィッシング攻撃に有効なのが、多要素認証です。多要素認証(MFA:Multi-Factor Authentication)とは、ログインの際に複数の種類の確認方法を組み合わせて本人かどうかを確認する仕組みです。パスワードだけに頼らず、「別の証拠」も合わせて確認することで、不正ログインを防ぐことを目的としています。
認証の要素は、大きく3つに分けられます。
知識要素(Something you know)
本人だけが知っているもの。代表例はIDとパスワードです。所持要素(Something you have)
本人が持っているもの。スマートフォンの認証アプリ、SMSで届く確認コード、ICカードなどが該当します。生体要素(Something you are)
本人の身体的特徴。指紋認証や顔認証などです。
例えば「パスワード入力+スマートフォンに届く確認コード」を要求するログインは、知識要素と所持要素を組み合わせた多要素認証です。仮にパスワードが漏れても、スマートフォンがなければログインできないため、安全性が高まります。
クラウドサービスやオンラインバンキングで多要素認証が推奨されているのは、パスワードが流出する可能性を前提にしているからです。
実際、パスワードは使い回しや推測、漏えいなどで知らないうちに第三者に渡ってしまうことがあります。多要素認証は、その“パスワードだけでは不十分”という前提に立った防御策と言えます。
ただし、ここで重要なのは、多要素認証は「本人確認の強化」であり、ログインの仕組みそのものを守るものではない、という点です。
この違いが、次に説明する問題につながっていきます。
多要素認証で防げないの?
多要素認証を設定していれば安心、と思っている方は多いはずです。実際、パスワードだけのログインに比べれば安全性は大きく向上します。
しかし最近は、その多要素認証を前提にした攻撃が登場しています。認証の仕組みを破るのではなく、正しい手順のまま通過させてしまうタイプの攻撃です。
ここでは、なぜ多要素認証が有効なはずなのに侵入が成立してしまうのか、その理由を見ていきます。
リアルタイムフィッシング
リアルタイムフィッシング(Real-time Phishing)とは、利用者のログイン操作を“その場で利用する”フィッシング攻撃です。
従来のフィッシングがIDとパスワードを盗み、あとからログインを試みるものだったのに対し、この手口では利用者がログインしている瞬間に攻撃が成立します。
流れはこうです。
利用者はメールのリンクからログイン画面を開き、IDとパスワードを入力します。すると多要素認証としてワンタイムパスワードの入力が求められます。一見すると正規の手順に見えますが、その裏側では攻撃者が本物のサービスへ同時にログインを試みています。利用者が入力したワンタイムパスワードは、ほぼリアルタイムで本物のサイトに転送され、攻撃者のログインが完了します。

攻撃者が、フィッシングメールの送信
利用者が、偽サイトにID・パスワードを入力
攻撃者がID・パスワードを入手し、正規サイトにログイン
正規サイトがワンタイムパスワードを発行
利用者がワンタイムパスワードを偽サイトに入力
攻撃者がワンタイムパスワードを入手し、正規サイトにログイン
つまり多要素認証は突破されたのではなく、利用者自身の操作によって通過させられている状態です。この時点で攻撃者は「ログイン済み」のセッションを取得するため、パスワードを変更しても直ちには追い出せません。サービス側から見ると正規ユーザーの操作に見えるため、不正アクセスとして検知されにくいのも特徴です。
なぜ認証は成功してしまうのか
前述のように、リアルタイムフィッシングは、攻撃が利用者を騙すことで、利用者として振る舞うため、システムにとっては“正しいログイン”となります。
利用者が入力したID・パスワード、そしてワンタイムパスワードが、そのまま正規サービスへ送られます。つまり、認証処理そのものはすべて正式な手順で行われています。
多要素認証が確認しているのは、「この操作をしているのが本人かどうか」です。しかしこの攻撃では、本人が実際に操作しています。利用者は偽サイトに入力しているつもりでも、その操作がそのまま本物のサイトに中継されるため、サービス側から見ると“本人がログインした”としか判断できません。
さらに、ログインが完了するとサービスは「セッション」と呼ばれるログイン状態を発行します。
攻撃者はこのログイン済み状態を取得するため、その後はパスワードを知らなくても操作が可能になります。ここが重要で、認証が一度成功した時点で、防御の主戦場はパスワードではなく「ログイン後の状態」に移ってしまいます。
つまり、多要素認証は破られているのではなく、正しく機能した結果として侵入が成立してしまっているのです。
どう対処すればよいのか?
ここまで読むと、「では防ぎようがないのでは」と感じるかもしれません。
たしかに、従来の“パスワードを守る”という対策だけでは不十分になってきています。ただし、この攻撃は無敵というわけではありません。ポイントは、認証そのものだけでなく、ログインのさせ方や運用の考え方を変えることです。
ここからは、利用者と組織のそれぞれの立場で、現実的に取れる対策を整理していきます。
ユーザーができる対策
リアルタイムフィッシングは高度な仕組みに見えますが、きっかけは「ログイン操作」をしてしまうことです。そのため、特別な知識がなくても行動を少し変えるだけで、防げるケースは少なくありません。
まず意識したいのは、メールやメッセージのリンクからログインしないことです。「セキュリティ確認」「アカウント停止」「共有ファイルの確認」と書かれていても、そのリンクを直接開くのは避けましょう。いったん閉じて、普段使っているブックマークや検索からサービスを開き直してログインします。これだけで、多くのフィッシングは成立しなくなります。
次に重要なのが、急かされるログインを疑うことです。攻撃メールの特徴は「今すぐ対応してください」という焦りを作る点にあります。期限切れ、警告、不審ログインなどを強調されると、つい確認したくなりますが、その“急ぎ”こそが狙いです。一呼吸置き、別の経路から確認する習慣を持つだけで被害を避けられる可能性が高まります。
また、多要素認証の通知にも注意が必要です。身に覚えのない認証コードの入力や承認通知が表示された場合、それは「確認」ではなく「ログインを許可してほしい」という意味です。自分でログイン操作をしていないのに認証を求められた場合は、承認せずにアプリを閉じ、パスワードの変更や管理者への連絡を行いましょう。
特別なセキュリティツールを導入しなくても、
「リンクから入らない」「急がない」「覚えのない認証を通さない」
この3つを徹底するだけで、リアルタイムフィッシングの成功率は大きく下げることができます。
メールなどに記載されているリンクは偽装されます。
例えば👇のリンク
https://note.com/kerdy
表示上は、私のクリエーターズページのURLですが、実際にクリックすると技術書典のサイトが開きます。これは、文字列にリンクを乗せているだけの単純な仕組みです。
リンクの上にマウスカーソルを置けば、URLが表示されますので、そこで正しいリンクかどうか、確認ができます。
会社がやるべき対策
リアルタイムフィッシングは、個人の注意だけに任せると防ぎきれません。
なぜならこの攻撃は「うっかり」を前提に設計されているため、誰か一人が対応を誤れば組織全体に影響が及ぶからです。会社として、仕組みと運用の両面で対策を用意しておく必要があります。
まず重要なのは、メール対策と教育の組み合わせです。
標的型メール訓練を定期的に実施し、「怪しいメールを開くな」という抽象的な注意ではなく、どのような文面が危険かを体験として理解してもらいます。特に「セキュリティ確認」「共有ファイル」「請求書」など、業務に見える内容を題材にすることで効果が高まります。
次に、ログインの監視と通知の活用です。
クラウドサービスには、海外IPからのアクセスや短時間での複数ログインなど、不審な挙動を検知する機能があります。管理者にログイン通知が届くように設定し、普段と違うアクセスがあればすぐに確認できる体制を作ります。リアルタイムフィッシングでは“正規ログイン”として扱われるため、早期発見が被害範囲を左右します。
さらに、権限の分離も重要です。管理者アカウントを日常業務で使用しない、重要な操作には別アカウントを使う、といった運用を徹底することで、万が一一般ユーザーが侵入されても被害を限定できます。メール転送設定の変更や共有リンク作成なども、定期的に確認する運用を決めておくと効果的です。
最後に、技術的な対策として、パスワードとワンタイムコードだけに頼らない認証方式の導入も検討します。
リアルタイムフィッシングは“入力させた情報を転送する”ことで成立するため、入力コードに依存しない認証方式やアクセス条件の制御を組み合わせることで、成立しにくくなります。
セキュリティ対策は「製品を導入したか」ではなく、「運用が回っているか」で差が出ます。
個人の注意力に頼らず、事故が起きる前提で被害を小さく抑える仕組みを整えることが、現実的な防御になります。
まとめ
多要素認証を入れているのに侵入されるのは、対策が足りないからではありません。攻撃の前提が変わったからです。
いまのフィッシングは、システムを破りません。
本人の操作を利用します。
だから守るべきものも、パスワードから「ログインの仕方」に変わりました。セキュリティは設定ではなく、運用と理解の問題になっています。
IT担当者が不在の中小企業向けにITサポートをやっております。セキュリティに不安がある会社様ありましたら、ご連絡ください。
技術書典20に向けて、バックアップ本を執筆中です。先行して、3月上旬にはBoothで頒布できるようになるとおもいます。
準備が整いましたら、かーでぃ書店に陳列させていただきます。
いいなと思ったら応援しよう!
「いいね」以上、「スポンサー」未満の気持ちで、
もしよければ応援してもらえると嬉しいです。
いただいたチップは、次の記事を書くためのコーヒーと時間に変わります☕