VIPERTUNNEL Pythonバックドア:徹底分析
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
このレポートは、スケジュールされたタスクを介して永続性を達成し、難読化されたDLLをロードする悪意のあるsitecustomize.pyを利用するPythonベースのバックドアVIPERTUNNELの分析を詳細に述べています。このDLLは暗号化されたマルチステージペイロードを復号して実行し、ポート443を介してハードコーディングされたC2サーバーへのSOCKS5プロキシを確立します。このインフラストラクチャはUNC2165とEvilCorpに関連付けられ、ShadowCoilクレデンシャルスティーラーと難読化技術を共有しています。
調査
研究者はAutoruns出力を調査し、スケジュールされたタスク523135538を特定し、その実行をC:ProgramDatacp49spythonw.exeおよびそのsitecustomize.pyモジュールに追跡しました。b5yogiiy3c.dllのリバースエンジニアリングにより、階層化された難読化、復号化ルーチン、ハードコーディングされた認証情報を使用してSOCKS5トンネルを作成する最終ステージが明らかになりました。インフラストラクチャ分析により、複数のドメインとIPがキャンペーンにリンクされ、Pyramid C2フレームワークの使用が明らかになりました。
緩和策
引数なしでpythonw.exeの実行、数字の名前付きスケジュールドタスクの作成、予期しない場所でのsitecustomize.pyの存在を監視するエンドポイント検出を展開します。既知のC2ドメインおよび異常なHTTP 401応答を伴うポート443/8000への送信トラフィックをブロックします。許可されていないPythonモジュールの読み込みを防ぐために、厳格なアプリケーション制御を実装します。
応答
疑わしいスケジュールドタスクの作成とスクリプトなしでpythonw.exeの実行をアラートします。影響を受けたホストを隔離し、メモリダンプを収集し、特徴的なクラス名とハードコーディングされた認証情報を探します。報告書で特定されたC2インフラストラクチャを無効にし、妨害します。
攻撃フロー
検出
疑わしいフォルダからのPython実行(cmdline経由)
表示
疑わしいスケジュールドタスク(監査経由)
表示
IOC(ソースIP)検出: VIPERTUNNEL Pythonバックドアの内幕に迫る – パート2
表示
IOC(ソースIP)検出: VIPERTUNNEL Pythonバックドアの内幕に迫る – パート1
表示
IOC(宛先IP)検出: VIPERTUNNEL Pythonバックドアの内幕に迫る – パート2
表示
IOC(宛先IP)検出: VIPERTUNNEL Pythonバックドアの内幕に迫る – パート1
表示
sitecustomize.py を介した持続性のためのPythonの疑わしい実行 [Windowsプロセス作成]
表示
シミュレーション実行
前提条件: テレメトリーとベースラインの事前チェックが合格している必要があります。
根拠: このセクションでは、検出ルールをトリガーするように設計された敵の技術(TTP)の正確な実行を詳述しています。コマンドと説明は、特定されたTTPを直接反映し、検出ロジックが期待する正確なテレメトリーを生成することを目指しています。
-
攻撃の説明 & コマンド:
攻撃者はまず悪意のある
sitecustomize.pyをpythonw.exeと同じディレクトリに配置します。Pythonはインタプリタの起動時に自動的にsitecustomize.pyをインポートするため、攻撃者はコマンドライン上にスクリプトパスを渡すことなく任意のコードを実行できます。pythonw.exeを引数なしで起動することで、プロセス作成イベントには空のフィールドが含まれ、Sigmaルールの条件が満たされます。ペイロードは永続性のためにスケジュールドタスクを確立し、インタプリタがシステムの起動時に実行されることを保証し、長期的な足掛かりを維持します。フィールドが含まれ、Sigmaルールの条件が満たされます。ペイロードは永続性のためにスケジュールドタスクを確立し、インタプリタがシステムの起動時に実行されることを保証し、長期的な足掛かりを維持します。field, satisfying the Sigma rule’s conditions. The payload establishes a scheduled task for persistence, ensuring the interpreter runs at system startup, thereby maintaining long‑term foothold. -
リグレッションテストスクリプト:
# ------------------------------------------------- # 悪意のあるsitecustomize.pyをセットアップ # ------------------------------------------------- $payloadPath = 'C:ProgramDatacp49ssitecustomize.py' $exePath = 'C:ProgramDatacp49spythonw.exe' # ターゲットフォルダーが存在することを確認 New-Item -ItemType Directory -Path (Split-Path $exePath) -Force | Out-Null # テスト用に無害なコピーのpythonw.exeをデプロイする(既に存在しない場合) # 実際のRed Teamシナリオでは、これは正当なインタプリタになる if (-Not (Test-Path $exePath)) { # システムPythonインストールからコピー(必要に応じてパスを調整) Copy-Item 'C:Python39pythonw.exe' $exePath } # 悪意のあるsitecustomize.pyを作成(証明用にスケジュールドタスクを作成) @" import subprocess, sys # pythonw.exeを毎分実行するスケジュールドタスクを作成(永続性) subprocess.run(['schtasks', '/Create', '/SC', 'MINUTE', '/MO', '1', '/TN', 'UpdateTask', '/TR', sys.executable]) "@ | Set-Content -Path $payloadPath -Encoding UTF8 # ------------------------------------------------- # 検出をトリガーする(悪意のある実行) # ------------------------------------------------- Write-Host '[+] 引数なしでpythonw.exeを起動...' Start-Process -FilePath $exePath -ArgumentList '' -WindowStyle Hidden # スケジュールドタスクが作成されるまでの短い待機(オプション) Start-Sleep -Seconds 5 Write-Host '[+] ペイロードが実行されました。 SIEMのアラートを確認してください。' # ------------------------------------------------- # スクリプトの終了 # ------------------------------------------------- -
クリーンアップコマンド:
# 悪意のあるsitecustomize.pyを削除 Remove-Item -Path 'C:ProgramDatacp49ssitecustomize.py' -Force -ErrorAction SilentlyContinue # ペイロードによって作成されたスケジュールドタスクを削除 schtasks /Delete /TN UpdateTask /F # テストコピーであったpythonw.exeをオプションで削除 # Remove-Item -Path 'C:ProgramDatacp49spythonw.exe' -Force Write-Host '[+] クリーンアップ完了。'