Back to Intelligence

Fake ChatGPT and Claude Installers Delivering Yoba Malware: Detection and Remediation Guide for SOC Teams

SA
Security Arsenal Team
October 28, 2026
12 min read

Security researchers have identified an active malware distribution campaign in which attackers are hiding Yoba malware behind signed binaries masquerading as legitimate ChatGPT and Claude applications. The operation leverages fake projects — lookalike download pages, cloned repositories, and counterfeit installers — that trade on the enormous public trust in OpenAI's and Anthropic's brands to get users to execute the payload voluntarily.

This is not a vulnerability in ChatGPT or Claude themselves. It is a brand-abuse and software supply-chain-adjacent campaign, and it is dangerous precisely because it short-circuits the two controls many organizations rely on most: user trust in recognizable software, and code-signing checks that are supposed to separate legitimate binaries from malware. When a signed, professionally packaged "ChatGPT Desktop" or "Claude Setup" installer lands on a developer workstation, most endpoint controls wave it through.

If your environment allows users to self-install AI tooling — and in 2026, nearly every environment does — you are in scope for this threat. This post breaks down the attack chain, provides deployable detection content, and lays out a remediation plan.

Technical Analysis

How the Campaign Works

Based on the reported campaign, the attack chain follows a now-familiar trojanized-installer pattern, updated for the AI gold rush:

  1. Lure infrastructure: Attackers stand up fake projects impersonating ChatGPT and Claude — counterfeit download portals, SEO-poisoned or malvertising-promoted landing pages, and cloned open-source-style repositories offering "desktop clients," "offline installers," or "premium unlocked" builds of the AI assistants.
  2. Signed delivery vehicle: The malicious installers carry valid digital signatures, which defeats naive signature-based trust decisions and reduces friction with SmartScreen, Gatekeeper, and application allowlisting tools that treat "signed" as a proxy for "safe."
  3. Payload staging: On execution, the trojanized installer drops or downloads the Yoba malware payload. Staging frequently involves writing payloads to user-writable locations (%AppData%, %LocalAppData%, %Temp%) and establishing persistence so the implant survives reboot.
  4. Persistence and execution: Typical persistence mechanisms for this class of campaign include Run keys, scheduled tasks, and startup folder entries, often named to blend in with legitimate AI assistant updaters.

Affected Products and Platforms

  • Impersonated products: OpenAI ChatGPT and Anthropic Claude desktop/client installers.
  • Actual products affected: None — this is brand impersonation, not a flaw in OpenAI or Anthropic software. There is no CVE associated with this campaign; it is a social engineering and malware distribution operation.
  • Platforms: End-user and developer workstations (primarily Windows, where trojanized installer campaigns concentrate; macOS users are secondary targets of similar fake-AI-app lures).
  • At-risk populations: Developers, data scientists, and knowledge workers who download AI tooling outside of sanctioned channels; organizations without application control or software procurement governance.

Exploitation Status

This is a confirmed, actively observed in-the-wild campaign, not a theoretical threat. Fake AI assistant installers have been a top-tier lure category since 2024 and continue to scale in 2026 because the return on investment for attackers is excellent: the victim downloads, trusts, and executes the malware themselves, bypassing most perimeter controls entirely. The use of signed binaries raises the sophistication bar and specifically targets environments whose allowlisting logic trusts any signed executable.

Why Code Signing Did Not Save Anyone

Defenders must internalize this: a valid signature attests that a binary was signed by a keyholder — not that the keyholder is who you think they are. Attackers obtain certificates through shell companies, compromised publishers, and fraudulently passed validation checks. Detection logic that treats SignatureStatus == Valid as a clean bill of health will miss this campaign entirely. The correct control is publisher and signer identity validation — verifying the certificate subject is actually OpenAI or Anthropic — plus behavioral analytics on what the installer does after launch.

Detection & Response

