Back to Intelligence

Black October Campaign: AI Platform Credential Theft & LLMjacking — OTX Detection Engineering Pack

SA
Security Arsenal Team
November 3, 2026
9 min read

Throughout October 2026, threat actors executed a coordinated campaign against AI developer infrastructure, successfully breaching at least nine platforms: Fireworks AI, Andromeda, Zeabur, Lightning AI, OpenCode, Railway, Warp, CommandCode, and Northflank. AlienVault OTX Pulse Black October for AI Developer Platforms tracks this activity cluster, which represents a significant evolution in monetization strategy: attackers are no longer just selling raw credentials — they are operating as LLM brokers, reselling stolen API access and abusing AI model inference for downstream criminal operations.

Threat Summary

This campaign demonstrates a mature attack chain targeting the AI development supply chain. Adversaries exploited platform-specific vulnerabilities to access stored environment variables containing AI service credentials — API keys for OpenAI, Anthropic, Azure OpenAI, and other LLM providers. Unlike traditional infostealers that target endpoint browsers, this operation focused on cloud development environments where developers centralize secrets.

The attack chain follows a consistent pattern:

  1. Initial Access: Exploitation of platform vulnerabilities (details vary by target — SSRF, container escape, exposed management interfaces)
  2. Credential Harvesting: Systematic enumeration of environment variables across customer deployments
  3. Exfiltration: Credentials staged to attacker-controlled infrastructure including the identified C2 nodes
  4. Monetization: Stolen access sold on dark web markets or used directly for LLMjacking — unauthorized AI model inference for phishing content generation, malware authoring, or API resale

The nine affected platforms share a common architectural pattern: they provide hosted development environments where users deploy AI agents and applications. This centralization creates high-value targets — a single platform compromise yields thousands of valid, high-privilege API keys.

Threat Actor / Malware Profile

Attribution: Unknown — no established APT group has claimed responsibility. The operational tempo and targeting suggest a financially motivated criminal collective rather than nation-state actors.

Distribution Method: Varies by platform. Observed vectors include:

  • SSRF vulnerabilities in container orchestration layers
  • Compromised CI/CD pipeline tokens enabling lateral movement
  • Exposed Kubernetes API servers with insufficient authentication
  • Supply chain compromise of popular AI agent frameworks

Payload Behavior: Post-exploitation focused on secrets enumeration:

  • Mass querying of environment variables across customer namespaces
  • Targeted extraction of files matching patterns: .env, config.json, credentials.json
  • Enumeration of cloud metadata services (169.254.169.254) for temporary credentials
  • Git repository scanning for hardcoded secrets in recent commits

C2 Communication: Infrastructure identified in this pulse uses standard HTTPS with distinctive patterns:

  • artex.nhhh.de — German-hosted VPS, likely used for credential staging
  • direct.465415.xyz — bulletproof hosting provider, active exfiltration endpoint
  • IPv4 addresses 31.57.201.201 and 38.246.114.118 show patterns consistent with commercial VPN exit nodes repurposed for C2

Persistence Mechanism: Not fully documented in current pulse data. Likely involves:

  • Cron job installation in compromised containers
  • Web shell deployment in platform management interfaces
  • Stolen service account tokens with extended validity periods

Anti-Analysis Techniques:

  • Use of legitimate cloud providers for C2 blending
  • Encrypted credential bundles preventing static analysis
  • Time-delayed exfiltration to avoid burst detection

IOC Analysis

This pulse provides network indicators suitable for immediate blocking and historical hunting:

IndicatorTypeAssessment
31.57.201.201IPv4High-confidence C2. Block at perimeter, hunt historical connections
38.246.114.118IPv4High-confidence C2. Associated with credential exfiltration
artex.nhhh.deHostnameStaging server. Query DNS logs for resolution
direct.465415.xyzHostnameExfiltration endpoint. TLD pattern suggests disposable infrastructure

SOC Operationalization Guidance:

  • Network blocking: Add all indicators to firewall deny lists, DNS sinkholes, and proxy blocks. The .xyz TLD and German hosting provider should trigger additional scrutiny for similar patterns.
  • Historical hunting: Query 90 days of DNS, proxy, and NetFlow data for connections to these indicators. Any hit indicates potential credential compromise requiring immediate rotation.
  • Tooling: These are standard network indicators ingestible by all major SIEMs. For decoding, use dig or nslookup for DNS resolution history, and Shodan/Censys for passive reconnaissance on the IP infrastructure.

Detection Engineering

YAML
---
title: AI Platform Credential Theft - Environment Variable Access
id: 8a7b3c9d-2e4f-4a1b-9c8d-3f5e6a7b8c9d
status: experimental
description: Detects suspicious enumeration of environment variables commonly targeted in AI platform breaches
author: Security Arsenal Threat Intelligence
date: 2026/11/04
references:
    - https://otx.alienvault.com/pulse/ Black October for AI Developer Platforms
