Back to Intelligence

LLMjacking (UNC6993) + Kimsuky 'Operation GitPower': Dual OTX Pulse Analysis — Cloud API Key Theft and GitHub-Abuse Espionage Detection Pack

SA
Security Arsenal Team
November 12, 2026
8 min read

Two concurrent OTX pulses published 2026-11-12 expose a bifurcated threat landscape: financially motivated cloud resource hijacking and state-sponsored espionage.

Pulse 1 — LLMjacking (UNC6993): Google Threat Intelligence Group (GTIG) tracking identifies a sharp rise in intrusions where attackers hijack enterprise Large Language Model access. Unlike cryptojacking's low-and-slow resource drain, LLMjacking monetizes compromised cloud and model endpoints immediately — stolen API keys and service account credentials are resold or proxied through criminal infrastructure (an "LLM mixer" model). The campaign exploits CVE-2026-40217 and targets finance, retail, technology, and transportation sectors across North America, South America, and APAC. Associated tooling includes the Bankshot (S0239) implant and Trojan Manuscript. C2/proxy infrastructure observed includes jet-night.com and newapi.pro — the latter consistent with resold OpenAI-compatible API relay services.

Pulse 2 — Kimsuky "Operation GitPower": The DPRK-nexus Kimsuky group is spear phishing Ukrainian experts in diplomacy, security, and international policy using fraudulent conference invitations and collaboration requests. The operation abuses GitHub as a legitimate distribution and exfiltration channel, delivering malicious CHM files, LNK shortcuts, and PowerShell payloads. 131 indicators were published, dominated by dynamic-DNS staging hostnames (*.mywebcommunity.org, *.mygamesonline.org, *.getenjoyment.net, *.sportsontheweb.net, *.medianewsonline.com) and two SHA256 payload hashes.

Collective read: Both campaigns share a common thread — abuse of trusted cloud platforms (LLM APIs, GitHub) to blend malicious traffic into legitimate enterprise egress. Perimeter controls keyed on domain reputation alone will miss both.

Threat Actor / Malware Profile

UNC6993 — LLMjacking Cluster

  • Distribution: Exploitation of CVE-2026-40217 against exposed AI/LLM gateway infrastructure; theft of cloud service account keys and LLM API keys from compromised endpoints and misconfigured repositories.
  • Payload behavior: Bankshot (S0239) establishes initial foothold; Trojan Manuscript performs credential harvesting from cloud metadata services (IMDS), environment variables, and local config stores (~/.aws/credentials, .env files, application config).
  • Monetization: Stolen LLM access is proxied through criminal relay infrastructure (newapi.pro-style OpenAI-compatible endpoints) and resold — victims bear the inference cost and potential data exposure of prompts routed through their models.
  • C2: HTTPS to attacker-controlled proxy domains (jet-night.com), designed to resemble legitimate API traffic.

Kimsuky — Operation GitPower

  • Distribution: Spear phishing emails impersonating international conference organizers; malicious attachments (CHM, LNK) and GitHub repository links hosting payloads.
  • Payload behavior: LNK files invoke PowerShell downloaders; CHM files execute embedded scripts via hh.exe. Payloads profile the host (diplomatic/policy relevance) before staging espionage tooling.
  • C2/exfiltration: GitHub API abuse (repository contents, gists, issues) blended with dynamic-DNS hostnames for fallback C2. Exfiltrated documents staged via legitimate GitHub traffic to evade egress filtering.
  • Anti-analysis: DDNS churn, legitimate-platform abuse, and multi-stage delivery that only fully executes on targeted (Ukrainian government-adjacent) hosts.

IOC Analysis

TypeExamplesOperationalization
CVECVE-2026-40217Feed to vuln scanner (Tenable/Qualys); prioritize LLM gateway & AI infra patching
Domainsjet-night.com, newapi.proDNS sinkhole + proxy block; alert on any egress; hunt historical DNS logs 90 days
DDNS hostnames*.mywebcommunity.org, *.getenjoyment.net, *.mygamesonline.orgWildcard-block parent DDNS zones at DNS layer where business use permits; add 131 indicators to TI platform
FileHash-SHA256297292d4...85cad, d398f11c...0439aPush to EDR block lists; retro-hunt via Defender/CrowdStrike hash search; VirusTotal/OTX pivot for related samples

Tooling: Decode and enrich via OTX DirectConnect API, VirusTotal Enterprise, and AbuseIPDB. Feed domains into passive DNS (RiskIQ/SecurityTrails) to map UNC6993 proxy infrastructure expansion. Hash pivots in MalwareBazaar will surface related Kimsuky staging samples.

Detection Engineering