This is a technical malware distribution threat, and the detections below target the observable behaviors that separate a legitimate ChatGPT/Claude installation from a trojanized one: suspicious download origins, installers executing from user-writable paths, fake AI-branded processes spawning script interpreters, and persistence masquerading as AI assistant updaters.

Sigma Rules

YAML
---
title: Fake ChatGPT or Claude Installer Execution from User-Writable Path
id: 8f2c1a94-3b7d-4e61-9c05-2a6d4f8b1e73
status: experimental
description: Detects execution of binaries named after ChatGPT or Claude installers from user-writable directories, consistent with trojanized AI assistant installers distributing Yoba malware. Legitimate desktop clients install to Program Files via official channels.
references:
  - https://www.infosecurity-magazine.com/news/attackers-hide-malware-behind/
  - https://attack.mitre.org/techniques/T1204/002/
author: Security Arsenal
date: 2026/04/06
tags:
  - attack.execution
  - attack.t1204.002
  - attack.defense_evasion
  - attack.t1036
logsource:
  category: process_creation
  product: windows
detection:
  selection_name:
    Image|contains:
      - 'chatgpt'
      - 'claude'
      - 'openai'
      - 'anthropic'
  selection_path:
    Image|contains:
      - '\Users\'
      - '\AppData\'
      - '\Temp\'
      - '\Downloads\'
      - '\Desktop\'
  condition: selection_name and selection_path
falsepositives:
  - Portable or unofficial AI client wrappers legitimately used by developers (review signer and hash before whitelisting)
level: high
---
title: AI-Branded Process Spawning Script Interpreter or Command Shell
id: 4d9e7b23-6c1f-4a58-b732-9e0c5d3a8f46
status: experimental
description: Detects processes named after ChatGPT, Claude, or related AI brands spawning cmd, PowerShell, wscript, mshta, or rundll32. Legitimate AI desktop clients do not launch script interpreters; this behavior is consistent with Yoba malware staging after trojanized installer execution.
references:
  - https://www.infosecurity-magazine.com/news/attackers-hide-malware-behind/
  - https://attack.mitre.org/techniques/T1059/
author: Security Arsenal
date: 2026/04/06
tags:
  - attack.execution
  - attack.t1059
  - attack.t1204.002
logsource:
  category: process_creation
  product: windows
detection:
  selection_parent:
    ParentImage|contains:
      - 'chatgpt'
      - 'claude'
      - 'openai'
      - 'anthropic'
  selection_child:
    Image|endswith:
      - '\cmd.exe'
      - '\powershell.exe'
      - '\pwsh.exe'
      - '\wscript.exe'
      - '\cscript.exe'
      - '\mshta.exe'
      - '\rundll32.exe'
      - '\regsvr32.exe'
  condition: selection_parent and selection_child
falsepositives:
  - Rare; legitimate AI desktop clients do not spawn script interpreters. Investigate any hit.
level: critical
---
title: Persistence Registration Masquerading as AI Assistant Updater
id: 1c5a8f47-2d9b-4e36-a814-7f3b6c0d9e25
status: experimental
description: Detects Run key or scheduled task persistence entries referencing ChatGPT, Claude, OpenAI, or Anthropic branding that point to binaries in user-writable paths. Trojanized installers frequently register persistence disguised as an AI client auto-updater.
references:
  - https://www.infosecurity-magazine.com/news/attackers-hide-malware-behind/
  - https://attack.mitre.org/techniques/T1060/
  - https://attack.mitre.org/techniques/T1053/005/
author: Security Arsenal
date: 2026/04/06
tags:
  - attack.persistence
  - attack.t1060
  - attack.t1053.005
logsource:
  category: registry_set
  product: windows
detection:
  selection_key:
    TargetObject|contains:
      - '\CurrentVersion\Run'
      - '\CurrentVersion\RunOnce'
  selection_value:
    Details|contains:
      - 'chatgpt'
      - 'claude'
      - 'openai'
      - 'anthropic'
  selection_path:
    Details|contains:
      - '\AppData\'
      - '\Temp\'
      - '\Users\Public\'
  condition: selection_key and selection_value and selection_path
