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イベントを確認することが、ソーシャルエンジニアリングキャンペーンの範囲を特定するために重要です。
攻撃フロー
検出
持続性のポイントの可能性 [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 "[+] クリーンアップ完了。"