Threat Summary
A newly documented AlienVault OTX pulse (TLP:WHITE) exposes a significant evolution in low-sophistication cybercrime: the Russian-speaking threat actor tracked as bandcampro leveraged Google Gemini CLI to architect, code, deploy, and debug a fully functional command-and-control botnet in approximately six minutes — with the AI model handling an estimated 89% of all operational labor.
Analysis of roughly 200 Gemini CLI session logs spanning March–April 2026 revealed that the actor successfully established control over eight workstations inside a dental clinic, gaining access to OpenDental databases — a high-value target containing protected health information (PHI), patient records, and billing data. The campaign, dubbed 'Patriot Bait' by researchers, blends several revenue and access streams:
- Cryptocurrency fraud operations layered on top of compromised infrastructure
- WordPress site compromise used as staging and lure infrastructure
- Botnet operations with a lightweight C2 framework built almost entirely by AI code generation
- Targeting concentrated in the United States and Canada, with Healthcare as the confirmed vertical
The strategic significance of this pulse is not the botnet itself — it is the collapse of the skill floor. An actor with minimal development capability used a publicly available AI CLI assistant to compress what would traditionally take days of development and debugging into a single working session. This pattern — AI-assisted infrastructure-as-a-service for low-skill actors — will replicate across the criminal ecosystem and should be treated as a preview of the 2026–2027 threat landscape, not an anomaly.
Threat Actor / Malware Profile
Adversary: bandcampro
| Attribute | Detail |
|---|---|
| Attribution | Russian-speaking financially motivated actor |
| Campaign Name | Patriot Bait |
| Tooling | Google Gemini CLI (AI-assisted development), custom C2 botnet |
| Confirmed Victimology | Dental clinic (8 endpoints), OpenDental database access |
| Geography | United States, Canada |
| Sector | Healthcare |
| Monetization | Cryptocurrency fraud, botnet resale/rental potential |
Attack Chain Reconstruction
Based on session-log analysis, the operational flow was:
- Access Vector — Compromise of WordPress-based web properties and/or exposed clinic infrastructure provides the initial beachhead. WordPress compromise tags suggest vulnerable plugins or credential-stuffed admin panels were used for staging.
- AI-Assisted Build — The actor used Gemini CLI sessions to generate botnet architecture: agent code, C2 listener logic, deployment scripts, and error handling. The AI debugged compilation and runtime failures in real time, eliminating the traditional development bottleneck.
- Deployment & Migration — The C2 infrastructure was migrated and operationalized within a six-minute window, indicating scripted, repeatable deployment (likely via infrastructure automation also generated by the AI assistant).
- Endpoint Control — Eight dental clinic machines were enrolled as bots, with the actor browsing and accessing OpenDental databases — indicating interactive, hands-on-keyboard access rather than purely automated collection.
- Monetization — Cryptocurrency fraud operations ran in parallel with access maintenance.
Payload & C2 Characteristics
- Distribution: AI-generated deployment scripts; staging via compromised WordPress infrastructure
- C2 Communication: Outbound beaconing to actor-controlled domains — the pulse identifies tralalarkefe.com as C2 infrastructure. Expect HTTP/HTTPS polling with lightweight tasking.
- Persistence: AI-generated persistence routines typically default to common mechanisms — Run keys, scheduled tasks, or service installation. Hunt broadly across all three.
- Anti-Analysis: Minimal traditional obfuscation is expected (the actor's skill ceiling is low), but AI-generated code produces novel, low-prevalence binaries that evade hash-based and signature detection. Behavioral detection is mandatory.
IOC Analysis
The pulse contains one confirmed indicator:
| Type | Indicator | Role |
|---|---|---|
| Domain | tralalarkefe.com | C2 domain for the bandcampro botnet |
Operationalization Guidance
A single confirmed domain is the floor, not the ceiling. The actor's AI-assisted workflow means infrastructure can be regenerated faster than IOC lists can be published. SOC teams should:
- Block at the resolver: Add
tralalarkefe.comto DNS sinkhole/blocklists (Pi-hole, Umbrella, Zscaler, or internal DNS RPZ). Also block at egress proxy and EDR network layers. - Pivot on infrastructure: Resolve passive DNS history for
tralalarkefe.com; identify co-hosted domains on the same ASN/registrar — AI-assisted operators frequently register domains in batches with identical WHOIS patterns. - Hunt DNS telemetry: Query historical DNS logs for resolution attempts — even failed lookups indicate infection attempts.
- Tooling: Use VirusTotal, OTX, urlscan.io, and SecurityTrails for passive DNS pivoting. Decode any observed beacon payloads with CyberChef (Base64/XOR are common in AI-generated agent code).
- Watch for Gemini CLI artifacts: Legitimate developer use of AI CLI tools is growing, but
geminiCLI execution on clinical/endpoint systems with no developer function is itself an anomaly worth alerting on.
Detection Engineering
---
title: BandCamPro C2 Communication - Tralalarkefe Domain
description: Detects DNS resolution or network connection to the bandcampro 'Patriot Bait' botnet C2 domain identified in AlienVault OTX pulse analysis
author: Security Arsenal Threat Intelligence
status: experimental
logsource:
category: dns
product: windows
detection:
selection:
QueryName|contains:
- 'tralalarkefe.com'
condition: selection
falsepositives:
- Threat hunting or sandbox detonation of this briefing's IOCs
level: critical
tags:
- attack.command_and_control
- attack.t1071
date: 2026/08/15
---
title: Suspicious Gemini CLI Execution on Non-Developer Endpoint
description: Detects execution of Google Gemini CLI tooling on endpoints, associated with AI-assisted malware development by the bandcampro threat actor
author: Security Arsenal Threat Intelligence
status: experimental
logsource:
category: process_creation
product: windows
detection:
selection_image:
Image|endswith:
- '\gemini.exe'
- '\node.exe'
selection_cmdline:
CommandLine|contains:
- 'gemini'
- 'gemini-cli'
filter_approved_paths:
Image|startswith:
- 'C:\Program Files\Google\'
condition: (selection_image and selection_cmdline) and not filter_approved_paths
falsepositives:
- Legitimate developer workstations using Gemini CLI for sanctioned work
level: high
tags:
- attack.execution
- attack.t1059
date: 2026/08/15
---
title: Persistence Artifact Creation Followed by Rare Outbound Connection
description: Detects Run key or scheduled task persistence creation patterns consistent with AI-generated botnet agent installation observed in the Patriot Bait campaign
author: Security Arsenal Threat Intelligence
status: experimental
logsource:
category: registry_set
product: windows
detection:
selection:
TargetObject|contains:
- '\CurrentVersion\Run\'
- '\CurrentVersion\RunOnce\'
Details|contains:
- 'AppData'
- 'Temp'
- 'Public'
condition: selection
falsepositives:
- Legitimate user-space software installers registering auto-start entries
level: medium
tags:
- attack.persistence
- attack.t1060
- attack.t1547.001
date: 2026/08/15
// BandCamPro 'Patriot Bait' Hunt — C2 resolution, Gemini CLI abuse, and persistence correlation
// Microsoft Sentinel / Microsoft Defender XDR
let C2Domains = dynamic(["tralalarkefe.com"]);
let Lookback = 30d;
let DnsHits = DeviceNetworkEvents
| where TimeGenerated > ago(Lookback)
| where RemoteUrl has_any (C2Domains)
| project DnsTime=TimeGenerated, DeviceName, DnsRemoteUrl=RemoteUrl, RemoteIP, InitiatingProcessFileName, InitiatingProcessCommandLine, ReportId;
let GeminiExec = DeviceProcessEvents
| where TimeGenerated > ago(Lookback)
| where ProcessCommandLine has_any ("gemini", "gemini-cli") or FileName =~ "gemini.exe"
| project GeminiTime=TimeGenerated, DeviceName, FileName, ProcessCommandLine, InitiatingProcessAccountName;
let Persistence = DeviceRegistryEvents
| where TimeGenerated > ago(Lookback)
| where RegistryKey has_any (@"\CurrentVersion\Run", @"\CurrentVersion\RunOnce")
| where RegistryValueData has_any ("AppData", "Temp", "Public")
| project PersistTime=TimeGenerated, DeviceName, RegistryKey, RegistryValueName, RegistryValueData, InitiatingProcessFileName;
DnsHits
| join kind=leftouter (GeminiExec) on DeviceName
| join kind=leftouter (Persistence) on DeviceName
| project DeviceName, DnsTime, DnsRemoteUrl, RemoteIP, InitiatingProcessFileName, InitiatingProcessCommandLine,
GeminiTime, ProcessCommandLine, PersistTime, RegistryKey, RegistryValueData
| sort by DeviceName asc, DnsTime desc
# BandCamPro 'Patriot Bait' IOC Hunt Script
# Checks for C2 connections, persistence artifacts, and Gemini CLI presence
# Run elevated on suspected endpoints; export results per host
$Report = @()
$C2Domain = "tralalarkefe.com"
Write-Host "[1/5] Checking DNS cache for C2 resolution..." -ForegroundColor Cyan
$DnsHits = Get-DnsClientCache | Where-Object { $_.Entry -like "*$C2Domain*" }
if ($DnsHits) {
$Report += [PSCustomObject]@{ Check="DNS Cache"; Finding="C2 domain resolved"; Detail=($DnsHits.Entry -join ', ') }
}
Write-Host "[2/5] Checking active network connections..." -ForegroundColor Cyan
$Connections = Get-NetTCPConnection | Where-Object { $_.State -eq 'Established' } |
ForEach-Object {
$proc = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
[PSCustomObject]@{ LocalPort=$_.LocalPort; RemoteAddress=$_.RemoteAddress; RemotePort=$_.RemotePort; Process=$proc.ProcessName; Path=$proc.Path }
}
$SuspiciousConns = $Connections | Where-Object {
try { (Resolve-DnsName -Name $C2Domain -ErrorAction Stop).IPAddress -contains $_.RemoteAddress } catch { $false }
}
if ($SuspiciousConns) {
$Report += [PSCustomObject]@{ Check="Network"; Finding="Active connection to C2 IP"; Detail=($SuspiciousConns | Out-String) }
}
Write-Host "[3/5] Auditing Run/RunOnce persistence keys..." -ForegroundColor Cyan
$RunKeys = @(
'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run',
'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce',
'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run',
'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce'
)
foreach ($key in $RunKeys) {
if (Test-Path $key) {
Get-ItemProperty -Path $key | Get-Member -MemberType NoteProperty | ForEach-Object {
$val = (Get-ItemProperty -Path $key -Name $_.Name).$($_.Name)
if ($val -match 'AppData|Temp|Public' -and $val -notmatch 'Microsoft|OneDrive|Teams') {
$Report += [PSCustomObject]@{ Check="Persistence"; Finding="Suspicious Run key: $($_.Name)"; Detail="$key -> $val" }
}
}
}
}
Write-Host "[4/5] Checking scheduled tasks for user-space binaries..." -ForegroundColor Cyan
Get-ScheduledTask | ForEach-Object {
$action = $_.Actions.Execute
if ($action -match 'AppData|Temp|Public' -and $action -notmatch 'Microsoft') {
$Report += [PSCustomObject]@{ Check="ScheduledTask"; Finding="Suspicious task: $($_.TaskName)"; Detail=$action }
}
}
Write-Host "[5/5] Checking for Gemini CLI artifacts..." -ForegroundColor Cyan
$GeminiPaths = @("$env:LOCALAPPDATA\gemini", "$env:USERPROFILE\.gemini", "$env:APPDATA\npm\gemini*")
foreach ($p in $GeminiPaths) {
if (Test-Path $p) {
$Report += [PSCustomObject]@{ Check="GeminiCLI"; Finding="Gemini CLI artifact present"; Detail=$p }
}
}
if ($Report.Count -gt 0) {
$Report | Format-Table -AutoSize
$Report | Export-Csv -Path ".\BandCamPro_Hunt_$env:COMPUTERNAME.csv" -NoTypeInformation
Write-Host "[!] Findings exported to BandCamPro_Hunt_$env:COMPUTERNAME.csv" -ForegroundColor Red
} else {
Write-Host "[+] No indicators found on this host." -ForegroundColor Green
}
Response Priorities
Immediate (0–4 hours)
- Block
tralalarkefe.comat DNS resolver, egress proxy, and EDR network layers; add to threat intel feeds - Query 30 days of DNS/proxy logs for resolution of the C2 domain — any hit is a confirmed compromise, not a false positive candidate
- Run the KQL hunt across the fleet; isolate any endpoint with DNS hits and persistence artifacts
- Audit internet-facing WordPress properties for vulnerable plugins, weak admin credentials, and unauthorized file modifications — this is the likely staging vector
24 Hours
- Healthcare organizations: treat any confirmed infection as a potential PHI breach — the actor demonstrably accessed OpenDental databases. Engage legal/compliance for HIPAA breach-notification assessment
- Force credential resets for any user on compromised endpoints, prioritizing accounts with access to patient records, EHR systems, and financial data
- Review authentication logs for lateral movement from compromised hosts; the actor operated interactively, so expect RDP/SMB artifacts
- Inventory Gemini CLI (and other AI coding assistants) execution across endpoints — establish a sanctioned-use baseline
1 Week
- Implement application allowlisting for clinical workstations — dental/medical front-office machines have no legitimate need for arbitrary script interpreters or AI CLI tools
- Deploy egress filtering rules blocking outbound traffic to newly registered/unclassified domains for non-browser processes
- Harden WordPress perimeter: enforce MFA on admin panels, deploy WAF rules, and automate plugin patching
- Build detections for the pattern, not the IOC: AI-assisted actors regenerate domains weekly. Behavioral rules for persistence-plus-beaconing sequences will outlive any indicator list
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.