logsource:
    category: process_creation
    product: windows
detection:
    selection:
        CommandLine|contains:
            - 'env | grep -i key'
            - 'env | grep -i secret'
            - 'env | grep -i token'
            - 'printenv | grep -i api'
            - 'Get-ChildItem Env:'
            - 'gci env:'
            - 'ls env:'
            - '[Environment]::GetEnvironmentVariables'
    condition: selection
falsepositives:
    - Legitimate system administration
    - Developer debugging activities
level: medium
tags:
    - attack.credential_access
    - attack.t1552.001
---
title: LLMjacking C2 Communication - Known Bad Infrastructure
id: 9b8c4d5e-3f5a-4b2c-0d9e-4a6f7b8c9d0e
status: experimental
description: Detects network connections to infrastructure associated with Black October AI platform breaches
author: Security Arsenal Threat Intelligence
date: 2026/11/04
references:
    - https://otx.alienvault.com/pulse/ Black October for AI Developer Platforms
logsource:
    category: network_connection
    product: windows
detection:
    selection_ip:
        DestinationIp:
            - '31.57.201.201'
            - '38.246.114.118'
    selection_dns:
        DestinationHostname:
            - 'artex.nhhh.de'
            - 'direct.465415.xyz'
    condition: selection_ip or selection_dns
falsepositives:
    - Unlikely - these are high-confidence malicious indicators
level: high
tags:
    - attack.command_and_control
    - attack.t1071.001
---
title: Suspicious AI Platform Config File Access
id: 0c9d5e6f-4a6b-4c3d-1e0f-5b7c8d9e0f1a
status: experimental
description: Detects mass access to configuration files containing AI service credentials
author: Security Arsenal Threat Intelligence
date: 2026/11/04
references:
    - https://otx.alienvault.com/pulse/ Black October for AI Developer Platforms
logsource:
    category: file_access
    product: windows
detection:
    selection:
        TargetFilename|contains:
            - '.env'
            - 'config.json'
            - 'credentials.json'
            - 'appsettings.json'
    filter_user:
        SubjectUserName|contains:
            - 'SYSTEM'
            - 'NETWORK SERVICE'
    condition: selection and not filter_user
falsepositives:
    - Legitimate application deployment
    - Configuration management tools
level: medium
tags:
    - attack.credential_access
    - attack.t1552.001
KQL — Microsoft Sentinel / Defender
// Black October Campaign - AI Platform Credential Theft Hunt
// Detects network connections to known C2 and suspicious process patterns

let C2_IPs = dynamic(["31.57.201.201", "38.246.114.118"]);
let C2_Domains = dynamic(["artex.nhhh.de", "direct.465415.xyz"]);

union isfuzzy=true
    (DeviceNetworkEvents
    | where TimeGenerated > ago(90d)
    | where RemoteIP in (C2_IPs) or RemoteUrl in (C2_Domains)
    | project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteIP, RemoteUrl, RemotePort
    | extend AlertType = "Network Connection to C2"),
    (DeviceProcessEvents
    | where TimeGenerated > ago(30d)
    | where ProcessCommandLine has_any ("env | grep", "printenv", "Get-ChildItem Env", "[Environment]::GetEnvironmentVariables")
    | where ProcessCommandLine has_any ("key", "secret", "token", "api", "password")
    | project TimeGenerated, DeviceName, FileName, ProcessCommandLine, AccountName
    | extend AlertType = "Suspicious Environment Enumeration"),
    (DeviceFileEvents
    | where TimeGenerated > ago(30d)
    | where FileName has_any (".env", "credentials.json", "config.json")
    | where FolderPath has_any ("app", "config", "deploy", "workspace")
    | project TimeGenerated, DeviceName, FileName, FolderPath, InitiatingProcessFileName, InitiatingProcessCommandLine
    | extend AlertType = "Credential File Access")
| sort by TimeGenerated desc
PowerShell
# Black October Campaign - IOC Hunt Script
# Run on endpoints and servers to check for compromise indicators

Write-Host "=== Black October AI Platform Breach IOC Hunt ===" -ForegroundColor Cyan
Write-Host "Checking for indicators from OTX Pulse: Black October for AI Developer Platforms`n" -ForegroundColor Yellow

$ErrorActionPreference = "SilentlyContinue"

# Check network connections to known C2
Write-Host "[*] Checking active network connections to known C2 infrastructure..." -ForegroundColor Green
$C2_IPs = @("31.57.201.201", "38.246.114.118")
$C2_Domains = @("artex.nhhh.de", "direct.465415.xyz")

