Deno ベースのプロキシと RAT の内部
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
攻撃者は、Deno JavaScriptランタイムを利用したモジュラー型のリモートアクセス型トロイの木馬(RAT)およびプロキシフレームワークをデプロイしました。この攻撃は、メールボンビングとMicrosoft Teamsのなりすましを利用して悪意のあるアーカイブをダウンロードさせるものでした。このインプラントは、特定のDenoの権限フラグを使用してC2通信、ローカルコマンド実行、ネットワークピボットを行う、複数のモジュラージャバスクリプトファイルを介して動作します。
調査
調査により、電子メールフラッディングとMicrosoft Teamsを利用したソーシャルエンジニアリングからなる初期アクセス段階が明らかになりました。このマルウェアは非伝統的なモジュラー型Denoベースのシステムとして特定され、app.js、back.js、helper.js、webui.jsの4つのスクリプトに分かれていました。検出は初期の実行ではなく、ポストエクスプロイト調査活動中に行われました。
軽減策
組織は、ユーザー書き込み可能なディレクトリからのDenoのようなスクリプトランタイムの実行を監視し、–allow-runや–allow-netのような疑わしい権限フラグに警告すべきです。ローカルループバックHTTPサービスの監視や、Teamsのなりすまし警告とメールの異常との相関を実施することが推奨されます。さらに、署名されていないまたは承認されていないランタイムの実行を制限することで、攻撃面を減少させることができます。
対応
検出後、対策者は影響を受けたホストを隔離し、Teamsのなりすましの発生源を調査すべきです。分析は、Denoプロセスの系統やループバックポート10021または10022にバインドされたローカルサービスに焦点を当てるべきです。Microsoft 365 Unified Audit LogsのTeamsImpersonationDetectedイベントを確認することが、ソーシャルエンジニアリングキャンペーンの範囲を特定するために重要です。
graph TB %% クラス定義 classDef action fill:#99ccff classDef builtin fill:#cccccc classDef malware fill:#ff9999 classDef discovery fill:#ccffcc classDef command_control fill:#ffff99 %% 初期攻撃フェーズ attack_email_bombing[“<b>アクション</b> – <b>T1667 メール爆撃</b><br/>説明: 大量のメール送信キャンペーンにより<br/>ユーザーの疲労と混乱を引き起こす。”] class attack_email_bombing action attack_social_eng[“<b>アクション</b> – <b>T1684.001 ソーシャルエンジニアリング: なりすまし</b><br/>説明: Microsoft Teams の通話を通じて<br/>ITサポート担当者を装い信頼を獲得する。”] class attack_social_eng action attack_user_exec[“<b>アクション</b> – <b>T1204.002 ユーザー実行: 悪意のあるファイル</b><br/>説明: 被害者が悪意のあるアーカイブを<br/>ダウンロードして展開する。”] class attack_user_exec action file_malicious_archive[“<b>ファイル</b>: patch09913.b<br/>説明: Denoベースのマルウェアフレームワークを含む<br/>悪意のあるアーカイブ。”] class file_malicious_archive builtin %% マルウェアフレームワーク実行フェーズ malware_deno_framework[“<b>マルウェア</b>: Denoベースのフレームワーク<br/>説明: app.js をオーケストレーターとして利用する<br/>モジュール型マルウェア。”] class malware_deno_framework malware module_app_js[“<b>モジュール</b>: app.js<br/>説明: JavaScript を利用して<br/>各種モジュールを起動するオーケストレーター。”] class module_app_js malware action_js_interpreter[“<b>アクション</b> – <b>T1059.007 コマンドおよびスクリプトインタープリター: JavaScript</b><br/>説明: app.js がモジュールを起動するために使用する。”] class action_js_interpreter action action_hide_artifacts[“<b>アクション</b> – <b>T1564.011 アーティファクト隠蔽: プロセス割り込みの無視</b><br/>説明: conhost.exe –headless を使用して<br/>コンソールウィンドウを非表示にする。”] class action_hide_artifacts action %% 永続化フェーズ module_back_js[“<b>モジュール</b>: back.js<br/>説明: 永続化およびC2通信を担当する。”] class module_back_js malware action_persistence[“<b>アクション</b> – <b>T1037.004 起動またはログオン初期化スクリプト: RCスクリプト</b><br/>説明: Windows レジストリキー<br/>HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run を変更する。”] class action_persistence action %% 情報収集フェーズ module_helper_js[“<b>モジュール</b>: helper.js<br/>説明: システム情報の列挙を実施する。”] class module_helper_js malware action_process_discovery[“<b>アクション</b> – <b>T1057 プロセス探索</b><br/>説明: tasklist を実行して稼働中のプロセスを特定する。”] class action_process_discovery discovery action_sys_info_discovery[“<b>アクション</b> – <b>T1082 システム情報探索</b><br/>説明: ipconfig /all および set を実行し、<br/>ネットワーク情報と環境変数を収集する。”] class action_sys_info_discovery discovery %% C2および内部ピボットフェーズ action_c2_protocol[“<b>アクション</b> – <b>T1071.001 アプリケーション層プロトコル: Webプロトコル</b><br/>説明: CloudFront 上の C2 エンドポイントとの<br/>永続的な WebSocket 接続を維持する。”] class action_c2_protocol command_control module_webui_js[“<b>モジュール</b>: webui.js<br/>説明: 内部ネットワーク内での移動を支援する。”] class module_webui_js malware action_proxy_pivoting[“<b>アクション</b> – <b>T1090 プロキシ(内部ピボット)</b><br/>説明: TCPトラフィックを内部ネットワークへ<br/>転送するアクセスブローカーとして機能する。”] class action_proxy_pivoting command_control %% 接続 attack_email_bombing –>|混乱を引き起こす| attack_social_eng attack_social_eng –>|につながる| attack_user_exec attack_user_exec –>|含む| file_malicious_archive file_malicious_archive –>|実行する| malware_deno_framework malware_deno_framework –>|によって制御される| module_app_js module_app_js –>|使用する| action_js_interpreter module_app_js –>|実装する| action_hide_artifacts module_app_js –>|起動する| module_back_js module_app_js –>|起動する| module_helper_js module_app_js –>|起動する| module_webui_js module_back_js –>|実行する| action_persistence module_back_js –>|確立する| action_c2_protocol module_helper_js –>|実行する| action_process_discovery module_helper_js –>|実行する| action_sys_info_discovery module_webui_js –>|実行する| action_proxy_pivoting
攻撃フロー
検出
持続性のポイントの可能性 [ASEPs – Software/NTUSER Hive] (レジストリイベントに基づく)
表示
持続性のポイントの可能性 [ASEPs – Software/NTUSER Hive] (cmdlineに基づく)
表示
Denoランタイムの悪用試みの可能性 (プロセス作成に基づく)
表示
システムネットワーク構成ディスカバリーの可能性 (cmdlineに基づく)
表示
LOLBAS Conhost (cmdlineに基づく)
表示
検出のためのIOC (HashSha256): DenoベースのプロキシとRATの解剖
表示
Denoがコマンドシェルコマンドを実行することを検出 [Windows Sysmon]
表示
DenoベースのRAT実行を疑わしい権限フラグで検出 [Windowsプロセス作成]
表示
シミュレーション実行
前提条件: テレメトリーとベースライン事前チェックに通過していること。
根拠: このセクションは、検出ルールを発動するために設計された敵の技術(TTP)の正確な実行を詳述しています。コマンドとナラティブは検出論理によって期待される正確なテレメトリを生成することを目的として、TTPsを直接反映する必要があります。抽象的または無関連な例は誤診につながります。
-
攻撃のナラティブとコマンド: 攻撃者は、スピアフィッシングアタッチメントを介してDenoベースの悪意のあるRATを被害者のマシンに配信することに成功しました (T1566.004) 。従来のシグネチャベースのAVを回避するために、攻撃者はDenoバイナリをユーザーのローミングプロファイルの深く非標準なサブディレクトリ内に隠します:
C:Usersuser.nameAppDataRoamingDenoJSEnv。攻撃者は次に、--allow-runand--allow-netフラグを使用してバイナリを実行します。これにより、JavaScriptベースのマルウェアはシステムディスカバリー (T1082) のために任意のシェルコマンドを実行し、HTTPSを介して外部C2サーバーと通信します (T1071.001). -
回帰テストスクリプト:
# 注意: このスクリプトは、ルールロジックをトリガーするためにディレクトリとバイナリの存在をシミュレートします。 # 実際のテストでは、ファイルが正確なパスに存在している必要があります。 $targetDir = "C:Usersuser.nameAppDataRoamingDenoJSEnv" $targetExe = "$targetDirdeno.exe" # 1. 検出ルールで要求される特定のディレクトリ構造を作成 if (!(Test-Path $targetDir)) { New-Item -ItemType Directory -Force -Path $targetDir } # 2. 'deno.exe'として機能するダミーファイルを作成 # リアルなシミュレーションでは、これが実際のDenoバイナリであることが必要です。 New-Item -ItemType File -Force -Path $targetExe # 3. '悪意のある' コマンドを実行 # Start-Processを使用して、Sysmonログに子プロセスとして表示されるようにします。 # 'deno.exe'がダミーであるため、'cmd.exe'を呼び出すが、コマンドストリングを偽装してロジックに一致させるか、 # 実際のルールをテストしている場合、バイナリが実在し、そのパスで呼び出されることを保証します。 # 実際のDenoバイナリをそのパスに提供することを前提にします。 Write-Host "[!] $targetExeの悪意フラグでの実行をシミュレートしています..." Start-Process -FilePath "cmd.exe" -ArgumentList "/c echo Simulation Triggering Rule..." # 注意: ルールを本当にトリガーするには、実際のdeno.exeが存在している必要があります。 # Imageパスのみを厳密に見ているルールであれば、バイナリは存在していなければなりません。 # 作用するシミュレーションスクリプトのため、パスを呼び出します: # Start-Process -FilePath $targetExe -ArgumentList "--allow-run --allow-net" -
クリーンアップコマンド:
# シミュレートされた悪意のあるディレクトリとファイルを削除 Remove-Item -Path "C:Usersuser.nameAppDataRoamingDenoJSEnv" -Recurse -Force Write-Host "[+] クリーンアップ完了。"