YAML
---
title: LLMjacking - Cloud Credential Access Followed by LLM API Egress
id: 8f3a2c1e-9b4d-4e7a-a1c2-llmjack00001
status: experimental
description: Detects processes reading cloud credential stores followed by egress to known LLMjacking proxy infrastructure associated with UNC6993.
author: Security Arsenal
logsource:
    category: network_connection
    product: windows
detection:
    selection_domain:
        DestinationHostname:
            - jet-night.com
            - newapi.pro
    selection_port:
        DestinationPort:
            - 443
            - 8443
    condition: selection_domain and selection_port
falsepositives:
    - Legitimate API relay services (validate against sanctioned vendor list)
level: high
tags:
    - attack.command_and_control
    - attack.t1071.001
    - attack.credential_access
---
title: Kimsuky GitPower - CHM or LNK Spawning PowerShell
id: 7d2b1a9f-4c3e-4f8b-b2d1-gitpower0002
status: experimental
description: Detects hh.exe (CHM) or explorer-launched LNK files spawning PowerShell, consistent with Kimsuky Operation GitPower spear phishing delivery.
author: Security Arsenal
logsource:
    category: process_creation
    product: windows
detection:
    selection_parent:
        ParentImage|endswith:
            - '\hh.exe'
            - '\explorer.exe'
    selection_child:
        Image|endswith:
            - '\powershell.exe'
            - '\pwsh.exe'
    selection_cmd:
        CommandLine|contains:
            - 'DownloadString'
            - 'IEX'
            - 'Invoke-Expression'
            - 'github.com'
            - 'raw.githubusercontent.com'
            - 'FromBase64String'
    condition: selection_parent and selection_child and selection_cmd
falsepositives:
    - Software deployment via help files is rare; validate developer workstation activity
level: high
tags:
    - attack.execution
    - attack.t1059.001
    - attack.t1204.002
    - attack.phishing
    - attack.t1566.001
---
title: Kimsuky GitPower - Dynamic DNS Staging Communication
id: 3e9c5d7b-1a2f-4e6c-c3e2-gitpower0003
status: experimental
description: Detects DNS resolution of dynamic-DNS hostnames used by Kimsuky for Operation GitPower C2 staging.
author: Security Arsenal
logsource:
    category: dns
detection:
    selection:
        query|contains:
            - '.mywebcommunity.org'
            - '.mygamesonline.org'
            - '.getenjoyment.net'
            - '.sportsontheweb.net'
            - '.medianewsonline.com'
    condition: selection
falsepositives:
    - Rare in enterprise environments; consumer DDNS usage should be investigated regardless
level: medium
tags:
    - attack.command_and_control
    - attack.t1071.004
    - attack.t1568.002
KQL — Microsoft Sentinel / Defender
// Kimsuky GitPower + UNC6993 LLMjacking unified hunt — Microsoft Sentinel
let DdnsZones = dynamic(["mywebcommunity.org","mygamesonline.org","getenjoyment.net","sportsontheweb.net","medianewsonline.com"]);
let LlmjackDomains = dynamic(["jet-night.com","newapi.pro"]);
let KimsukyHashes = dynamic(["297292d46d4f11fc801f5d6d01251735698a8419aa3196db7b3aa7bb8ea85cad","d398f11c236a59e44a9dff6f99af3aacefcb4a4bdf77bb7cf790cd0b13b0439a"]);
union isfuzzy=true
    (DeviceNetworkEvents
    | where TimeGenerated > ago(14d)
    | where RemoteUrl has_any (DdnsZones) or RemoteUrl has_any (LlmjackDomains)
    | project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteUrl, RemoteIP, ActionType
    | extend HuntType = "NetworkIOC"),
    (DeviceProcessEvents
    | where TimeGenerated > ago(14d)
    | where (InitiatingProcessFileName =~ "hh.exe" and FileName in~ ("powershell.exe","pwsh.exe"))
       or (ProcessCommandLine has_any ("raw.githubusercontent.com","DownloadString","FromBase64String") and FileName has "powershell")
    | project TimeGenerated, DeviceName, FileName, ProcessCommandLine, InitiatingProcessFileName, SHA256
    | extend HuntType = "GitPowerExecution"),
    (DeviceFileEvents
    | where TimeGenerated > ago(14d)
    | where SHA256 has_any (KimsukyHashes)
    | project TimeGenerated, DeviceName, FolderPath, FileName, SHA256
    | extend HuntType = "HashMatch")
| sort by TimeGenerated desc
PowerShell
# Security Arsenal — GitPower / LLMjacking IOC Hunt Script
# Run elevated on endpoints or deploy via Intune/SCCM. Outputs findings to CSV.

$findings = @()

