マルチステージLNK攻撃がTONブロックチェーンを利用してNode.jsバックドアを配信
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
巧妙なマルチステージ攻撃は、フィッシングを通じて送信される悪意のあるLNKファイルを使用して、Node.jsベースのバックドアを展開します。このマルウェアは、コマンド&コントロールアドレスを取得するためにTONブロックチェーンをクエリするEtherHiding技術に依存しており、オペレーターによるインフラストラクチャの更新を容易にします。カスタムバイトコード仮想マシンインタープリタや高度に難読化されたPowerShellスクリプトを含む高度な回避方法も使用します。
調査
LevelBlueマネージド脅威調査チームは、疑わしいZIPアーカイブとLNKファイルに関連するセキュリティアラートを通じてキャンペーンを発見しました。分析者はビット演算および算術ロジックを使用して悪意のあるURLを再構築するPowerShellコマンドをデオブスクして調査しました。さらに、暗号化されたバイトコードを実行するために使用されるカスタムJavaScript仮想マシンインタープリタを検査し、TONブロックチェーン上のトランザクションへのコマンド&コントロールの取得を追跡しました。
緩和策
組織は信頼できないソースからのLNKファイルの実行を制限し、特にビット論理演算や大きな整数計算を伴う疑わしいPowerShellの動作を監視すべきです。強力なメールフィルタリングを使用して悪意のあるリンクをブロックし、未許可のNode.jsインストールや実行を監視すべきです。異常なプロセスに対するブロックチェーン関連APIへのアクセスを制限することも、コマンド&コントロールの取得を妨げる可能性があります。
応答
この活動が検出された場合、影響を受けたエンドポイントを隔離し、疑わしい node.exe またはPowerShellプロセスを直ちに終了します。メモリフォレンジックスを実行して復号化されたJavaScriptバイトコードを回収し、クエリされている特定のコマンド&コントロールドメインを特定します。許可されていない永続性のためのレジストリRunキーを確認し、マルウェアによって作成されたWindows Defenderの除外をスキャンします。
攻撃フロー
検出
持続性ポイントの可能性 [ASEPs – ソフトウェア/NTUSERハイブ] (via registry_event)
表示
PowerShellが疑わしいディレクトリでファイルを実行するバイパス実行ポリシー (via cmdline)
表示
NodeJSバイナリが珍しい場所から実行されている (via cmdline)
表示
PowerShellからの疑わしい.NETメソッドの呼び出し (via powershell)
表示
Windows Defenderの設定における疑わしい変更 (via powershell)
表示
疑わしいプロセスによってNodeJsがダウンロードされる可能性 (via dns_query)
表示
LNKファイルを経由した難読化されたPowerShellとNode.jsの実行 [Windowsプロセス作成]
表示
シミュレーション実行
前提条件: テレメトリー&ベースラインプレフライトチェックを通過している必要があります。
根拠: このセクションは、検出ルールをトリガーするために設計された対策技術 (TTP) の正確な実行について詳述しています。コマンドと説明は、識別されたTTPsを直接反映し、検出ロジックによって期待される正確なテレメトリを生成する必要があります。抽象的または無関係な例は誤診を招くでしょう。
-
攻撃の促進とコマンド: 攻撃者はバックドアをシステムに確立しようとしています。検出を回避するために、LNKファイルを使用してPowerShellコマンドを実行します。明確なURLの代わりに、
-band 255and-shr 8を使用して、大きな整数値を操作し、処理されると悪意のあるペイロードを指すURLを再構築します。ペイロードが取得または展開されると、PowerShellプロセスはnode.exeをスプーンして、合法的な開発者活動に溶け込むJavaScriptベースのバックドアを実行します。 -
回帰テストスクリプト:
# 難読化されたPowerShellとNode.jsの実行連鎖のシミュレーション # このスクリプトは、検出ルールで必要とされる具体的なコマンドライン引数を模倣します。 $jsPayload = "console.log('C2接続確立');" # ステップ1: PowerShell難読化段階のシミュレーション (プロセスコマンドラインに現れる) # 実際の攻撃では、これはLNKファイルによってトリガーされるコマンドです。 $simulatedPSCommand = "powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -band 255 -shr 8 -Command `"`$url = [Convert]::ToString([bigint]123456789); iwr `$url | iex`"" # ステップ2: 同じ連鎖の一部としての後続のNode.js実行のシミュレーション # 親子関係をシミュレートするにはStart-Processを使用します。 Start-Process "powershell.exe" -ArgumentList "-NoProfile -Command `"$simulatedPSCommand; node.exe $jsPayload`"" -
クリーンアップコマンド:
# 永続ファイルがこのシミュレーションによって作成されていませんが、 # 生成されたノードプロセスがある場合は終了を保証します。 Stop-Process -Name "node" -ErrorAction SilentlyContinue Stop-Process -Name "powershell" -ErrorAction SilentlyContinue