Back to Intelligence

K2F RAT via NIKKE Launcher Supply-Chain Compromise + GTA VI & Bank Phishing Credential Harvesting: OTX Pulse Analysis — Enterprise Detection Pack

SA
Security Arsenal Team
November 5, 2026
9 min read

Threat Summary

Four concurrent OTX pulses paint a coherent picture: credential theft operations are diversifying delivery vectors faster than most enterprise control planes can adapt.

The highest-severity event is a supply-chain compromise of the Goddess of Victory: NIKKE PC launcher. Between September 27 and November 4, 2026, attackers tampered with four script files hosted on Level Infinite's official CDN. The modified scripts — associated with LuaJIT loader components — silently downloaded and executed a remote access agent internally designated K2F. K2F provides arbitrary command execution and targets browser credential stores, cryptocurrency wallets, and cloud service tokens. Because delivery occurred through a trusted, code-signed update path, traditional perimeter controls and even application allowlisting offered limited protection. This is a classic trusted-channel compromise: the victim's own game launcher became the malware dropper.

In parallel, three credential-harvesting ecosystems are active:

  1. GTA VI release phishing — 121+ newly registered domains exploiting the November 19, 2026 launch hype, impersonating the leaker "CyberLeek," offering fake early access, key generators, and trojanized APKs with cryptocurrency scams and content lockers.
  2. AWS key validation for Amazon Bedrock — platforms such as KMON_NOC systematically test stolen AWS keys via GetCallerIdentity, then probe LLM access through ListFoundationModels — confirming that stolen cloud credentials are now being monetized for AI compute abuse ("token-jacking") in addition to classic data theft and cryptomining.
  3. US bank phishing with anti-takedown cloaking — 248 live look-alike domains targeting 189 US financial institutions, serving fake "account suspended" pages to returning visitors (analysts, scanners, takedown services) while delivering live phishing content to first-time victims.

Collectively these pulses indicate mature, industrialized credential pipelines: steal via supply chain or lure, validate via automated tooling, monetize via financial fraud and cloud resource abuse.

Threat Actor / Malware Profile

K2F Remote Access Agent (NIKKE Launcher Compromise)

  • Distribution: Tampered LuaJIT script files on the official game CDN; executed by the legitimate launcher update mechanism — no user interaction required beyond launching the game.
  • Payload behavior: Arbitrary remote command execution; harvesting of browser-stored credentials (cookies, saved logins, autofill), cryptocurrency wallet files/keys, and cloud service credentials (AWS/Azure/GCP config and token files under user profile directories).
  • C2 communication: Outbound HTTPS to attacker-controlled infrastructure including analytics.insightjs.com, insightjs.org, and IPs 89.126.250.172, 89.127.233.127. The "insightjs" naming mimics legitimate analytics libraries to blend with web telemetry.
  • Persistence: Remote access agent capability implies survivor mechanisms — hunt for new Run keys, scheduled tasks, and services created on hosts that ran the NIKKE launcher during the compromise window.
  • Anti-analysis: Delivery through trusted signed launcher evades reputation-based controls; CDN tampering means hash-based allowlists of the launcher itself are insufficient.

Credential Harvesting Ecosystems

  • GTA VI lures: Newly registered domains (NRDs) on cheap TLDs (.click, .icu, .cfd, .world, .my); payloads include trojanized APKs, fake key generators, and content lockers. Distribution via SEO poisoning, social media, and Discord/Telegram gaming communities.
  • KMON_NOC-style AWS validators: Automated tooling that validates harvested keys against sts:GetCallerIdentity and bedrock:ListFoundationModels / bedrock:InvokeModel — look for these API calls from anomalous principals or IPs in CloudTrail.
  • Bank phishing cloaking: Fingerprint-based conditional content serving — returning visitor fingerprints receive a fake suspension page; new fingerprints receive credential harvesters. This defeats automated takedown scanning and URL reputation crawlers. Naming pattern combines urgency keywords with bank names (e.g., authorize-valley.com, protect-pinnaclefp.com).

IOC Analysis