# 1. Hunt Kimsuky payload hashes across common staging paths
$targetHashes = @(
    "297292d46d4f11fc801f5d6d01251735698a8419aa3196db7b3aa7bb8ea85cad",
    "d398f11c236a59e44a9dff6f99af3aacefcb4a4bdf77bb7cf790cd0b13b0439a"
)
$searchPaths = @("$env:TEMP", "$env:USERPROFILE\Downloads", "C:\Users\Public", "$env:APPDATA")
foreach ($path in $searchPaths) {
    Get-ChildItem -Path $path -Recurse -File -ErrorAction SilentlyContinue |
        Where-Object { $_.Length -lt 50MB } |
        ForEach-Object {
            $h = (Get-FileHash -Path $_.FullName -Algorithm SHA256 -ErrorAction SilentlyContinue).Hash
            if ($targetHashes -contains $h) {
                $findings += [PSCustomObject]@{Type="HashMatch"; Path=$_.FullName; Detail=$h}
            }
        }
}

# 2. Check recent LNK files in recent-items & startup (Kimsuky persistence vector)
Get-ChildItem "$env:APPDATA\Microsoft\Windows\Recent" -Filter *.lnk -ErrorAction SilentlyContinue |
    Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-14) } |
    ForEach-Object { $findings += [PSCustomObject]@{Type="RecentLNK"; Path=$_.FullName; Detail=$_.LastWriteTime} }

# 3. Network connections to DDNS / LLMjacking infrastructure
$suspicious = "mywebcommunity.org","mygamesonline.org","getenjoyment.net","sportsontheweb.net","medianewsonline.com","jet-night.com","newapi.pro"
Get-NetTCPConnection -State Established -ErrorAction SilentlyContinue | ForEach-Object {
    $rdns = (Resolve-DnsName -Name $_.RemoteAddress -ErrorAction SilentlyContinue).NameHost
    foreach ($s in $suspicious) {
        if ($rdns -like "*$s*") {
            $proc = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
            $findings += [PSCustomObject]@{Type="C2Connection"; Path=$proc.Path; Detail="$($_.RemoteAddress) -> $rdns"}
        }
    }
}

# 4. Cloud credential file access artifacts (LLMjacking staging)
$credPaths = @("$env:USERPROFILE\.aws\credentials", "$env:USERPROFILE\.azure", "$env:USERPROFILE\.config\gcloud")
foreach ($cp in $credPaths) {
    if (Test-Path $cp) {
        $item = Get-Item $cp -ErrorAction SilentlyContinue
        if ($item.LastAccessTime -gt (Get-Date).AddDays(-7) -and $item.LastAccessTime -gt $item.LastWriteTime) {
            $findings += [PSCustomObject]@{Type="CredAccess"; Path=$cp; Detail="Accessed $($item.LastAccessTime) after last write $($item.LastWriteTime)"}
        }
    }
}

# 5. Scheduled tasks with PowerShell/GitHub references (persistence)
Get-ScheduledTask | ForEach-Object {
    $actions = $_.Actions | Out-String
    if ($actions -match "powershell|github|hh.exe") {
        $findings += [PSCustomObject]@{Type="SuspiciousTask"; Path=$_.TaskName; Detail=$actions.Trim()}
    }
}

$findings | Export-Csv -Path "C:\Intel_Hunt_$(Get-Date -Format 'yyyyMMdd_HHmm').csv" -NoTypeInformation
Write-Host "[+] Hunt complete. $($findings.Count) findings." -ForegroundColor Cyan
$findings | Format-Table -AutoSize

Response Priorities

Immediate (0–4h):

  • Block jet-night.com, newapi.pro, and the five Kimsuky DDNS parent zones at DNS resolver and web proxy layers.
  • Push both SHA256 hashes to EDR block lists; execute the KQL retro-hunt across 14 days of telemetry.
  • Audit LLM gateway/API egress for anomalous inference volume or unknown API keys in use — LLMjacking victims often first notice via billing anomalies.

24h:

  • Because both campaigns involve credential theft (cloud keys via UNC6993; targeted account access via Kimsuky phishing), force rotation of cloud service account keys, LLM API keys, and credentials of any user who received conference-invitation phishing.
  • Revoke and re-issue OAuth tokens for GitHub-integrated developer tooling; review GitHub audit logs for unauthorized repo/gist creation from corporate accounts.
  • Validate MFA on all cloud console and AI platform accounts; check for session token reuse from foreign ASNs.

1 week:

  • Patch/mitigate CVE-2026-40217 across LLM gateway and AI infrastructure; enforce egress allow-listing so model endpoints can only reach sanctioned API providers.
  • Implement cloud metadata service hardening (IMDSv2 enforcement, credential guardrails) to blunt Trojan Manuscript-style key harvesting.
  • Restrict CHM execution via Attack Surface Reduction rules; block child processes of hh.exe; add targeted phishing awareness for diplomatic/policy-adjacent staff referencing conference-lure themes.

Related Resources

Security Arsenal Incident Response Managed SOC & MDR Services AlertMonitor Threat Detection From The Dark Side Intel Hub

Is your security operations ready?

Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.