AgreeToSteal: 初の悪意あるOutlook アドインで4,000の認証情報が盗難

これは野生で検出された初の既知の悪意あるMicrosoft Outlookアドインです。しかし、それを構築した開発者は攻撃者ではありません。

2022年、開発者はAgreeToという会議スケジューリングツールを構築し、Microsoft Office アドインストアに公開しました。それは動作しました。人々はそれを好みました。その後、開発者は先へ進み、プロジェクトは廃止されました。

アドインはMicrosoftのストアにリストされたままでした。それが指していたURL(Vercelでホストされていた)は申し立てが可能になりました。攻撃者がそれを申し立て、フィッシングキットをデプロイし、Microsoftの独自のインフラストラクチャがOutlookのサイドバー内でそれを提供し始めました。攻撃者の流出チャネルへのアクセスを取得することで、操作の完全な範囲を回復することができました:4,000以上の盗まれたMicrosoftアカウントの認証情報、クレジットカード番号、および銀行のセキュリティの質問。攻撃者は昨日、盗まれた認証情報をアクティブにテストしていました。あなたがこれを読んでいる間、インフラストラクチャは稼働しています。

これは、死んだサイドプロジェクトがどのようにしてフィッシング兵器になったかの話です。それはOfficeアドインがどのように機能するかから始まります。

Image

Officeアドインの動作方法(およびそれが問題である理由)

Officeアドインはインストールされたコードではありません。これらはURLです。

開発者はマニフェストをMicrosoftに送信します。これは「このURLをOutlook内のiframe内に読み込む」と言うXMLファイルです。Microsoftはマニフェストをレビューし、署名し、アドインを彼らのストアにリストします。しかし、実際のコンテンツ(UI、ロジック、ユーザーが相互作用するすべてのもの)は、アドインが開くたびに開発者のサーバーからライブで取得されます。

Image

ReadWriteItemの権限に注意してください。これにより、アドインはユーザーのメールを読み取って変更する機能が付与されます。これは会議スケジューラーに適切でした。今日そのURLを制御している人には、それはあまり適切ではありません。

監査対象となる静的バンドルはありません。検証するハッシュがありません。outlook-one.vercel.appが今すぐ提供するもの何でも、Outlook内で実行されます。開発者が悪いアップデートをプッシュした場合、すぐにライブになります。誰か他の人がそのURLを制御した場合、彼らはそのアドインのすべてのユーザーが見るものを制御します。Outlookの信頼されたサイドバー内で、彼らのメールへの完全な読み取り/書き込みアクセス。

Microsoftはこのマニフェストを2022年12月に一度祝福しました。彼らはURLが再度提供する内容を確認することはありません。

構築、愛用、放棄

AgreeToは実在する製品でした。Chrome拡張機能(1,000ユーザー、4.71つ星の評価、21件のレビュー)とMicrosoftのストアに2022年12月に公開されたOutlookアドインを備えたオープンソースの会議スケジューリングツール。開発者はアクティブなGitHubリポジトリを保持していました。Microsoft Graph API統合、GoogleカレンダーのサポートおよびStripe課金を備えた完全なTypeScriptモノレポ。これは誰かがビジネスを構築していました。

その後、開発は停止しました。最後のChrome拡張機能のアップデートは2023年5月に出荷されました。開発者のドメイン、agreeto.appが有効期限切れになりました。2024年7月までに、ユーザーはChrome拡張機能についてレビューを残していました:

「今朝までは私にとってすべて5つ星でした。ログインを試みると、agreeto.appウェブサイトは有効期限切れです。このアプリは死んでしまいましたか?望みません。」

「このアプリは死んでしまいましたか?もはや機能しません。ログインを行わせ、GoDaddyホールディングページに移動します。私はこのアプリを常に使用し、私が必要なことを正確に行います。」

Googleは最終的に2025年2月に死んだChrome拡張機能を削除しました。しかし、Outlookアドインはマイクロソフトのオフィスストアにリストされたままで、もはや誰にも属していないVercelURLをまだ指していました。

Image

乗っ取り

開発者がプロジェクトを放棄した後のある時点で、彼らのVercelデプロイメントは削除されました。サブドメインoutlook-one.vercel.appが申し立て可能になりました。攻撃者がそれを掴んだ。

彼らは4ページのフィッシングキットをデプロイしました:偽のMicrosoftサインインページ、パスワード収集ページ、流出スクリプト、およびリダイレクト。それがすべてです。

彼らはMicrosoftに何も提出しませんでした。彼らはレビューに合格する必要はありませんでした。彼らはストアのリストを作成しませんでした。リストは既に存在していました。Microsoftがレビューした、Microsoftが署名した、Microsoftが配布しました。攻撃者は孤立したURLを申し立てただけで、Microsoftのインフラストラクチャが残りを行いました。

2人の異なる著者の指紋がインフラストラクチャ全体で表示されます。元の開発者のアセット(アイコン、OAuthハンドラー、Microsoftの設計ファイル)はすべて404です。攻撃者がそれらを再作成しなかったのは、ソースコードがなかったからです。彼らは必要なものだけをデプロイしました:フィッシングフロー。

攻撃

被害者がOutlookでAgreeToアドインを開くと、会議スケジューラーは表示されません。Microsoftのサインインページが表示されます。

Image

彼らはメール、次にパスワードを入力します。単一のJavaScript関数は、被害者のIPアドレスとともに認証情報を収集し、TelegramのBot APIを通じて攻撃者にすべてを送信します。コマンドアンドコントロールサーバーはありません。複雑なインフラストラクチャはありません。Telegramへのfetch()呼び出しだけです。