falsepositives:
  - Legitimate AI clients installed per-user may register Run keys; verify the binary signer is the genuine vendor before tuning.
level: high

KQL Hunt — Microsoft Sentinel / Defender

The following query hunts for the full behavioral chain: AI-branded binaries executing from non-standard locations, spawning script interpreters, or establishing persistence. It runs against Defender advanced hunting tables and works equally well in Sentinel where the same tables are surfaced.

KQL — Microsoft Sentinel / Defender
let AiBrandTerms = dynamic(["chatgpt", "claude", "openai", "anthropic"]);
let SuspiciousPaths = dynamic(["\\AppData\\", "\\Temp\\", "\\Downloads\\", "\\Desktop\\", "\\Users\\Public\\"]);
let ScriptChildren = dynamic(["cmd.exe", "powershell.exe", "pwsh.exe", "wscript.exe", "cscript.exe", "mshta.exe", "rundll32.exe", "regsvr32.exe"]);
let SuspectProcesses = DeviceProcessEvents
    | where TimeGenerated > ago(7d)
    | where FileName has_any (AiBrandTerms) or ProcessCommandLine has_any (AiBrandTerms)
    | where FolderPath has_any (SuspiciousPaths)
    | project TimeGenerated, DeviceName, AccountName, FileName, FolderPath, ProcessCommandLine, SHA256, InitiatingProcessFileName;
let ChildSpawns = DeviceProcessEvents
    | where TimeGenerated > ago(7d)
    | where InitiatingProcessFileName has_any (AiBrandTerms)
    | where FileName in~ (ScriptChildren)
    | project TimeGenerated, DeviceName, AccountName, ChildProcess=FileName, ChildCommandLine=ProcessCommandLine, ParentProcess=InitiatingProcessFileName, ParentCommandLine=InitiatingProcessCommandLine;
let PersistenceCheck = DeviceRegistryEvents
    | where TimeGenerated > ago(7d)
    | where RegistryKey has_any ("\\Run", "\\RunOnce")
    | where RegistryValueData has_any (AiBrandTerms) and RegistryValueData has_any (SuspiciousPaths)
    | project TimeGenerated, DeviceName, RegistryKey, RegistryValueName, RegistryValueData;
SuspectProcesses
| union ChildSpawns
| union PersistenceCheck
| sort by TimeGenerated desc

A companion network hunt for payload staging — trojanized installers almost always reach out for second-stage components:

KQL — Microsoft Sentinel / Defender
DeviceNetworkEvents
| where TimeGenerated > ago(7d)
| where InitiatingProcessFileName has_any ("chatgpt", "claude", "openai", "anthropic")
| where InitiatingProcessFolderPath has_any ("\\AppData\\", "\\Temp\\", "\\Downloads\\")
| where RemotePort in (80, 443, 8080, 8443)
| summarize Connections = count(), RemoteIPs = make_set(RemoteIP), RemoteUrls = make_set(RemoteUrl)
  by DeviceName, InitiatingProcessFileName, InitiatingProcessFolderPath, InitiatingProcessSHA256
| sort by Connections desc

Velociraptor VQL Hunt

Use this artifact across your fleet to surface AI-branded executables in user-writable paths along with their Authenticode signer — the signer check is what separates a legitimate OpenAI/Anthropic binary from a fraudulently signed trojan.

VQL — Velociraptor
-- Hunt for trojanized ChatGPT/Claude installers in user-writable paths
-- and verify Authenticode signer identity
SELECT FullPath,
       Size AS FileSize,
       Mtime AS ModifiedTime,
       hash(path=FullPath).SHA256 AS SHA256,
       authenticode(filename=FullPath).SignerCertificate.Subject AS SignerSubject,
       authenticode(filename=FullPath).Status AS SignatureStatus
