NotDoor インサイト: Outlook マクロとその先への深堀り
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
この記事では、持続性を維持し、コマンド&コントロールを提供するために悪意のあるOutlook VBAマクロを利用するNotDoorバックドアについて検討しています。ペイロードは、改ざんされたSSPICLI.dllのDLLサイドローディングを通じて配信され、 SSPICLI.dll 正規のOneDrive.exeバイナリを偽装しています。難読化されたPowerShellスクリプトが、Webhookサービスを介してデータの流出を処理し、Outlookのレジストリ設定を変更してマクロの実行を強制します。検出ガイダンスは、疑わしいファイル作成、DLLのロード活動、レジストリの変更、エンコードされたPowerShellコマンドの追跡に焦点を当てています。 OneDrive.exe binary. Obfuscated PowerShell scripts handle data exfiltration via webhook services and tweak Outlook registry settings to force macro execution. Detection guidance centers on tracking suspicious file creation, DLL loading activity, registry changes, and encoded PowerShell commands.
NotDoorバックドアの分析
さらに分析を進めると、不正なDLLが一時ディレクトリを作成し、Outlook VBAProject.OTMファイルにペイロードを書き込み、すべてのマクロを許可するようにレジストリキーを設定することがわかります。その後、DNSおよびHTTPコールバックをwebhook.site、dnshook.siteに発行するBase64形式のエンコードされたPowerShell命令を実行します。レジストリの変更には、LoadMacroProviderOnBootの有効化、Outlookセキュリティレベルの低下、PONT_STRINGの変更によるセキュリティプロンプトの抑制が含まれます。 VBAProject.OTM ファイル、すべてのマクロを許可するようにレジストリキーを設定します。その後、Base64でエンコードされたPowerShellコマンドを実行し、DNSおよびHTTPコールバックをwebhook.site、dnshook.siteに送信します。レジストリの変更には、LoadMacroProviderOnBootの有効化、Outlookセキュリティレベルの低下、およびPONT_STRINGでのセキュリティプロンプトの抑制が含まれます。 webhook.site and dnshook.siteレジストリの変更には、LoadMacroProviderOnBootの有効化、Outlookセキュリティレベルの低下、 LoadMacroProviderOnBootの有効化、Outlookセキュリティレベルの低下、およびPONT_STRINGの変更が含まれます。 PONT_STRING でセキュリティプロンプトを抑制します。
緩和策
重要な緩和策には、DLLサイドローディングの機会を制限すること、実行ファイルに対してコード署名要件を強制すること、非OutlookプロセスによるVBAProject.OTMの作成を監視すること、特定されたWebhookドメインへのアウトバウンド接続をブロックすることが含まれます。さらに、チームはレジストリ変更に対して最小特権の原則を適用し、可能な限り自動マクロ読み込みを無効にすることができます。 VBAProject.OTM VBAProject.OTM
対応
NotDoorの活動が検出された場合、妥協されたエンドポイントを隔離し、悪意のあるDLLと関連するペイロードを取得し、レジストリエディットとネットワークトレースのフォレンジックレビューを実施します。関連ドメインとIPをブロックし、類似のDLLサイドローディングの行動を広範囲で探し、Outlookのマクロポリシーをリセットし、すべてのユーザーのセキュリティ設定が強化された状態に戻されていることを確認します。
graph TB %% Class definitions classDef technique fill:#ffcc99 classDef tool fill:#cccccc classDef file fill:#e6e6fa classDef action fill:#99ccff classDef operator fill:#ff9900 %% Nodes – Actions / Techniques initial_access[u0022u003cbu003eActionu003c/bu003e – 既存の足掛かりを利用した初期アクセスu0022] nclass initial_access action dll_sideload[u0022u003cbu003eTechniqueu003c/bu003e – u003cbu003eT1574.001 実行フローのハイジャック: DLLu003c/bu003eu003cbr/u003eOneDrive.exe が DLL サイドローディングにより悪意のある SSPICLI.dll を読み込むu0022] nclass dll_sideload technique powershell[u0022u003cbu003eTechniqueu003c/bu003e – u003cbu003eT1059.001 コマンドおよびスクリプトインタープリタ: PowerShellu003c/bu003eu003cbr/u003eネットワーク確認およびファイルコピーのために Base64 エンコードされた PowerShell コマンドが実行されるu0022] nclass powershell technique office_macro[u0022u003cbu003eTechniqueu003c/bu003e – u003cbu003eT1137.001 Office アプリケーション起動: Office テンプレートマクロu003c/bu003eu003cbr/u003eVBA マクロが %APPDATA%\\Microsoft\\Outlook\\VbaProject.OTM に配置されるu0022] nclass office_macro technique vba_stomping[u0022u003cbu003eTechniqueu003c/bu003e – u003cbu003eT1564.007 アーティファクトの隠蔽: VBA ストンピングu003c/bu003eu003cbr/u003eマクロが受信メール(Application_NewMailEx)を監視し、C2 トリガーに反応してデータを流出させるu0022] nclass vba_stomping technique vb_interpreter[u0022u003cbu003eTechniqueu003c/bu003e – u003cbu003eT1059.005 コマンドおよびスクリプトインタープリタ: Visual Basicu003c/bu003eu003cbr/u003eVBA コードがコマンドを実行し、Outlook 経由で通信するu0022] nclass vb_interpreter technique %% Nodes – Files / Objects file_oneDrive[u0022u003cbu003eFileu003c/bu003e – OneDrive.exeu0022] nclass file_oneDrive file file_sspicli[u0022u003cbu003eFileu003c/bu003e – SSPICLI.dllu0022] nclass file_sspicli file file_vba[u0022u003cbu003eFileu003c/bu003e – VbaProject.OTMu0022] nclass file_vba file email_monitor[u0022u003cbu003eObjectu003c/bu003e – Outlook アプリケーションu003cbr/u003e受信メール(Application_NewMailEx)を監視u0022] nclass email_monitor action outlook_comm[u0022u003cbu003eObjectu003c/bu003e – Outlooku003cbr/u003eC2 と通信し、データを流出させるu0022] nclass outlook_comm action %% Connections – Flow of the attack initial_access u002du002du003e|leads_to| dll_sideload dll_sideload u002du002du003e|uses| file_oneDrive dll_sideload u002du002du003e|loads| file_sspicli dll_sideload u002du002du003e|triggers| powershell powershell u002du002du003e|leads_to| office_macro office_macro u002du002du003e|places| file_vba office_macro u002du002du003e|enables| vba_stomping office_macro u002du002du003e|enables| vb_interpreter vba_stomping u002du002du003e|monitors| email_monitor vb_interpreter u002du002du003e|communicates_via| outlook_comm
攻撃フロー
検出
NotDoorマルウェアによる悪意のあるレジストリ変更の検出 [Windowsレジストリイベント]
表示
エンコードされたPowershellコマンドの実行 [Windows Powershell]
表示
検出用IOCs (HashSha256): NotDoor Insights: Outlookマクロとその他についての詳細な調査
表示
ファイルイベントを通じたメールベースの永続性に関するOutlook
表示
Outlookの悪用の可能性/セキュリティのダウングレード(レジストリイベントを通じて)
表示
シミュレーション実行
前提条件: テレメトリ&ベースラインの事前チェックが完了していること。
理由: このセクションは、検出ルールをトリガーするために設計された敵対者の手法(TTP)の正確な実行を詳細に説明します。コマンドと説明は、識別されたTTPsを直接反映し、検出ロジックによって期待される正確なテレメトリを生成することを目的としています。
-
攻撃の概要&コマンド:
ユーザーレベルの実行権を得た攻撃者が、被害者のマシンにNotDoorマルウェアを配備します。このマルウェアの目的は、Outlookがシステム起動時に自動的に悪意のあるマクロを読み込み、セキュリティ警告を無効にしてダイアログポップアップを抑制することです。これを達成するために、攻撃者はOutlookハイブの下に3つの特定のレジストリ値を書き込みます。LoadMacroProviderOnBoot「HKCUSoftwareMicrosoftOutlook」1に設定され、HKCUSoftwareMicrosoftOutlookにあります – Outlookが起動時にマクロプロバイダを毎回ロードするよう強制します。レベル「HKCUSoftwareMicrosoftOutlook」1に設定され、「HKCUSoftwareMicrosoftOutlookSecurity」にあります – マクロセキュリティレベルを下げます。PONT_STRING「HKCUSoftwareMicrosoftOutlookOptionsGeneral」にある悪意のあるCLSIDに設定され– Outlookを悪意のあるマクロDLLに向けます。
これらの書き込みは、Sigmaルールのselection1, selection2, selection3のイベントを生成し、アラートが発火します。
selection1and (selection2orselection3) in the Sigma rule, causing the alert to fire. -
回帰テストスクリプト:
# NotDoorレジストリ変更のシミュレーション – PowerShell function Set-NotDoorOutlookRegistry { # 1. 起動時にマクロプロバイダを有効化 New-ItemProperty -Path "HKCU:SoftwareMicrosoftOutlook" ` -Name "LoadMacroProviderOnBoot" -Value 1 -PropertyType DWORD -Force # 2. セキュリティ警告レベルを下げます New-ItemProperty -Path "HKCU:SoftwareMicrosoftOutlookSecurity" ` -Name "Level" -Value 1 -PropertyType DWORD -Force # 3. 悪意のあるマクロを指す(シミュレーションされたCLSID) $maliciousClsid = "{12345678-1234-1234-1234-123456789ABC}" New-ItemProperty -Path "HKCU:SoftwareMicrosoftOutlookOptionsGeneral" ` -Name "PONT_STRING" -Value $maliciousClsid -PropertyType String -Force } # シミュレートされた攻撃を実行 Set-NotDoorOutlookRegistry -
クリーンアップコマンド:
# シミュレートされたNotDoorレジストリ変更の削除 Remove-ItemProperty -Path "HKCU:SoftwareMicrosoftOutlook" ` -Name "LoadMacroProviderOnBoot" -ErrorAction SilentlyContinue Remove-ItemProperty -Path "HKCU:SoftwareMicrosoftOutlookSecurity" ` -Name "Level" -ErrorAction SilentlyContinue Remove-ItemProperty -Path "HKCU:SoftwareMicrosoftOutlookOptionsGeneral" ` -Name "PONT_STRING" -ErrorAction SilentlyContinue