Indicator types present across these pulses and operational guidance:

  • IPv4 (C2): 89.126.250.172, 89.127.233.127 — block at egress firewall/proxy; retro-search NetFlow and proxy logs for connections since 2026-09-27.
  • Domains/Hostnames (C2 + phishing): analytics.insightjs.com, insightjs.org (K2F C2); GTA VI lure domains (gta6cyberleek.com, cyberleek.click, mygta6.icu, gta6keycodes.com, contact-rockstargames.com, etc.); bank phishing domains (53primaryset.com, authorize-valley.com, commercial-atfirst.com, protect-pinnaclefp.com). Sinkhole via DNS RPZ or protective DNS; note the bank-phishing cloaking means passive DNS and proxy logs are more reliable than visiting the sites to confirm.
  • File hashes (SHA256/MD5): K2F sample hashes and the KMON_NOC validator binaries (92364136..., c9335bb8...). Push to EDR blocklists; sweep with your EDR's hash search across the fleet. Hashes rotate fast — treat behavioral detections below as primary.
  • CVE reference: CVE-2026-98432 is listed in the NIKKE pulse — validate applicability in your vulnerability scanner and cross-check against any launcher/updater components in your environment.

Operationalization: Ingest the full pulse IOC sets into your TIP/SIEM with TLP:WHITE handling. For phishing domains, pair static blocking with NRD heuristics (domains <30 days old on high-risk TLDs matching brand keywords). For C2, prioritize egress blocking and retro-hunting over hash blocking.

Detection Engineering

YAML
---
title: K2F RAT C2 Communication - insightjs Infrastructure
id: 8f3a2c1e-9b4d-4e7a-a1c2-5d6e7f8a9b0c
status: experimental
description: Detects network connections to known K2F remote access agent C2 infrastructure identified in the NIKKE PC launcher CDN supply-chain compromise
references:
    - https://piyolog.hatenadiary.jp/entry/2026/11/05/133509
author: Security Arsenal Threat Intelligence
date: 2026/11/06
tags:
    - attack.command_and_control
    - attack.t1071.001
logsource:
    category: network_connection
product: windows
detection:
    selection_domain:
        DestinationHostname:
            - 'analytics.insightjs.com'
            - '*.insightjs.org'
    selection_ip:
        DestinationIp:
            - '89.126.250.172'
            - '89.127.233.127'
    condition: selection_domain or selection_ip
falsepositives:
    - None expected; infrastructure is attacker-controlled
level: critical
---
title: Game Launcher Spawning Suspicious Script or Shell Child Process
id: 1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects game launcher processes (NIKKE and similar) spawning script interpreters, shells, or credential-access tooling - consistent with K2F delivery via tampered LuaJIT CDN scripts
references:
    - https://piyolog.hatenadiary.jp/entry/2026/11/05/133509
author: Security Arsenal Threat Intelligence
date: 2026/11/06
tags:
    - attack.execution
    - attack.t1059
    - attack.t1195.002
logsource:
    category: process_creation
    product: windows
detection:
    selection_parent:
        ParentImage|contains:
            - '\nikke'
            - '\launcher'
    selection_child:
        Image|endswith:
            - '\powershell.exe'
            - '\pwsh.exe'
            - '\cmd.exe'
            - '\wscript.exe'
            - '\cscript.exe'
            - '\mshta.exe'
            - '\rundll32.exe'
            - '\curl.exe'
    condition: selection_parent and selection_child
falsepositives:
    - Rare legitimate launcher self-update activity; baseline per title
level: high
---
title: Credential Store Access by Non-Browser Process
id: 9d8c7b6a-5f4e-3d2c-1b0a-9e8d7c6b5a4f
status: experimental
description: Detects processes other than the browser itself accessing browser credential stores, crypto wallet files, or cloud CLI credential files - behavior consistent with K2F infostealer collection
author: Security Arsenal Threat Intelligence
date: 2026/11/06
tags:
    - attack.credential_access
    - attack.t1555.003
    - attack.t1552.001
logsource:
    category: file_access
    product: windows
