Five concurrent pulses published to AlienVault OTX on 2026-10-22 paint a coherent picture: credential theft is the dominant adversary objective this cycle, and attackers are achieving it through three distinct, converging vectors.
Vector 1 — Edge device exploitation (k0t / AdaptixC2). Group-IB and NyxLab attributed a large-scale campaign to threat actor k0t, an initial access broker exploiting FortiGate, FortiWeb (CVE-2025-64446), and Palo Alto GlobalProtect (CVE-2026-0257) appliances. The actor brute-forces edge services with custom tooling, plants AdaptixC2 beacons, and uses MeshCentral (meshcentral.girydsfsggvb.com) for legitimate-tool remote access persistence. Over 70,000 exposed credentials were recovered — these are already circulating in criminal markets and will be resold to ransomware affiliates. The presence of CVE-2021-42278/42287 (AD sAMAccountName spoofing/Kerberos) and CVE-2019-6693 (FortiGate config decryption) indicators shows the pivot path: edge access → credential dump → domain escalation.
Vector 2 — Supply chain infostealer (LiteLLM / privcollect). On 2026-10-21, attackers used stolen GitHub CLI OAuth tokens from three engineers to publish malicious LiteLLM 1.107.0 (≈23M weekly downloads) to PyPI and official Docker images for roughly two hours. The payload — tracked by Socket as privcollect — abuses Python startup files (sitecustomize/.pth-style auto-execution) to harvest cloud credentials (AWS/Azure/GCP), SSH private keys, browser stores, and AI-tooling auth tokens, beaconing to litellm.dev infrastructure. Socket's scanner caught it in seven minutes; most enterprises were not so lucky. Any developer machine, CI runner, or container that initialized LiteLLM 1.107.0 in the exposure window must be treated as credential-compromised.
Vector 3 — ClickFix social engineering (Doina → Lumma/NetSupport). A sponsored Google result for "amazon business" redirected victims to a spoofed Amazon login page on Google Sites. A fake CAPTCHA (ClickFix) coerced users into running a malicious command via Windows' obsolete finger.exe LOLBin, launching a chain that delivers Doina loader, Lumma Stealer, and NetSupport RAT.
Vector 4 — Mass WordPress/CMS exploitation (Red Heron). A UTC+8, suspected Chinese-speaking actor linked to Red Heron ran May–September 2026 exploitation of WordPress, ZyXEL, and enterprise platforms, exfiltrating 18,000+ government records — including via CVE-2022-0847 (Dirty Pipe) for privilege escalation.
Collective objective: bulk credential and identity-material acquisition — edge device creds, cloud/AI tokens, browser/session data, and government records — feeding initial-access markets and downstream espionage. Assume harvested credentials are already for sale or in use.
Threat Actor / Malware Profile
k0t (Initial Access Broker) — AdaptixC2
- Distribution: Exploitation of internet-facing FortiGate/FortiWeb/Palo Alto GlobalProtect; custom brute-force tooling against VPN portals.
- Payload behavior: AdaptixC2 beacon deployment post-exploitation; credential extraction from device configs and memory; staging for resale to ransomware operators.
- C2: AdaptixC2 teamserver infrastructure (62.60.131.43, 193.149.187.81); TLS beacons with configurable malleable profiles.
- Persistence: Rogue accounts on edge devices, MeshCentral agent (legitimate RMM) at meshcentral.girydsfsggvb.com — blending into admin traffic.
- Anti-analysis: Living-off-the-land via RMM tooling; exploitation of deserialization/auth-bypass CVEs requiring no dropped malware on the appliance itself.
privcollect (LiteLLM supply chain payload)
- Distribution: Trojanized PyPI wheel and Docker Hub images (litellm==1.107.0), two-hour exposure window.
- Payload behavior: Python startup hooks execute on interpreter initialization — no user import required. Scrapes
~/.aws/credentials,~/.azure,~/.config/gcloud,~/.ssh, browser Login Data/Cookies, and LLM API keys (OpenAI, Anthropic, etc.) from environment and dotfiles. - C2: HTTPS exfil to
litellm.dev(including a/healthchecklure endpoint). - Persistence: Startup-file implant survives until package downgrade; container images remain poisoned if pinned.
- Anti-analysis: Malicious code gated behind Python-init execution to evade static package scanning; short publication window limits sample collection.
Doina → Lumma Stealer / NetSupport
- Distribution: Malvertising (sponsored Google result) → spoofed Amazon page on Google Sites → ClickFix fake CAPTCHA.
- Payload behavior: User is tricked into pasting a command that abuses finger.exe to retrieve staged payloads; Doina loader pulls Lumma Stealer (browser creds, crypto wallets, cookies, 2FA tokens) and NetSupport Client for hands-on access.
- C2: Rotating consumer-brand domains (grillmasterchef.com, grillrecipespro.com, ashevilleroofingcontractor.com) over 167.148.201.106.
- Persistence: NetSupport RAT service/Run key installation; Lumma exfiltrates and typically does not persist.
- Anti-analysis: ClickFix shifts execution to the user (bypassing email/web gateways); finger.exe is a signed Microsoft binary that many allowlists ignore.
Red Heron (WordPress/CMS exploitation)
- Distribution: Mass scanning/exploitation from a single static IP (104.225.153.141) against WordPress plugins/themes, ZyXEL switches, and enterprise platforms; CVE-2026-34908/34909/34910, CVE-2026-60137, CVE-2026-63030, CVE-2026-7273, CVE-2022-0847.
- Persistence: Webshells on compromised CMS hosts; cron/systemd implants post-Dirty Pipe escalation.
IOC Analysis
Indicator composition across the five pulses:
- CVEs (most numerous): Treat as exposure indicators, not blocklist entries. Operationalize by cross-referencing your asset inventory: FortiWeb CVE-2025-64446, GlobalProtect CVE-2026-0257, FortiGate CVE-2019-6693, AD CVE-2021-42278/42287, Linux CVE-2022-0847, and the WordPress CVE cluster. Any internet-facing match = emergency patch + retro-hunt.
- IPv4 (C2 / attacker infrastructure): 62.60.131.43, 193.149.187.81 (AdaptixC2/MeshCentral staging), 167.148.201.106 (Lumma chain), 104.225.153.141 (Red Heron scanner). Push to firewall/proxy/EDR network blocklists with 90-day TTL; hunt retroactively 180 days for the Red Heron IP given the May–Sept campaign window.
- Domains/hostnames: litellm.dev (including the healthcheck URL), meshcentral.girydsfsggvb.com, grillmasterchef.com, grillrecipespro.com, ashevilleroofingcontractor.com. DNS-sinkhole and alert on any resolution — the MeshCentral hostname is especially high-fidelity since legitimate MeshCentral would use your own domain.
- File hashes (SHA256/MD5/SHA1): LiteLLM malicious wheel artifacts and Lumma/Doina payloads. Load into EDR blocklists and run retroactive file-creation hunts. For LiteLLM, hashes are per-build — also hunt by package version rather than hash alone.
Tooling: Decode/detotate URLs with CyberChef; pivot on IPs/ASNs via GreyNoise (104.225.153.141 is documented GreyNoise-sourced) and AbuseIPDB; detonate hashes in ANY.RUN/Hybrid Analysis; query all indicators in bulk via the OTX DirectConnect API or MISP sync. Feed everything into your TI platform with pulse-level tagging for attribution tracking.
Detection Engineering
---
title: ClickFix Finger.exe LOLBin Payload Retrieval
id: 3f7a1c2e-9b4d-4e1a-a5c8-2d6f0e9b1a11
status: experimental
description: Detects abuse of Windows finger.exe as a living-off-the-land download cradle, as seen in the Amazon-themed ClickFix campaign delivering Doina loader and Lumma Stealer.
author: Security Arsenal
references:
- https://www.huntress.com/blog/amazon-clickfix-finger
date: 2026/10/22
logsource:
category: process_creation
product: windows
detection:
selection_img:
Image|endswith: '\finger.exe'
selection_args:
CommandLine|contains:
- '@'
- '|'
- 'http'
- 'cmd'
- 'powershell'
filter_legit:
CommandLine|contains: 'finger.exe -l'
condition: selection_img and selection_args and not filter_legit
falsepositives:
- Legacy network diagnostics (extremely rare on modern endpoints)
level: high
tags:
- attack.defense_evasion
- attack.t1218
- attack.t1105
---
title: AdaptixC2 or Rogue MeshCentral RMM Network Beacon
id: 8a2d4f61-7c3b-4d92-b1e6-5f0a3c8d2e44
status: experimental
description: Detects outbound connections to known k0t AdaptixC2 teamservers and the rogue MeshCentral instance used for persistent access after FortiGate/FortiWeb/GlobalProtect compromise.
author: Security Arsenal
references:
- https://www.group-ib.com/blog/stray-cat-network-edge/
date: 2026/10/22
logsource:
category: network_connection
product: windows
detection:
selection_ip:
DestinationIp:
- '62.60.131.43'
- '193.149.187.81'
- '167.148.201.106'
- '104.225.153.141'
selection_dns:
DestinationHostname|contains:
- 'meshcentral.girydsfsggvb.com'
- 'litellm.dev'
- 'grillmasterchef.com'
- 'grillrecipespro.com'
- 'ashevilleroofingcontractor.com'
condition: 1 of selection_*
falsepositives:
- Unlikely; these are high-fidelity campaign indicators
level: critical
tags:
- attack.command_and_control
- attack.t1071
- attack.t1219
---
title: Trojanized LiteLLM privcollect Credential Access
id: c41e9a07-2b8f-4d63-9a1c-6e5d8f0b3a77
status: experimental
description: Detects Python interpreter processes accessing cloud credential stores, SSH keys, or browser credential databases consistent with the privcollect payload in compromised LiteLLM 1.107.0.
author: Security Arsenal
references:
- https://socket.dev/blog/litellm-compromise
- https://securitylabs.datadoghq.com/articles/litellm-compromised-pypi-docker
date: 2026/10/22
logsource:
category: file_event
product: windows
detection:
selection_proc:
Image|endswith:
- '\python.exe'
- '\pythonw.exe'
- '\python3.exe'
selection_target:
TargetFilename|contains:
- '\.aws\credentials'
- '\.ssh\id_'
- '\.azure\'
- '\gcloud\credentials'
- 'Login Data'
- '\Cookies'
- 'Web Data'
condition: selection_proc and selection_target
falsepositives:
- Legitimate cloud SDK developer workflows; baseline by developer host groups and investigate outliers
level: high
tags:
- attack.credential_access
- attack.t1552
- attack.t1555
// Hunt: LiteLLM supply-chain compromise artifacts + k0t/ClickFix C2 beacons (last 14 days)
let C2Ips = dynamic(["62.60.131.43", "193.149.187.81", "167.148.201.106", "104.225.153.141"]);
let C2Domains = dynamic(["litellm.dev", "meshcentral.girydsfsggvb.com", "grillmasterchef.com", "grillrecipespro.com", "ashevilleroofingcontractor.com"]);
let NetworkHits = DeviceNetworkEvents
| where TimeGenerated > ago(14d)
| where RemoteIP in (C2Ips) or RemoteUrl has_any (C2Domains)
| project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteIP, RemoteUrl, ActionType;
let FingerAbuse = DeviceProcessEvents
| where TimeGenerated > ago(14d)
| where FileName =~ "finger.exe"
| where ProcessCommandLine has_any ("@", "http", "|", "cmd", "powershell")
| project TimeGenerated, DeviceName, AccountName, ProcessCommandLine, InitiatingProcessFileName;
let CredAccess = DeviceFileEvents
| where TimeGenerated > ago(14d)
| where InitiatingProcessFileName startswith "python"
| where FolderPath has_any (".aws\\credentials", ".ssh\\id_", "Login Data", "\\Cookies", "Web Data", ".azure", "gcloud")
| project TimeGenerated, DeviceName, InitiatingProcessCommandLine, FolderPath, SHA256;
union NetworkHits, FingerAbuse, CredAccess
| sort by TimeGenerated desc
# Security Arsenal - OTX Pulse IOC Hunt (2026-10-22)
# Checks: LiteLLM malicious version, MeshCentral rogue agent, NetSupport persistence,
# Lumma artifacts, and connections to campaign C2 infrastructure.
$ErrorActionPreference = 'SilentlyContinue'
$findings = @()
# 1) LiteLLM 1.107.0 (privcollect) installed anywhere on the system
$pipPaths = @("$env:LOCALAPPDATA\Programs\Python", "C:\Python*", "$env:USERPROFILE\AppData\Roaming\Python")
foreach ($p in $pipPaths) {
Get-ChildItem -Path $p -Recurse -Filter "litellm-1.107.0*" -Directory -ErrorAction SilentlyContinue | ForEach-Object {
$findings += "[CRITICAL] Trojanized LiteLLM 1.107.0 found: $($_.FullName)"
}
}
$pipShow = (pip show litellm 2>$null) | Select-String "Version: 1.107.0"
if ($pipShow) { $findings += "[CRITICAL] Active pip environment has litellm==1.107.0 - rotate ALL credentials on this host" }
# 2) Rogue MeshCentral agent / unexpected RMM persistence
Get-Service | Where-Object { $_.Name -match 'mesh|netsupport|client32' } | ForEach-Object {
$findings += "[HIGH] Suspicious RMM service: $($_.Name) - $($_.DisplayName)"
}
$runKeys = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run','HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run'
foreach ($rk in $runKeys) {
(Get-ItemProperty $rk).PSObject.Properties | Where-Object { $_.Value -match 'meshagent|netsupport|client32|finger' } | ForEach-Object {
$findings += "[HIGH] Persistence Run key: $rk -> $($_.Name) = $($_.Value)"
}
}
# 3) Scheduled tasks referencing campaign LOLBin/payload names
Get-ScheduledTask | Where-Object { $_.TaskName -match 'mesh|finger|doina|lumma|update.*amazon' } | ForEach-Object {
$findings += "[HIGH] Suspicious scheduled task: $($_.TaskName)"
}
# 4) Live/recent connections to campaign C2
$c2 = @('62.60.131.43','193.149.187.81','167.148.201.106','104.225.153.141')
Get-NetTCPConnection | Where-Object { $c2 -contains $_.RemoteAddress } | ForEach-Object {
$proc = (Get-Process -Id $_.OwningProcess).ProcessName
$findings += "[CRITICAL] Active C2 connection: $($_.RemoteAddress):$($_.RemotePort) by $proc (PID $($_.OwningProcess))"
}
# 5) DNS cache evidence of campaign domains
Get-DnsClientCache | Where-Object { $_.Entry -match 'litellm\.dev|girydsfsggvb\.com|grillmasterchef|grillrecipespro|ashevilleroofingcontractor' } | ForEach-Object {
$findings += "[HIGH] DNS cache hit for campaign domain: $($_.Entry)"
}
if ($findings.Count -eq 0) { Write-Output "[CLEAN] No indicators from 2026-10-22 OTX pulses detected on $env:COMPUTERNAME" }
else { $findings | Sort-Object | ForEach-Object { Write-Output $_ } }
Response Priorities
Immediate (0–4 hours):
- Block all campaign IPs, domains, and file hashes at firewall, proxy, DNS, and EDR; sinkhole
litellm.devandmeshcentral.girydsfsggvb.com. - Inventory and isolate any host with
litellm==1.107.0installed (including CI runners, Docker builds, and developer laptops). Query your artifact registry and image scanner for poisoned container layers built on 2026-10-21. - Hunt for finger.exe execution and Run-key/service persistence per the detections above.
- Audit edge devices (FortiGate/FortiWeb/GlobalProtect) for rogue admin accounts, unexpected MeshCentral agents, and config changes; if unpatched against CVE-2025-64446 or CVE-2026-0257 and internet-exposed, assume breach.
24 hours:
- Rotate every credential that touched a LiteLLM 1.107.0 host: cloud IAM keys, SSH keys, LLM provider API tokens, browser-saved passwords, and session cookies. Revoke active sessions, not just passwords.
- Force password resets for any VPN/edge-device accounts; k0t's 70,000-credential haul means your org's VPN creds may already be for sale — check dark web credential markets and haveibeenpwned-style feeds for your domains.
- Enable/enforce phishing-resistant MFA (FIDO2) on VPN, cloud consoles, and GitHub; the LiteLLM compromise began with stolen OAuth tokens — review GitHub audit logs for anomalous
ghCLI token use and workflow dispatch events against forks. - Review WordPress/CMS estates for webshells and unpatched plugins given the Red Heron campaign; check for connections to 104.225.153.141 going back to May 2026.
1 week:
- Remove or restrict LOLBins: block finger.exe via WDAC/AppLocker; it has no legitimate role on modern endpoints.
- Harden the software supply chain: pin dependencies by hash, require Sigstore/provenance verification, gate PyPI/Docker pulls through an internal proxy with malware scanning, and alert on newly published package versions before broad deployment.
- Segment edge management interfaces off the internet; deploy device-posture checks on VPN login so stolen credentials alone are insufficient.
- Add ClickFix-style user simulation to security awareness training — teach users that no legitimate CAPTCHA ever asks them to press Win+R and paste a command.
- Subscribe your TI platform to the OTX pulses referenced here and operationalize continuous IOC sync with automated TTL-based expiry.
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.