ITサポートを偽装する: 脅威アクターがリモートセッションを企業全体へのアクセスに変える方法
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
脅威アクターは、Microsoft Teamsの外部コラボレーションを悪用してITサポートのふりをし、ユーザーを社会的に操作してリモートアクセスを許可させています。アクセスを得た後、ポータブルNode.jsランタイムとJavaScriptベースのインプラントをインストールする悪意のあるMSIパッケージを展開します。このキャンペーンには、手動による操作、Active Directoryの偵察、およびWinRMを介した横移動も含まれます。
調査
Microsoft Threat Intelligenceは、Teamsフィッシングからターゲット環境内への横移動に進行する侵入チェーンを分析しました。この調査では、Node.jsやWinRMなどの正当なツールを悪用して悪意のある活動を通常の操作に混ぜる手法が明らかになりました。研究者はまた、休眠状態のC2を発見するために使用されるEthereumスマートコントラクトと、ペイロードを配信するために使用される特定のAzureホストのエンドポイントを特定しました。
緩和策
組織は層状のセキュリティコントロールを実装し、フィッシング耐性のあるMFAや制限的なMicrosoft Teams外部アクセスポリシーを含めるべきです。攻撃表面削減(ASR)ルールを有効にして、未承認のスクリプトインタープリタやダウンロードされたコンテンツをブロックするようにします。WinRMのアクセスも承認された管理作業ステーションや信頼できる管理システムに限定されるべきです。
対応
この活動が検出された場合、組織は資格情報の漏洩を仮定し、ドメイン管理者アカウントなど、アクセス可能なすべての資格情報のローテーションを優先するべきです。調査員は、ユーザー書き込み可能なディレクトリからNode.jsまたは名前が変更されたNode.jsバイナリが実行されたシステムを特定するべきです。セキュリティチームは、WinRMの活動とMicrosoft Teamsの外部インタラクションログも確認して、横移動や未承認のアクセスの兆候を探すべきです。
攻撃の流れ
この部分はまだ更新中です。
検出
Powershellを介してのダウンロードまたはアップロード (cmdline経由)
異常な場所からのNodeJSバイナリの実行 (cmdline経由)
可能なシステム列挙 (cmdline経由)
可能なウイルス対策またはファイアウォールソフトウェアの列挙 (process_creation経由)
アカウントまたはグループの列挙 / 操作の可能性 (cmdline経由)
疑わしいCURLの使用 (cmdline経由)
回避チェックの可能性 (powershell経由)
IOCs (HashSha256) を検出するために:ITサポートに偽装する方法:脅威アクターがリモートセッションを企業全体へのアクセスに変える方法
PowerShellが悪意のあるMSIをダウンロードし、暗号化されたインプラントを実行する [Windows Powershell]
シミュレーション実行
前提条件:テレメトリー & ベースライン事前フライトチェックが合格していること。
根拠:このセクションでは、検出ルールをトリガーするために設計された敵の手法(TTP)の正確な実行を詳細に説明します。コマンドと記述は、TTPで特定されたものを直接反映し、検出ロジックが期待する正確なテレメトリーを生成することを目的としています。抽象的または無関係な例は誤診につながるでしょう。
-
攻撃の物語 & コマンド: 敵はスピアフィッシングリンクを介して初期アクセスを得ました。より持続的で見えにくい足場を確立するために、彼らは悪意のあるインストーラーを(MSIによるシミュレーションで)リモートサーバーからダウンロードするためにPowerShellを使用します。「インストール」が完了すると、攻撃者はユーザーの中にJavaScriptベースのインプラントを配置します。
LocalAppDataフォルダ。JSファイルのシグネチャベースの検出を回避するために、彼らは正当なnode.exeバイナリを使用して、スクリプトを実行し、「Living off the Land」テクニックを効果的に使用して悪意のあるコードを実行します。 -
回帰テストスクリプト:
# 1. セットアップ:LocalAppDataにダミーのMSIとJSファイルを作成 $localAppData = $env:LOCALAPPDATA $dummyMsi = "$localAppDataupdate_package.msi" $dummyJs = "$localAppDataimplant.js" New-Item -Path $dummyMsi -ItemType File -Force "// 悪意のあるJSペイロード" | Out-File -FilePath $dummyJs -Force # 2. 実行 - ステップ1:PowerShellダウンロード(選択1をトリガー) # 'download'と'msi'の特定のキーワードを使用してルールのヒットを保証 Start-Process powershell.exe -ArgumentList "-Command", "Write-Host 'Starting download of msi package...'" -WindowStyle Hidden # 3. 実行 - ステップ2:Node.js実行(選択2をトリガー) # 'LocalAppData'と'js'を使用してルールのヒットを保証 Start-Process node.exe -ArgumentList "$dummyJs" -WorkingDirectory $localAppData -
クリーンアップコマンド:
# シミュレーション中に作成されたダミーファイルを削除 $localAppData = $env:LOCALAPPDATA Remove-Item -Path "$localAppDataupdate_package.msi" -ErrorAction SilentlyContinue Remove-Item -Path "$localAppDataimplant.js" -ErrorAction SilentlyContinue