その後、数秒間のローディングスピナーと、実際のlogin.microsoftonline.comへのシームレスなリダイレクト。被害者は再度サインインする必要があると仮定し、一日を続けます。彼らはパスワードが盗まれたばかりであることを知りません。

Image

フィッシング手法自体は基本的です。それを効果的にするのはコンテキストです。Outlook内で実行され、Microsoftの独自のアドインインフラストラクチャによって配信され、信頼されたPermissionプロンプトの背後にあります。

規模

MicrosoftのOffice Add-in Storeはインストール数を表示しないため、リストだけから影響を評価する方法はありませんでした。

しかし、攻撃者は重大な過ちを犯しました。彼らの流出インフラストラクチャは不十分に保護されていて、私たちはそれの内側に入ることができました。まず、操作の規模を確認しました:4,000人以上の被害者。その後、さらに進みました。攻撃者が収集したすべての盗まれた認証情報の完全なコンテンツを回復するスクリプトを作成しました。私たちは一晩中実行しました。朝までに、完全なデータセットがありました。すべてのメール、すべてのパスワード、すべてのクレジットカード番号、傍受されたすべてのセキュリティの質問。私たちの目の前に置かれた損害の完全な範囲。

被害者データを保有していたため、私たちはそれに対して行動を起こすことができました。損なわれたユーザーに通知し、インフラストラクチャをテイクダウンのために報告してください。

キャンペーンはまだアクティブです。新しい被害者は毎時間侵害されています。

私たちが見つけたものはOutlookアドインをはるかに超えていました。同じ攻撃者は少なくとも12個の異なるフィッシングキットを操作し、それぞれ異なるブランドになりすましています。カナダのISP、銀行、Webmailプロバイダー。盗まれたデータには、メール認証情報だけでなく、クレジットカード番号、CVV、PIN、およびInterac e-Transferの支払いを傍受するために使用される銀行セキュリティの質問が含まれていました。これはプロフェッショナル、マルチブランドのフィッシング操作です。Outlookアドインはその配布チャネルの1つにすぎませんでした。

構造的な問題

このケースを重要にするのはフィッシング手法ではありません。偽のログインページとTelegramボットはそれ自体がそれほど基本的です。重要なのは、配信メカニズムとそれを可能にした構造的な失敗です。

攻撃者はフィッシングメールを送信しませんでした。彼らは誰かを疑わしいリンクをクリックするようにだまかす必要はありませんでした。彼らはMicrosoftの独自のインフラストラクチャがユーザーを指していた放棄されたURLを引き継ぎました。そしてMicrosoftはそれを配布し続けました。Outlook内で、信頼されたPermissionプロンプトの背後にあります。

既存のセキュリティツールについては、これはほぼ見えません:

  • メールセキュリティゲートウェイはそれをキャッチしません。フィッシングページはメール経由で到着しません。
  • エンドポイント保護はそれにフラグを付けません。これは正当なMicrosoftプロセス内で実行されるJavaScriptです。
  • URLフィルタリングはそれを見逃します。フィッシングページはvercel.appでホストされています。これは数百万の正当なアプリケーションを提供します。

しかし、より深い問題はアーキテクチャです。Officeアドインはリモート動的依存関係です。iframeにURLを読み込みます。コンテンツは可変です。月曜日にきれいなアドインは火曜日にフィッシングページを提供できます。または、この場合のように、数年後。Microsoftはサブミッション時にマニフェストをレビューしますが、実際のコンテンツはさらなるレビューなしにいつでも変更できます。

そしてそれはもっと悪いことができました。AgreeToマニフェストはReadWriteItem権限を宣言しています。アドインはユーザーのメールを読み取って変更できます。攻撃者はそれを単純なフィッシングページに使用しましたが、被害者の受信箱をサイレント読み取り、機密メッセージを流出させ、または被害者の独自のアカウントからフィッシングメールを送信するJavaScriptをデプロイすることから何も彼らを止めません。権限はアドインが正当だったときにMicrosoftから付与されました。それはそうでなくなった今でもまだ適用されます。

最終的な考え

これらはいずれも新しい懸念ではありません。MDSecのセキュリティ研究者は2019年にOfficeアドインを攻撃面としてフラグを付けました。被害者のメールボックスへの永続的なアクセスを取得するために武器化できる方法を実証しました。彼らの投稿は警告で終わりました:「Microsoftはまた、開発者がこれらのアドインをストアにプッシュすることを許可し、ユーザーはそれらをインストールできます。そこに潜在的な問題があることが確実にわかると確信しています。」7年後、AgreeToは彼らが予測したシナリオそのものです。

Officeアドインはリモート動的依存関係です。彼らのコンテンツはいつでも変更できるため、ポイントインタイム監査は不十分です。Koiは、ブラウザ拡張機能、IDEプラグイン、Officeアドイン、およびそれ以上を含むすべてのマーケットプレイス全体で、自己プロビジョニングされたソフトウェアを継続的に監視および監査します。アドインが悪質になった場合、ユーザーが知る前に知ってください。デモを予約してくださいその方法を確認してください。

IOCs

  • outlook-one.vercel[.]app – フィッシングドメイン(ライブ)
  • WA200004949 – Officeアドインid

このアドインをMicrosoftに報告してOffice Add-in Storeから削除されました。outlook-one.vercel.appのためにVercelへの乱用報告書を提出し、ボットとオペレーターアカウントの両方についてTelegramの乱用報告書を提出しました。ボットのメッセージ履歴で見つかった認証情報が見つかった被害者に可能な限り通知されました。

翻訳元: https://www.koi.ai/blog/agreetosteal-the-first-malicious-outlook-add-in-leads-to-4-000-stolen-credentials

ソース: koi.ai