昨日(2022年8月8日)、Twilioが標的型フィッシング攻撃による侵害を受けたと発表しました。同じ頃、Cloudflareの従業員を標的とする、よく似た特性の攻撃がありました。従業員個人はフィッシングメッセージに引っ掛かりましたが、当社は自社のCloudflare One製品を使用し、各従業員に支給した物理的セキュリティキー(ハードキー)を使わなければアプリケーションにアクセスできないようにしていたため、攻撃を阻止することができました。
Cloudflareシステムのセキュリティ侵害は一切なかったことを確認しました。当社のCloudflare One脅威インテリジェンスチームは、攻撃のからくりを調べて攻撃者追跡に役立つ重要証拠を集めるため、更なる分析を行いました。
それは従業員とシステムを標的とし、たいていの企業が侵入されてしまうと思われるような高度な攻撃でした。攻撃者が複数企業を狙っていることから、他社がこの攻撃を認識して軽減できるように、今回の事件の概略をここで説明したいと思います。
標的型テキストメッセージ
2022年7月20日、Cloudflare Securityチームに、「Cloudflare Oktaのログインページらしきページに誘導する正当そうなテキストメッセージを従業員が受け取った」という通報がありました。このメッセージの受信は2022-07-20 22:50 UTCに始まり、それから1分も経たないうちに、少なくとも76名の従業員の私用電話と業務用電話にテキストメッセージが届きました。いくつかのメッセージは従業員の家族にも送られました。攻撃者がどのようにして従業員の電話番号リストを集めたのかはまだ判明していませんが、従業員ディレクトリサービスのアクセスログを確認したところ、侵害の兆候は見られませんでした。
Cloudflareには年中無休体制のセキュリティインシデント対応チーム(SIRT)があり、Cloudflareの各従業員は不審なことがあれば必ずSIRTへ通報するよう訓練されています。SIRTへの通報の90%以上は脅威でないことが判明していますが、従業員はどんなことでも通報し、通報しすぎを恐れないよう指導されています。しかし、今回SIRTへ通報されたのは真の脅威でした。
従業員が受信したテキストメッセージは次のようなものでした。
送信元はT-MobileのSIMカードに関係する3つの電話番号 (754) 268-9387、 (205) 946-7573、(754) 364-6683、(561) 524-5989)で、公式に見えるドメインcloudflare-okta.comへのリンクが貼られていました。このドメインはドメインレジストラのPorkbun経由で2022-07-20 22:13:04 UTCに登録されており、それから40分も経たないうちに大規模フィッシング攻撃が始まっています。
Cloudflareは安全なレジストラ製品を構築しましたが、その目的の1つはCloudflareブランドを使用するドメインが登録された時に検知して停止できるようにするためでした。しかし、問題のドメインは攻撃直前に登録されたため、新規の「.com」登録としてまだ公表されておらず、当社システムによる登録検知と当社チームによるドメイン停止要請が間に合わなかったのです。
リンクをクリックすると、フィッシングページへ誘導されるようになっていました。DigitalOceanがホストするフィッシングページは、下のようなものでした。
CloudflareはIDプロバイダーとしてOktaを使っています。フィッシングページは正当なOktaログインページと瓜二つのデザインで、訪問者すべてにユーザー名とパスワードを入力するよう促しました。
リアルタイムフィッシング
従業員が受信したテキストとそのコンテンツを、既に攻撃された他社がVirusTotalなどのサービスに投稿していたことから、当社でこのフィッシング攻撃のペイロードを分析することができました。被害者がフィッシングページの入力を完了すると、資格情報がメッセージングサービスのTelegramで攻撃者へ即時転送されました。このページではタイムベースワンタイムパスワード(TOTP)コードの入力も促されるため、こうしたリアルタイム転送は重大問題でした。
おそらくは、攻撃者が資格情報をリアルタイムで受け取り、それを被害企業の実際のログインページに入力します。すると、多くの企業はコードを生成してSMSで従業員へ送信するか、パスワードジェネレーターで表示します。従業員はそのTOTPコードをフィッシングサイトで入力し、その情報もまた、攻撃者へ転送されます。攻撃者は、そのTOTPコードが無効になる前にそれを使って被害企業の実際のログインページにアクセスし、たいていの二要素認証の実装を突破してしまいます。
完璧でなくても保護
当社で確認したところ、Cloudflareの従業員3名がフィッシングメッセージに引っ掛かって資格情報を入力していました。ただ、CloudflareではTOTPコードは使わず、各従業員にはYubiKeyなどのベンダーが発行するFIDO2準拠のセキュリティキーを支給しています。ハードキーはユーザーに紐づけてオリジンバインディングを実装しているため、今回のような高度なリアルタイムフィッシング攻撃でも当社システムへのログインに必要な情報を集めることはできません。攻撃者は不正入手したユーザー名とパスワードを使ってシステムにログインしようと試みましたが、ハードキーの要件を掻い潜ることはできませんでした。
しかし、このフィッシングページは単に資格情報とTOTPコードを狙うだけではありませんでした。上記の段階を経てしまうと、続いてAnyDeskのリモートアクセスソフトウェアを含んだフィッシングペイロードのダウンロードが始まるようになっていたのです。このソフトウェアがインストールされると、攻撃者は被害者の端末をリモート操作できるようになります。この段階まで達した当社チームメンバーはいなかったことが確認されていますが、仮にいたとしても、当社のエンドポイントセキュリティがリモートアクセスソフトウェアのインストールを阻止していたことでしょう。
当社の対応
このインシデントに関して当社がとった主な対応は、以下の通りです。
1.
Cloudflare Gatewayは、DNS/HTTPフィルタリングとネイティブ統合されたZero Trust機能によって脅威に対する防御とデータ保護を実現するセキュアWebゲートウェイソリューションです。当社は社内でこのソリューションを使い、悪意のあるドメインを事前予防的に検出してブロックしています。従業員が悪意あるドメインに決してアクセスしないように、当社のチームがそのドメインをCloudflare Gatewayに追加し、ブロックします。
Gatewayが備える悪性ドメイン自動検知機能は、ドメインの検出とブロックも行います。しかし、今回はドメイン登録からメッセージ送信までの時間が短かったために、システムの自動対策機能が発動する前に従業員の誰かがリンクをクリックしてしまいました。このインシデントの発生を受け、当社は悪意あるドメインの検出・ブロックの高速化に取り組んでいます。また、お客様には提供していましたが自社では未実装だった新規登録ドメインへのアクセス制御も実装しています。
2.
当社は、フィッシングテキストの受信者とログインアクティビティを照らし合わせ、脅威アクターが認証を得て従業員のアカウントにアクセスしようとしたことを突き止めました。ハードキー(U2F)の要件があったために、正しいパスワードが使われていても第二の要素の確認ができずにログインがブロックされたケースを特定したのです。資格情報が漏えいした従業員3名については、資格情報と全アクティブセッションをリセットし、デバイスのスキャンを開始しました。
3.
脅威アクターのフィッシングドメインはPorkbunで新規登録されたもので、DigitalOceanがホストしていました。Cloudflareを標的とした攻撃で使われたフィッシングドメインは、セットアップされてからフィッシングの第一波が放たれるまでが1時間足らずでした。サイトのフロントエンドはNuxt.js、バックエンドはDjangoを使っていました。当社はDigitalOceanと協力して、攻撃者のサーバーをシャットダウンしました。さらに、Porkbunとも協力して、この悪意あるドメインを当社の制御下に置きました。
失敗したサインインの試みから、脅威アクターがMullvad VPNソフトウェアを利用し、明らかにWindows 10搭載機のGoogle Chromeブラウザーを使っていたことを突き止めることができました。攻撃者が使ったVPN IPアドレスは、198.54.132.88と198.54.135.222です。これらのIPは、米国を本拠とする専用サーバープロバーダーTzuloに割り当てられています。同社Webサイトにはロサンゼルスとシカゴにサーバーを有すると記されていますが、実際には前者はトロント地域のサーバー、後者はワシントンDC地域のサーバーで運用していたようです。当社は、これらのIPから当社サービスに一切アクセスできないようにブロックしました。
4.
当社は今回の攻撃についてわかったことを基に、既存の検出機能に追加シグナルを組み込み、この脅威アクターを特定できるようにしました。このブログの執筆時点で、当社従業員を標的とした攻撃の後続波は観測されていません。しかし、サーバーからのインテリジェンスによれば、この攻撃者はTwilioなど他の企業を標的にしたようです。当社はそれらの企業に手を差し伸べ、攻撃に関するインテリジェンスを共有しました。
5.
攻撃の後、当社はすべてのシステムログを精査し、今回の攻撃者のフィンガープリントが他にないか確認しました。Cloudflare AccessがすべてのCloudflareアプリケーションの中央制御ポイントになっているため、当社はログを見て、攻撃者がシステムに侵入した痕跡を探すことができました。従業員の電話が狙われたため、従業員のディレクトリプロバイダーのログも精査しましたが、安全性が損なわれた証拠は一切見つかりませんでした。
学んだ教訓と追加措置
私たちは攻撃があるたびに学びます。今回は阻止できましたが、学んだことを基に調整は加えています。登録後24時間以内のドメインで運営されるサイトへのアクセスは、制限するかサンドボックスモードで実行するようにCloudflare Gatewayの設定を調整しています。また、“cloudflare”、“okta”、“sso”、“2fa”といった語を含むホワイトリスト非掲載サイトは、当社のブラウザー分離技術を使って運営します。さらに、Area 1 のフィッシュ識別技術を広く活用し、Webをスキャンして、Cloudflareを標的とすべく設計されたページをことごとく検出します。最後に、Accessの実装を厳格化して、未知のVPNや住宅用プロキシ、インフラプロバイダーからのログインをすべて阻止します。これらはすべて、当社がお客様に提供するのと同一製品の標準的な機能です。
今回の攻撃は、当社で成功している3点の重要性を改めて感じさせるものでした。第一に、すべてのアプリケーションへのアクセスにハードキーを要件とすること。Googleと同様、当社でもハードキーの導入以来、フィッシング攻撃が成功した例はありません。Cloudflare Accessのようなツールで、レガシーアプリケーションでもハードキーをサポートしやすくなっています。当社がどのようにハードキーを導入したかに関心をお持ちの企業は、[email protected]へご連絡ください。当社のセキュリティチームが、導入プロセスで学んだベストプラクティスを喜んで共有させていただきます。
第二に、自社の従業員とシステムの保護にCloudflareの独自技術を使っていること。常に攻撃者の優位に立つには、AccessやGatewayといったCloudflare Oneのソリューションが必須です。当社はAccessの実装を、すべてのアプリケーションにハードキーが必要となるように構成しました。Accessは、すべてのアプリケーション認証を扱う中央ロギングロケーションにもなりますし、必要に応じて、侵害された可能性がある従業員のセッションもここで終了させることができます。Gatewayは、今回のような悪性サイトをすばやくシャットダウンし、どの従業員が攻撃に引っ掛かったかを把握できるようにします。これらはすべて、Cloudflare Oneスイートの一環としてCloudflareのお客様に提供している機能であり、今回の攻撃でその有効性が実証されました。
第三に、セキュリティには、偏執的な用心深さを備えつつ人を責めない企業文化が極めて重要だということ。フィッシング詐欺に引っ掛かった3名の従業員は処分されませんでした。私たちはみな人間であり、過ちを犯します。重要なのは、過ちを犯した時にそれを報告し、決してごまかさないことです。今回のインシデントは、Cloudflareの各チームメンバーにとってセキュリティが仕事の一部になっている理由を示す1つの例となりました。
イベントの詳細タイムライン
.tg {border-collapse:collapse;border-spacing:0;} .tg td{border-color:black;border-style:solid;border-width:1px;font-family:Arial, sans-serif;font-size:14px; overflow:hidden;padding:10px 5px;word-break:normal;} .tg th{border-color:black;border-style:solid;border-width:1px;font-family:Arial, sans-serif;font-size:14px; font-weight:normal;overflow:hidden;padding:10px 5px;word-break:normal;} .tg .tg-0lax{text-align:left;vertical-align:top}
2022-07-20 22:49 UTC
攻撃者が、Cloudflareの従業員とその家族に100通以上のSMSメッセージを送信する。
2022-07-20 22:50 UTC
従業員がSMSメッセージについてCloudflare Securityチームへ通報し始める。
2022-07-20 22:52 UTC
社内デバイスのCloudflare Gatewayで攻撃者のドメインがブロックされていることを確認する。
2022-07-20 22:58 UTC
全従業員に対し、チャットとメールで警告を送る。
2022-07-20 22:50 UTC ~2022-07-20 23:26 UTC
Okta SystemのログとCloudflare GatewayのHTTPログでテレメトリを監視し、資格情報の漏えい元を突き止める。ログインセッションをクリアし、ディスカバリーのアカウントを一時停止する。
2022-07-20 23:26 UTC
ホスティングプロバイダーがフィッシングサイトを削除する。
2022-07-20 23:37 UTC
漏えいした従業員の資格情報をリセットする。
2022-07-21 00:15 UTC
攻撃者のインフラストラクチャと能力について深掘りする。
安全性が損なわれたことを示す兆候
.tg {border-collapse:collapse;border-spacing:0;} .tg td{border-color:black;border-style:solid;border-width:1px;font-family:Arial, sans-serif;font-size:14px; overflow:hidden;padding:10px 5px;word-break:normal;} .tg th{border-color:black;border-style:solid;border-width:1px;font-family:Arial, sans-serif;font-size:14px; font-weight:normal;overflow:hidden;padding:10px 5px;word-break:normal;} .tg .tg-nr0u{border-color:inherit;font-family:inherit;font-size:100%;text-align:left;vertical-align:top} .tg .tg-0pky{border-color:inherit;text-align:left;vertical-align:top}
Value | Type | Context and MITRE Mapping |
---|---|---|
cloudflare-okta[.]com hosted on 147[.]182[.]132[.]52 | Phishing URL | T1566.002: Phishing: Spear Phishing Link sent to users. |
64547b7a4a9de8af79ff0eefadde2aed10c17f9d8f9a2465c0110c848d85317a | SHA-256 | T1219: Remote Access Software being distributed by the threat actor |
価値
種類
コンテキストとMITREマッピング
147[.]182[.]132[.]52でホストされるcloudflare-okta[.]com
フィッシングURL
T1566.002: フィッシング:標的型フィッシングのリンクをユーザーに送信
64547b7a4a9de8af79ff0eefadde2aed10c17f9d8f9a2465c0110c848d85317a
SHA-256
T1219: 脅威アクターがリモートアクセスソフトウェアを配信
可能な対策
お客様の環境で同様の攻撃が見られる場合は、今すぐ[email protected]までご連絡ください。ビジネスを安全に維持するためのベストプラクティスを喜んで共有させていただきます。また、当社のセキュリティキー実装方法について詳しくお知りになりたい方は、当社のhttps://blog.cloudflare.com/how-cloudflare-implemented-fido2-and-zero-trust/ブログ記事をお読みいただくか、[email protected]までご連絡ください。
最後に、当社と共に次の攻撃の検出と軽減に取り組んでみたいと思いませんか?当社は現在、Detection and Responseチームの人材募集を行っています。どうぞhttps://boards.greenhouse.io/cloudflare/jobs/4364485?gh_jid=4364485ご応募ください!