FROM glob(globs=[
    'C:/Users/*/Downloads/*chatgpt*',
    'C:/Users/*/Downloads/*claude*',
    'C:/Users/*/Downloads/*openai*',
    'C:/Users/*/Downloads/*anthropic*',
    'C:/Users/*/AppData/Local/**/chatgpt*.exe',
    'C:/Users/*/AppData/Local/**/claude*.exe',
    'C:/Users/*/AppData/Roaming/**/chatgpt*.exe',
    'C:/Users/*/AppData/Roaming/**/claude*.exe',
    'C:/Windows/Temp/*chatgpt*',
    'C:/Windows/Temp/*claude*'
])
WHERE FullPath =~ '(?i)\\.(exe|msi|bat|ps1|dll)$'
ORDER BY ModifiedTime DESC

Complementary persistence sweep for Run-key entries referencing AI branding:

VQL — Velociraptor
-- Sweep Run keys for persistence entries referencing AI assistant branding
SELECT Key.FullPath AS RegistryKey,
       ValueName,
       ValueData,
       Key.Mtime AS KeyModified
FROM read_reg_key(globs=[
    'HKEY_USERS/*/Software/Microsoft/Windows/CurrentVersion/Run/*',
    'HKEY_USERS/*/Software/Microsoft/Windows/CurrentVersion/RunOnce/*',
    'HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run/*'
])
WHERE ValueData =~ '(?i)(chatgpt|claude|openai|anthropic)'
   AND ValueData =~ '(?i)(appdata|temp|users\\public)'

Remediation and Verification Script

Run this PowerShell script on suspect endpoints (or deploy via your RMM/EDR remote shell) to inventory AI-branded artifacts, flag invalid or unexpected signers, and identify persistence entries. It is read-only by design — review output before removing anything.

PowerShell
# Audit for trojanized ChatGPT/Claude installers and Yoba staging artifacts
# Run elevated. Output is written to C:\Windows\Temp\FakeAiAudit_<hostname>.csv

$brandTerms = 'chatgpt|claude|openai|anthropic'
$searchRoots = @(
    "$env:SystemDrive\Users",
    "$env:SystemDrive\Windows\Temp",
    "$env:ProgramData"
)

$findings = foreach ($root in $searchRoots) {
    Get-ChildItem -Path $root -Recurse -Include *.exe,*.msi,*.dll,*.bat,*.ps1 -ErrorAction SilentlyContinue |
        Where-Object { $_.Name -match $brandTerms } |
        ForEach-Object {
            $sig = Get-AuthenticodeSignature -FilePath $_.FullName
            [PSCustomObject]@{
                ArtifactType    = 'File'
                Path            = $_.FullName
                SHA256          = (Get-FileHash $_.FullName -Algorithm SHA256 -ErrorAction SilentlyContinue).Hash
                SignatureStatus = $sig.Status
                Signer          = $sig.SignerCertificate.Subject
                LastWriteTime   = $_.LastWriteTime
            }
        }
}

# Flag anything not signed by the legitimate vendor (or unsigned entirely)
$suspicious = $findings | Where-Object {
    $_.SignatureStatus -ne 'Valid' -or
    ($_.Signer -notmatch 'OpenAI' -and $_.Signer -notmatch 'Anthropic')
}

# Audit Run keys and RunOnce for AI-branded persistence
$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'
)
$persistence = foreach ($key in $runKeys) {
    if (Test-Path $key) {
        Get-ItemProperty -Path $key | Get-Member -MemberType NoteProperty | ForEach-Object {
            $val = (Get-ItemProperty -Path $key).($_.Name)
            if ($val -match $brandTerms) {
                [PSCustomObject]@{
                    ArtifactType = 'Persistence'
                    Path         = "$key -> $($_.Name)"
                    SHA256       = ''
                    SignatureStatus = ''
                    Signer       = $val
                    LastWriteTime = ''
                }
            }
        }
    }
}

