SOC Prime Bias: 中程度

27 May 2026 15:51 UTC

BlackToad、自動化ITペイロードでネットワーク操作を利用

Author Photo
SOC Prime Team linkedin icon フォローする
BlackToad、自動化ITペイロードでネットワーク操作を利用
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

JUMPSECは、カスタムAutoItクリプターに隠されたRemcos RATペイロードを届けるフィッシングキャンペーンを発見しました。感染チェーンはVBSスクリプトを使用して実行 ipconfig /release の後に ipconfig /renewを行い、検出回避のためにネットワーク接続を一時的に妨害します。研究者は、このキャンペーンをナイジェリアのe犯罪エコシステムに関連付け、インフラストラクチャはモバイルISP接続の背後でホストされた動的DNSドメインに依存しています。

調査

調査は悪意のあるメールを追跡し、埋め込まれたWinRAR自己解凍アーカイブを解凍し、偽装されたAutoItインタープリターを起動するVBSローダーを特定しました。AutoItスクリプトはRemcosインプラントを復号化して実行し、回収された設定はコマンドアンドコントロールドメイン、ミューテックス値、および永続性Runキーを露出しました。研究者は、3つの動的DNSドメインとナイジェリアのIPアドレス群にインフラストラクチャをマッピングしました。

緩和策

組織は識別された動的DNSドメインおよび関連するIPレンジをブロックし、疑わしい ipconfig /release and ipconfig /renew シーケンスを監視し、AutoItまたはVBSスクリプトが生成する cmd.exeを検出すべきです。誤解を招く二重拡張子を使用するファイルには強力な実行制御を適用し、 WindowsUpdate のようなレジストリRunエントリは悪用を監視する必要があります。

対応策

この活動が検出された場合、影響を受けた端末を直ちに隔離し、Remcosプロセスを終了し、永続化に使用された悪意のあるRunキーを削除し、資格情報の窃取や後続の活動を完全に法医学的に調査します。ネットワーク停電技術およびキャンペーンに関連した特定のファイル名パターンを検出するように検出内容も更新すべきです。

攻撃フロー

シミュレーション実行

前提条件: テレメトリー&ベースラインの事前チェックに合格している必要があります。

理論的根拠: このセクションは、検出ルールを引き金にすべく設計された敵技術(TTP)の正確な実行を詳細に示します。コマンドとストーリーは特定されたTTPを直接反映し、検出ロジックが期待する正確なテレメトリーを生成することを目指します。抽象的または無関連な例は誤診を引き起こします。

  • 攻撃の概要とコマンド:

    1. 目標: ハードコードされたポート50240で既知の悪意のあるDDNSドメインの1つを使用してBlackToad RemcosインプラントとC2チャネルを確立します。
    2. ステップバイステップ:
      • 選択した悪意のあるDDNSドメインを解決(pmitm.ddns.net).
      • ポート50240で解決されたIPにTCPソケットを開く。
      • インプラントの初期ハンドシェイクを模倣する最小の“ハートビート”ペイロードを送信する。
      • ファイアウォールがアウトバウンド接続を記録することを確認するために30秒間ソケットを開いたままにする。
    3. アウトバウンド接続は、Sigmaルールの destination.ip リストおよび destination.port 基準に正確に一致し、検出可能なファイアウォールイベントを生成します。
  • 回帰テストスクリプト:

     # BlackToad C2通信シミュレーション (PowerShell)
      $c2Domain = "pmitm.ddns.net"      # ルールに記載されたドメインの1つ
      $c2Port   = 50240
    
      try {
          # ドメインをIPに解決(DNSクエリテレメトリーを追加)
          $ip = [System.Net.Dns]::GetHostAddresses($c2Domain) |
                Where-Object { $_.AddressFamily -eq 'InterNetwork' } |
                Select-Object -First 1
    
          if (-not $ip) { throw "Unable to resolve $c2Domain" }
    
          Write-Host "Resolved $c2Domain to $($ip.IPAddressToString). Connecting..."
    
          # TCP接続を開く(ファイアウォールのアウトバウンドログを生成)
          $client = New-Object System.Net.Sockets.TcpClient
          $client.Connect($ip, $c2Port)
    
          # シンプルなハートビート(16進 0x01)を送信
          $stream = $client.GetStream()
          $payload = [byte[]](0x01)
          $stream.Write($payload, 0, $payload.Length)
    
          Write-Host "ハートビート送信しました。30秒間接続を維持します..."
          Start-Sleep -Seconds 30
    
          $stream.Close()
          $client.Close()
          Write-Host "接続が正常に閉じられました。"
      }
      catch {
          Write-Error "シミュレーションに失敗しました: $_"
      }
  • クリーンアップコマンド:

     # 残っているソケットが存在する場合は閉じる
      Get-NetTCPConnection -RemotePort 50240 -State Established |
          ForEach-Object { Stop-Process -Id $_.OwningProcess -Force }
      # 任意: 解決されたDDNSエントリを削除するためDNSキャッシュをフラッシュ
      ipconfig /flushdns
      Write-Host "クリーンアップ完了。"