$connections = Get-NetTCPConnection | Where-Object { $_.RemoteAddress -in $C2_IPs }
if ($connections) {
    Write-Host "[!] ALERT: Active connections to malicious IPs detected!" -ForegroundColor Red
    $connections | Format-Table LocalAddress, LocalPort, RemoteAddress, RemotePort, State, OwningProcess
    $connections | ForEach-Object {
        $proc = Get-Process -Id $_.OwningProcess
        Write-Host "    Process: $($proc.ProcessName) (PID: $($proc.Id)) - Path: $($proc.Path)" -ForegroundColor Red
    }
} else {
    Write-Host "[+] No active connections to known C2 IPs" -ForegroundColor Green
}

# Check DNS cache for malicious domains
Write-Host "`n[*] Checking DNS cache for malicious domains..." -ForegroundColor Green
$dnsCache = Get-DnsClientCache | Where-Object { $_.Entry -in $C2_Domains -or $_.Name -in $C2_Domains }
if ($dnsCache) {
    Write-Host "[!] ALERT: Malicious domains found in DNS cache!" -ForegroundColor Red
    $dnsCache | Format-Table Entry, Name, Data, TimeToLive
} else {
    Write-Host "[+] No malicious domains in DNS cache" -ForegroundColor Green
}

# Check for suspicious environment variable access patterns in PowerShell history
Write-Host "`n[*] Checking PowerShell history for suspicious environment enumeration..." -ForegroundColor Green
$psHistory = Get-Content (Get-PSReadlineOption).HistorySavePath -ErrorAction SilentlyContinue | Select-String -Pattern "Get-ChildItem Env|gci env|ls env|Environment.*GetEnvironmentVariables" | Select-Object -Last 20
if ($psHistory) {
    Write-Host "[!] Suspicious environment access patterns in PowerShell history:" -ForegroundColor Yellow
    $psHistory | ForEach-Object { Write-Host "    $_" -ForegroundColor Yellow }
} else {
    Write-Host "[+] No suspicious patterns in PowerShell history" -ForegroundColor Green
}

# Check for credential files in common deployment directories
Write-Host "`n[*] Checking for exposed credential files..." -ForegroundColor Green
$deployPaths = @("C:\deploy", "C:\app", "C:\workspace", "C:\inetpub", "C:\home")
$credFiles = @("*.env", "credentials.json", "config.json", "appsettings*.json")

foreach ($path in $deployPaths) {
    if (Test-Path $path) {
        $found = Get-ChildItem -Path $path -Recurse -Include $credFiles -ErrorAction SilentlyContinue | Select-Object -First 10
        if ($found) {
            Write-Host "[!] Credential files found in $path :" -ForegroundColor Yellow
            $found | ForEach-Object { Write-Host "    $($_.FullName)" -ForegroundColor Yellow }
        }
    }
}

# Check scheduled tasks for persistence
Write-Host "`n[*] Checking scheduled tasks for suspicious entries..." -ForegroundColor Green
$tasks = Get-ScheduledTask | Where-Object { $_.TaskName -match "update|sync|check" -and $_.TaskPath -notlike "*Microsoft*" } | Select-Object -First 10
if ($tasks) {
    Write-Host "[*] Non-Microsoft scheduled tasks (review for anomalies):" -ForegroundColor Cyan
    $tasks | Format-Table TaskName, TaskPath, State
}

Write-Host "`n=== Hunt Complete ===" -ForegroundColor Cyan
Write-Host "If any alerts triggered, isolate the host and initiate credential rotation immediately." -ForegroundColor Yellow

Response Priorities

Immediate:

  • Block all four IOCs at network perimeter, DNS resolver, and endpoint protection platforms
  • Hunt 90 days of network telemetry for historical connections to 31.57.201.201, 38.246.114.118, artex.nhhh.de, and direct.465415.xyz
  • Inventory all AI service API keys in use across the organization; prepare for emergency rotation
  • Alert on any process accessing environment variables with patterns matching *key*, *secret*, *token*, *api*

24 Hours:

  • Rotate all AI provider API keys (OpenAI, Anthropic, Azure OpenAI, Google AI, AWS Bedrock) regardless of detected compromise — assume breach posture
  • Audit authentication logs for affected AI platforms for anomalous access patterns
  • Review CI/CD pipeline permissions; ensure service principals follow least privilege
  • Enable enhanced logging on all AI platform management consoles
  • Brief developers on phishing risks — attackers may leverage stolen platform branding for credential harvesting

1 Week:

  • Implement secrets management solution (HashiCorp Vault, AWS Secrets Manager, Azure Key Vault) to eliminate environment variable storage of credentials
  • Deploy workload identity federation where supported to eliminate long-lived API keys
  • Conduct architecture review of AI development platform usage; consider self-hosted alternatives with stronger isolation for sensitive workloads
  • Establish monitoring for LLMjacking indicators: unexpected model inference spikes, unusual prompt patterns, API usage from unexpected geographies or ASNs
  • Evaluate AI platform vendors based on security architecture: isolation between customer workloads, secrets handling practices, and breach notification SLAs

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.