# Audit scheduled tasks for AI-branded persistence
$tasks = Get-ScheduledTask -ErrorAction SilentlyContinue | Where-Object {
    $_.TaskName -match $brandTerms -or ($_.Actions.Execute -match $brandTerms)
} | ForEach-Object {
    [PSCustomObject]@{
        ArtifactType = 'ScheduledTask'
        Path         = $_.TaskPath + $_.TaskName
        SHA256       = ''
        SignatureStatus = ''
        Signer       = ($_.Actions.Execute -join '; ')
        LastWriteTime = ''
    }
}

$report = $suspicious + $persistence + $tasks
$outFile = "C:\Windows\Temp\FakeAiAudit_$env:COMPUTERNAME.csv"
$report | Export-Csv -Path $outFile -NoTypeInformation
Write-Host "[+] Audit complete. $($report.Count) suspicious artifacts found. Report: $outFile" -ForegroundColor Yellow
$report | Format-Table -AutoSize

Remediation

Immediate Response for Confirmed Infections

  1. Isolate the host from the network (EDR network isolation or switch-level quarantine) — do not power off; preserve volatile memory for forensic acquisition.
  2. Collect triage artifacts: process list, network connections, persistence locations, the installer binary itself, and its Authenticode certificate chain. Submit the binary hash and signing certificate details to your threat intel platform and to OpenAI/Anthropic abuse channels if it impersonates their brands.
  3. Rotate credentials used on the affected host. Treat any browser-stored credentials, SSH keys, API tokens, and session cookies on the machine as compromised — commodity stealers bundled with trojanized installers routinely exfiltrate these within minutes.
  4. Rebuild rather than clean for any host where the Yoba payload achieved persistence or ran with user privileges. Implant removal alone is not assurance.
  5. Sweep the fleet using the KQL and VQL content above for matching hashes, signing certificates, and lure-domain telemetry. One download usually means more than one download.

Hardening to Prevent Recurrence

  • Establish a sanctioned AI software catalog. Publish the official download sources — chatgpt.com/openai.com for ChatGPT, claude.ai/anthropic.com for Claude — in your internal knowledge base and block AI-assistant downloads from all other origins at the proxy/DNS layer. There is no legitimate third-party distribution channel for these clients.
  • Fix your code-signing trust model. Configure application control (WDAC, AppLocker, or your EDR's execution control) to trust binaries by signer identity, not by signature validity. A policy of "any validly signed binary may run" is a policy this campaign is specifically built to defeat.
  • Block execution from user-writable paths for standard users via AppLocker/WDAC default rules. Trojanized installers overwhelmingly stage from Downloads, AppData, and Temp — denying execution there breaks the chain without touching legitimate Program Files installs.
  • Deploy browser and email controls against the lure vector: DNS filtering for newly registered and lookalike domains, download detonation for executables arriving from the web, and Mark-of-the-Web enforcement so SmartScreen and Smart App Control can evaluate the file's provenance.
  • Targeted user education for the highest-risk population: developers and power users. The specific message is narrow and actionable — ChatGPT and Claude desktop clients are only ever distributed by OpenAI and Anthropic directly; any other download page, GitHub mirror, or "cracked/premium" build is malware. This is one of the rare cases where a single-sentence policy materially reduces risk.
  • Add brand-impersonation monitoring to your threat intelligence program. Watch for newly registered domains and certificates referencing your approved AI vendors so you can block lure infrastructure before users find it via search or malvertising.

Exploitation Context

There is no vendor patch to apply here — the remediation surface is entirely on the defender's side: procurement governance, application control, execution-path restrictions, and detection coverage. Treat this campaign as the current state of the art for trojanized-software distribution and validate your controls against it now, because AI-brand lures are among the highest-converting social engineering vehicles in operation in 2026.

Related Resources

Security Arsenal Penetration Testing Services AlertMonitor Platform Book a SOC Assessment vulnerability-management Intel Hub

Is your security operations ready?

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