detection:
    selection_target:
        TargetObject|contains:
            - '\Google\Chrome\User Data\Default\Login Data'
            - '\Microsoft\Edge\User Data\Default\Login Data'
            - '\BraveSoftware\Brave-Browser\User Data\Default\Login Data'
            - '\Exodus\exodus.wallet'
            - '\Electrum\wallets'
            - '\.aws\credentials'
            - '\.azure\'
            - '\.config\gcloud\'
    filter_browser:
        Image|endswith:
            - '\chrome.exe'
            - '\msedge.exe'
            - '\brave.exe'
            - '\firefox.exe'
    condition: selection_target and not filter_browser
falsepositives:
    - Backup agents and DLP tooling; allowlist known enterprise software
level: high
KQL — Microsoft Sentinel / Defender
// K2F C2 + GTA VI / Bank Phishing Infrastructure Hunt - Microsoft Sentinel
let c2_ips = dynamic(["89.126.250.172", "89.127.233.127"]);
let c2_domains = dynamic(["analytics.insightjs.com", "insightjs.org"]);
let phish_domains = dynamic(["gta6cyberleek.com", "cyberleek.click", "mygta6.icu", "gta6keycodes.com", "cyberleek.my", "contact-rockstargames.com", "cyberleek.cfd", "cyberleek.world", "53primaryset.com", "authorize-valley.com", "commercial-atfirst.com", "protect-pinnaclefp.com"]);
union isfuzzy=true
    (DeviceNetworkEvents
    | where TimeGenerated > ago(45d)
    | where RemoteIP in (c2_ips) or RemoteUrl has_any (c2_domains)
    | project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteIP, RemoteUrl, IndicatorType="K2F_C2_Network"),
    (DeviceNetworkEvents
    | where TimeGenerated > ago(30d)
    | where RemoteUrl has_any (phish_domains)
    | project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteIP, RemoteUrl, IndicatorType="Phishing_Domain"),
    (DeviceProcessEvents
    | where TimeGenerated > ago(45d)
    | where InitiatingProcessFileName has_any ("nikke", "launcher")
    | where FileName in~ ("powershell.exe", "cmd.exe", "wscript.exe", "cscript.exe", "mshta.exe", "rundll32.exe", "curl.exe")
    | project TimeGenerated, DeviceName, InitiatingProcessFileName, FileName, ProcessCommandLine, IndicatorType="Launcher_Child_Process"),
    (CloudAppEvents
    | where TimeGenerated > ago(30d)
    | where Application == "Amazon Web Services"
    | where ActionType in ("GetCallerIdentity", "ListFoundationModels", "InvokeModel")
    | project TimeGenerated, AccountDisplayName, IPAddress, ActionType, IndicatorType="AWS_Key_Validation")
| sort by TimeGenerated desc
PowerShell
# K2F RAT + Credential Harvester IOC Hunt - Run elevated on suspect endpoints
$ErrorActionPreference = 'SilentlyContinue'
$report = @()

# 1. K2F file hashes
$k2fHashes = @(
    '2f2aac505f486067af6831d6c75ea74df63acb1ed4e4002709c5962c68bd9203',
    '3aaafbd612f04501a6fdb0bb8b2f8a87796223e5584ac18ea5eb180feeafb193',
    '923641364ef0ce3a6f1d944890244082b8c7f29c9600c0433b2a0ca9822c0608',
    'c9335bb8a21bd2c568d03b040fb86a0e72145691e54a33495ee0cfaac55835dc'
)
$searchPaths = @("$env:APPDATA", "$env:LOCALAPPDATA", "$env:TEMP", "$env:ProgramData", "$env:USERPROFILE\Downloads")
foreach ($p in $searchPaths) {
    Get-ChildItem -Path $p -Recurse -File -Depth 3 | ForEach-Object {
        $h = (Get-FileHash $_.FullName -Algorithm SHA256).Hash.ToLower()
        if ($k2fHashes -contains $h) {
            $report += [pscustomobject]@{Finding='K2F_HASH_MATCH'; Path=$_.FullName; Detail=$h}
        }
    }
}

# 2. Active connections to K2F C2
$c2 = @('89.126.250.172','89.127.233.127')
Get-NetTCPConnection | Where-Object { $c2 -contains $_.RemoteAddress } | ForEach-Object {
    $proc = Get-Process -Id $_.OwningProcess
    $report += [pscustomobject]@{Finding='C2_CONNECTION'; Path=$proc.Path; Detail="$($_.RemoteAddress):$($_.RemotePort) [$($proc.Name)]"}
}

# 3. DNS cache check for C2 / phishing domains
Get-DnsClientCache | Where-Object { $_.Entry -match 'insightjs|cyberleek|gta6|53primaryset|authorize-valley|commercial-atfirst|protect-pinnaclefp' } | ForEach-Object {
    $report += [pscustomobject]@{Finding='DNS_CACHE_HIT'; Path='DNSCache'; Detail=$_.Entry}
}

# 4. Persistence artifacts created during compromise window (2026-09-27 to 2026-11-04)
$winStart = Get-Date '2026-09-27'; $winEnd = Get-Date '2026-11-05'
$runKeys = @('HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run',
             'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run',
             'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce',
             'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce')
foreach ($rk in $runKeys) {
    Get-ItemProperty -Path $rk | ForEach-Object {
        $_.PSObject.Properties | Where-Object { $_.Name -notmatch '^PS' } | ForEach-Object {
            $report += [pscustomobject]@{Finding='RUN_KEY'; Path=$rk; Detail="$($_.Name) = $($_.Value)"}
        }
    }
}
Get-ScheduledTask | Where-Object { $_.Date -ge $winStart -and $_.Date -le $winEnd } | ForEach-Object {
    $report += [pscustomobject]@{Finding='SCHED_TASK_WINDOW'; Path=$_.TaskPath; Detail="$($_.TaskName) created $($_.Date)"}
}

# 5. NIKKE launcher presence check
$launcher = Get-ChildItem -Path "$env:ProgramFiles","${env:ProgramFiles(x86)}","$env:LOCALAPPDATA\Programs" -Recurse -Filter '*.exe' -Depth 3 | Where-Object { $_.Name -match 'nikke|launcher' }
foreach ($l in $launcher) {
    $report += [pscustomobject]@{Finding='LAUNCHER_PRESENT'; Path=$l.FullName; Detail=$l.LastWriteTime}
}

$report | Format-Table -AutoSize
$report | Export-Csv -Path ".\k2f_hunt_$(hostname)_$(Get-Date -Format yyyyMMdd).csv" -NoTypeInformation
Write-Host "[+] Hunt complete. $($report.Count) findings exported." -ForegroundColor Green

Response Priorities

Immediate (0-4 hours)

  • Block K2F C2 IPs (89.126.250.172, 89.127.233.127) and domains (analytics.insightjs.com, insightjs.org) at egress firewall, proxy, and DNS.
  • Block all listed GTA VI and bank-phishing domains; add NRD + brand-keyword alerting for new registrations.
  • Identify endpoints with the NIKKE PC launcher installed; treat any that launched between 2026-09-27 and 2026-11-04 as potentially compromised and isolate pending triage.
  • Retro-hunt proxy, DNS, and NetFlow logs for C2 contact across the full compromise window.

24 Hours

  • Because K2F steals browser credentials, crypto wallets, and cloud tokens: force password resets and session revocation for all users on affected endpoints — including personal accounts accessed via corporate browsers.
  • Rotate any AWS keys, cloud CLI tokens, or service-account credentials stored on or accessible from impacted hosts; review CloudTrail for GetCallerIdentity / ListFoundationModels from anomalous source IPs (KMON_NOC-style validation).
  • Revoke active browser sessions (cookies are stolen, not just passwords) — invalidate tokens at the IdP, not just password reset.
  • Sweep the fleet with the K2F hash set and the hunt script above.

1 Week

  • Establish policy for gaming software on corporate assets; if permitted, isolate in a sandboxed/VDI context with no access to credential stores or cloud CLI profiles.
  • Deploy the Sigma rules and KQL queries above into production detection; add detection for non-browser processes accessing browser credential stores as a durable infostealer control.
  • Harden cloud posture: enforce short-lived credentials (SSO/Identity Center over long-lived IAM keys), alert on Bedrock API calls from new principals, and apply SCPs restricting model invocation where not required.
  • Brief service-desk and finance staff on the bank-phishing cloaking technique — a "suspended" page on a banking URL is itself an indicator of a compromised look-alike domain.

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.