TamperedChef (EvilAI) — Signed Fake-Productivity-App Malvertising

A global malvertising operation distributing code-signed fake productivity apps (AppSuite PDF, Calendaromatic, OneZip, CrystalPDF) via fake download sites. The Electron apps look legitimate and stay dormant — payloads (infostealers, RATs, browser hijackers) often activate ~56 days after install to evade analysis. Defensive hunt & harden pack — no malicious code.
Threat
TamperedChef · aka EvilAI
Severity
SIGNED · DELAYED-ACTIVATION
Type
Malvertising · trojanized signed app · infostealer/RAT
Scale
100+ variants · 20,000+ malicious ads
Clusters
CL-CRI-1089 · CL-UNK-1090 · CL-UNK-1110 (Unit 42)
Version
v0.4 · 2026-06-12
Author
HuntPack
01

Executive Summary

TamperedChef (a.k.a. EvilAI) is a large malvertising operation that hides infostealers, RATs, and browser hijackers inside professional-looking, digitally-signed productivity software. Malicious ads (20,000+ observed) drive victims to convincing fake sites distributing apps such as AppSuite PDF, Calendaromatic, OneZip, and CrystalPDF. These are code-signed with legitimate certificates issued to international shell companies, letting them slip past signature-trust defenses; researchers track the clusters (CL-CRI-1089, CL-UNK-1090, CL-UNK-1110) via certificate and code reuse.

The defining evasion is delayed activation: the malicious behavior typically doesn't begin until ~56 days after download, long after a sandbox or analyst has moved on. The apps are usually Electron-based, establish a scheduled task for persistence/timing, then retrieve second-stage payloads (RATs, browser hijackers, credential stealers). Over 100 unique malware variants masqueraded as productivity tools in 2025.

Defender priority: Because the binary is signed and dormant, signature trust and point-in-time sandboxing both fail here. Hunt on the install footprint, not reputation: Q1 (a fake-app Electron binary from a user-writable path) and Q2 (the scheduled task it creates). The delayed second-stage beacon (Q3) and browser hijack (Q4) confirm activation. Treat a confirmed install as compromised even before the payload fires.

02

Source Review & Web Hunter Notes

TierSourceKey FindingCarry
1 · Vendor researchUnit 42 — Tracking TamperedChef Clusters via Cert/Code ReuseCluster taxonomy (CL-CRI-1089/1090/1110), shell-company code-signing, app familiesyes
1 · Vendor researchSophos — TamperedChef serves bad adsMalvertising → fake PDF/calendar apps; infostealers; signed appsyes
2 · News of recordInfosecurity / GBHackers / CyberSecurityNews56-day delayed activation; 100+ variants; 20k+ ads; RAT/stealer/browser-hijack payloadsyes
2 · VendorCybersecurity MagazineApp names (AppSuite PDF, Calendaromatic, OneZip, CrystalPDF); Electron packagingpartial

Decisions: hunt the install footprint & persistence (signature trust and sandbox detonation both fail against a signed, dormant app); cert-reuse becomes a powerful pivot (block/flag the shell-company signers); behavior over atomic IOCs since variants/certs rotate by the hundred.

03

Hunt Brief & Attack Chain

Working hypothesis: A user clicks a malicious ad, downloads and installs a signed fake productivity app from a user-writable path; the app registers a scheduled task and lies dormant, then (~56 days later) retrieves a stealer/RAT and/or hijacks the browser.

StepBehaviorTelemetryHunt Angle
1 · MalvertisingMalicious ad → fake download site for a "PDF/calendar" appProxy / browser historyN1
2 · InstallSigned Electron app installed to %LocalAppData%/Program Files (user)file write; ProcessRollup2Q1; N2
3 · Persistence/timingScheduled task created (drives the delay + auto-run)ScheduledTaskRegisteredQ2; N3
4 · Dormancy~56-day delay before activationDetect install + task before payload fires
5 · ActivationSecond-stage beacon; stealer/RAT pullNetworkConnectIP4; procQ3 / Q5
6 · Browser hijackSearch/homepage/extension changes; credential theftregistry; file readQ4

Affected surface & telemetry

SurfaceRequired TelemetryPriorityGap Risk
Windows user endpointsProcess + file writes; PE signer metadataCriticalMedium — signer telemetry varies
Scheduled-task persistenceScheduledTaskRegisteredHighLow — covered
Delayed C2NetworkConnectIP4 over long windows; proxyHighHigh — 56-day lag defeats short lookbacks
Browser hijackRegistry (search/homepage/extensions)MediumMedium — needs registry telemetry
04

Consolidated IOC Table

Hundreds of variants signed by rotating shell-company certs — atomic hashes/certs age out fast, but the cert-reuse pivot and the app-name/install footprint are strong. Copy-ready blocks in §9.
TypeValueConfActionContext
App nameAppSuite PDF · Calendaromatic · OneZip · CrystalPDFhighhuntKnown fake productivity apps
Behaviorsigned Electron app from %LocalAppData% + scheduled taskhighdetectInstall footprint — flagship
Certcode-signing cert issued to a shell company (reused across variants)mediumhuntCert-reuse pivot (block the signer)
Behaviordelayed (~56-day) first beacon after installmediumhuntActivation evasion
Behaviorbrowser search/homepage/extension hijack post-installmediumhuntPayload behavior
05

ATT&CK Mapping

TacticTechniqueObserved BehaviorQuery / Control
Initial AccessT1189 / T1583.008 — Drive-by / malvertisingMalicious ad → fake app downloadN1; web filtering (§10)
Execution / Defense EvasionT1204.002 / T1553.002 — User exec / signed binaryUser installs a code-signed fake appQ1, Q6
Persistence / Execution TimingT1053.005 — Scheduled TaskTask drives the delay + auto-runQ2; N3
Defense EvasionT1497.003 — Time-based evasion~56-day dormancy before activationQ3 (long lookback)
C2 / CollectionT1071.001 / T1176 / T1555 — Web C2 / browser ext / browser credsSecond-stage beacon; browser hijack; stealerQ3, Q4, Q5
06

Native Audit-Log Hunts

HuntSourceLogicResponse
N1 · Malvertising deliveryProxy / browser download historyDownloads of AppSuite/Calendaromatic/OneZip/CrystalPDF installers from ad/redirect sourcesBlock domain; sweep host
N2 · Fake-app inventorySoftware inventory / Add-Remove ProgramsInstalled apps matching the known names or signed by a flagged shell-company certUninstall; treat host as compromised
N3 · Scheduled-task persistenceTask Scheduler / EID 4698Tasks created by the fake-app installer pointing at its Electron binaryRemove; isolate
N4 · Delayed beaconProxy / firewall (long retention)First outbound C2 from the app weeks after install (the 56-day tell)Block; investigate the host fleet-wide for the same cert/app
07

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.
Field names validated against the Falcon event reference; process hunts include SyntheticProcessRollup2. Run long lookbacks (60–90 days) — the ~56-day dormancy defeats short windows. Signer-based hunts (Q6) depend on PE certificate telemetry availability.
Q1 · Known fake productivity app executing from a user path
CONF HIGHFP LOW-MEDCOST LOW

Looks for: the known TamperedChef app binaries running from %LocalAppData%/user paths. Accomplishes: directly identifies installed fake apps. FP: none for the named binaries; extend the list as Unit 42 adds variants.

// HUNT: TamperedChef fake productivity app execution
// MITRE: T1204.002, T1553.002 | CONF: high  FP: low-med  COST: low
// TUNING: extend the name list as new variants are published (Unit 42 cluster tracking)
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| (FileName=/^(AppSuite|Calendaromatic|OneZip|CrystalPDF|PDFEditor|Manual-Finder)\.exe$/i
   or CommandLine=/(AppSuite|Calendaromatic|OneZip|CrystalPDF)/i)
| ImageFileName=/\\(AppData|ProgramData|Temp|Program Files)\\/i
| table([@timestamp, ComputerName, UserName, ImageFileName, CommandLine, SHA256HashData], limit=200)
Q2 · Scheduled task created by a fake-app installer
CONF HIGHFP LOW-MEDCOST LOW

Looks for: a scheduled task registered that points at an Electron binary in a user-writable path. Accomplishes: catches the persistence/timing mechanism even before the payload activates.

// HUNT: TamperedChef scheduled-task persistence (Electron binary in user path)
// MITRE: T1053.005 | CONF: high  FP: low-med  COST: low
// TUNING: correlate to Q1; legit apps also use tasks — focus on AppData/Temp targets
#event_simpleName=ScheduledTaskRegistered
| (CommandLine=/(AppSuite|Calendaromatic|OneZip|CrystalPDF)/i
   or CommandLine=/\\(AppData|Temp|ProgramData)\\.+\.exe/i)
| table([@timestamp, ComputerName, UserName, TaskName, CommandLine], limit=200)
Q3 · Delayed first beacon from a user-path app (long lookback)
CONF MEDFP MEDCOST MED

Looks for: first outbound connection from a known fake-app binary. Accomplishes: catches the activation beacon. FP: normal app telemetry — scope to the named binaries and run a 60–90 day window.

// HUNT: TamperedChef activation beacon (run over 60-90 days for the ~56-day delay)
// MITRE: T1071.001, T1497.003 | CONF: medium  FP: medium  COST: medium
// TUNING: scope to the named binaries; exclude legitimate vendor update endpoints
#event_simpleName=NetworkConnectIP4
| ContextBaseFileName=/^(AppSuite|Calendaromatic|OneZip|CrystalPDF|PDFEditor)\.exe$/i
| RemoteAddressIP4!=/^(10\.|192\.168\.|172\.(1[6-9]|2[0-9]|3[01])\.|169\.254\.|127\.)/
| table([@timestamp, ComputerName, ContextBaseFileName, RemoteAddressIP4, RemotePort], limit=200)
Q4 · Browser hijack (search/homepage/extension change)
CONF MEDFP MEDCOST LOW

Looks for: registry writes to browser search/homepage/extension keys by a user-path binary. Accomplishes: catches the browser-hijack payload. FP: legit browser config tools — correlate with Q1.

// HUNT: TamperedChef browser hijack (search/homepage/extension)
// MITRE: T1176, T1112 | CONF: medium  FP: medium  COST: low
// TUNING: correlate to Q1; allow-list sanctioned browser-management tooling
#event_simpleName=/AsepValueUpdate|RegGenericValueUpdate/
| RegObjectName=/\\(Software\\Policies\\(Google|Microsoft|Mozilla)|Chrome\\Extensions|Edge\\Extensions|Main\\Start Page|DefaultScope)/i
| table([@timestamp, ComputerName, UserName, RegObjectName, RegStringValue], limit=200)
Q5 · Second-stage payload dropped/spawned by the fake app
CONF HIGHFP LOW-MEDCOST LOW

Looks for: a fake-app binary spawning a shell/script host or a freshly-written executable. Accomplishes: catches the RAT/stealer second stage. FP: low for the named apps.

// HUNT: TamperedChef second-stage payload (child of the fake app)
// MITRE: T1059, T1105 | CONF: high  FP: low-med  COST: low
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| ParentBaseFileName=/^(AppSuite|Calendaromatic|OneZip|CrystalPDF|PDFEditor)\.exe$/i
| FileName=/^(cmd|powershell|pwsh|mshta|wscript|cscript|rundll32|regsvr32)\.exe$/i
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine], limit=200)
Q6 · Shell-company code-signing cert pivot
CONF MEDFP MEDCOST LOW

Looks for: binaries signed by a known TamperedChef shell-company certificate (populate from Unit 42 cluster reporting). Accomplishes: a powerful cert-reuse pivot across all variants. FP: depends on signer telemetry; only as good as the cert list you maintain.

// HUNT: TamperedChef cert-reuse pivot (shell-company signer)
// MITRE: T1553.002 | CONF: medium  FP: medium  COST: low
// REQUIRES: PE signer telemetry; populate the subject/thumbprint list from Unit 42 reporting
// TUNING: populate the signer subject list from the cited reporting before running -- the REPLACE_WITH placeholder matches nothing, so this query silently returns zero rows until it is filled in. Once populated, pivot on the thumbprint rather than the subject string, which shell companies re-register.
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| CertificateSubject=/REPLACE_WITH_SHELL_COMPANY_SUBJECT(S)/i
| table([@timestamp, ComputerName, FileName, ImageFileName, CertificateSubject, SHA256HashData], limit=200)
08

CrowdStrike Custom IOA Recommendations

IOA NameField PatternsBenign ExclusionsDeployment Path
TamperedChef — known fake app executionImage *\(AppSuite|Calendaromatic|OneZip|CrystalPDF).exe from *\AppData\*None — these are not legitimate appsEndpoint Security → Custom IOA → Process Creation, Detect+Block
TamperedChef — fake app spawns shellParent *\(AppSuite|CrystalPDF|...).exe; Child cmd/powershell/mshta.exeNone expectedCustom IOA → Process Creation
Q1, Q2, Q5 are strong promotions. Q6 (cert pivot) is high-value once you maintain the signer list. Q3/Q4 stay correlated hunts (long lookback for Q3).
09

Machine-Readable IOC Appendix

Grouped IOC Quick-Copy

One-click blocks for hunting, inventory, and cert-pivoting. Variants/certs rotate by the hundred — the cert-reuse pivot + install footprint are durable.

Known Fake App Namesinventory / block
AppSuite PDF        # Electron fake PDF suite
Calendaromatic      # fake calendar app
OneZip              # fake archiver
CrystalPDF          # fake PDF editor
# + 100+ rotating variants (PDF editors / calendar / zip / "AI" tools) — extend from Unit 42
# Hunt Add/Remove Programs + %LocalAppData% for these names or unknown Electron "productivity" apps
Behavioral Signaturesdetection logic
Signed Electron "productivity" app running from %LocalAppData%/Temp + a scheduled task
First outbound C2 from the app weeks after install (~56-day delayed activation)
Fake app spawns cmd/powershell/mshta (second-stage payload)
Registry writes to browser search/homepage/extension keys post-install (hijack)
Binary signed by a shell-company certificate reused across multiple variants
Install originating from a malicious ad / fake download site
Cluster / Cert PivotUnit 42 tracking
# Activity clusters (Unit 42): CL-CRI-1089, CL-UNK-1090, CL-UNK-1110
# Pivot: pull the code-signing cert (subject + thumbprint) from any recovered fake-app binary,
#   then sweep the fleet for OTHER binaries signed by the same shell-company cert.
# PowerShell signer check on a suspect file:
Get-AuthenticodeSignature 'C:\Path\To\fakeapp.exe' | Select-Object Status, SignerCertificate
# Add confirmed shell-company subjects/thumbprints to Q6 + a deny rule.
Hardening / Blockdon't trust the signature
# Signature trust is NOT sufficient here — the apps are validly signed:
WDAC/AppLocker: allow only an explicit publisher/app allow-list (deny unknown signed apps from %AppData%)
Block downloads/execution of Electron apps from %LocalAppData%/Temp unless sanctioned
Web/ad filtering; block known malvertising redirect infrastructure
Revoke trust / add deny rules for confirmed shell-company signing certs (cert pivot)
Browser: lock search/homepage/extension policy via GPO to resist hijack
10

Hardening — Tiered & Deployable

The defining lesson: a valid signature is not trust. Allow-list explicitly and deny unknown signed apps from user paths.

Immediate — Don't trust the signature
  • WDAC/AppLocker: explicit publisher/app allow-list; deny unknown signed apps from %LocalAppData%/TempM1038. A valid cert is not a free pass.
  • Block/flag the confirmed shell-company signing certsM1045. Cert-reuse pivot (Q6) defeats all variants of a cluster at once.
  • Web + ad filtering; block known malvertising redirect infrastructureM1021. Cuts delivery.
  • Lock browser search/homepage/extension policy via GPOM1042. Resists the hijack payload.
Near term — Inventory & long-window hunting (pilot first)
  • Inventory installed apps; alert on unknown Electron "productivity" appsM1042. Feeds Q1/N2.
  • Monitor scheduled tasks pointing at user-path Electron binariesM1018. Feeds Q2/N3.
  • Run Q3/N4 over 60–90 daysM1047. The 56-day dormancy defeats short lookbacks.
Strategic — Default-deny & software governance
  • Application allowlisting enterprise-wide; restrict user app installsM1038 / M1026.
  • Software-acquisition governance: approved sources onlyM1033. Removes the "download a free PDF tool" path.
  • User training on malvertised "free productivity tools"M1017.
11

Containment Runbook

PhaseActionsOwnerEvidence
IsolateNetwork-contain the host; preserve the fake-app binary (extract the signing cert) and scheduled taskSOC L2Containment timestamp; Q1/Q2 events; cert
TriageDetermine whether the payload activated (Q3/Q5); identify browser hijack + any stealer output; extract the cert for the pivotSOC L2Activation status; cert subject/thumbprint
EradicateUninstall the app + scheduled task; remove second-stage payloads; block C2; add the cert to deny rules and Q6IRRemoval log; cert deny rule
RecoverIf a stealer activated, rotate browser creds/cookies/tokens; reset browser policy; rebuild if a RAT had accessIR + ITCred rotation; policy reset
Hunt-the-fleetSweep all endpoints for binaries signed by the same shell-company cert (Q6)Detection EngFleet sweep results
12

Detection Coverage Map & Validation

TechniqueBehaviorCQLIOACoverage
T1204.002 / T1553.002Fake signed app executionQ1IOA-1Good
T1053.005Scheduled-task persistenceQ2Good
T1497.003 / T1071.001Delayed activation beaconQ3Partial needs 60–90d lookback (N4)
T1176 / T1112Browser hijackQ4Partial needs registry telemetry
T1059 / T1105Second-stage payloadQ5IOA-2Good
T1553.002Shell-company cert reuseQ6Partial needs signer telemetry + cert list
T1583.008 (delivery)MalvertisingGAP ad/web filtering (N1)

Validation gates: (1) confirm process + file + scheduled-task telemetry; verify whether PE signer fields are available (for Q6); (2) baseline legitimate Electron apps in your environment; (3) lab-test a benign app run from %LocalAppData% with a scheduled task (Q1/Q2); (4) promote Q1/Q5 to Custom IOA Detect+Block; maintain the cert list for Q6; run Q3 on a 60–90 day schedule.

13

Hunt Summary Ticket

TITLE:        Hunt — TamperedChef (EvilAI) signed fake-app malvertising
SEVERITY:     High (signed, delayed-activation infostealer/RAT; signature trust fails)
SCOPE:        Windows user endpoints; long lookback required (~56-day dormancy)
HYPOTHESIS:   Malicious ad -> signed fake productivity app (AppSuite/Calendaromatic/OneZip/
              CrystalPDF) installed to %LocalAppData% -> scheduled task -> dormant ~56 days ->
              second-stage stealer/RAT + browser hijack.
QUERIES RUN:  Q1 fake app exec (IOA) | Q2 scheduled task | Q3 delayed beacon (60-90d) |
              Q4 browser hijack | Q5 second-stage child (IOA) | Q6 shell-company cert pivot
              + Native N1-N4 (malvertising, app inventory, task persistence, delayed beacon)
DO FIRST:     Q1, Q2 — uninstall + isolate; extract the cert for the fleet pivot
FINDINGS:     <pending analyst execution>
GAPS:         Delivery (ad filtering); cert pivot needs signer telemetry + maintained list
ACTIONS:      Explicit app allow-list (deny unknown signed apps from %AppData%); block the
              shell-company certs; lock browser policy; promote Q1/Q5; cert-pivot the fleet (Q6)
OWNER:        HuntPack
VERSION:      v0.4 - 2026-06-12
14

Changelog

v0.42026-07-24CQL correctness pass. All table() calls now carry an explicit row limit: the default is 200 and truncation is silent, so a capped result was indistinguishable from a complete one. Atomic-IOC sweeps (filters over 5+ hashes or C2 IPs) use limit=max so a wide infection is never silently under-scoped; behavioural hunts use limit=200, where exceeding the cap indicates the query needs tuning. Where present, event names that do not exist in the Falcon data model were corrected (e.g. ServiceInstalled is a Sysmon concept, not a Falcon event; ElfFileWritten is ELFFileWritten) — such queries could never return a row. No detection logic, fields, or IOCs changed.
v0.32026-06-12Re-hunt + reformatted to the review-v2 gold layout (fixed left-sidebar scrollspy TOC, collapsible, cloud selector inside the CQL section, per-card Copy/Open-in-Falcon, Grouped IOC Quick-Copy grid, coverage+validation, .ticket). Refreshed from Unit 42/Sophos: EvilAI alias, cluster taxonomy (CL-CRI-1089/1090/1110), shell-company code-signing + cert-reuse pivot, ~56-day delayed activation, app names (AppSuite/Calendaromatic/OneZip/CrystalPDF), 100+ variants / 20k+ ads. 6 CQL + 4 native hunts, 2 IOA candidates.
v0.12026-05-26Initial pack: Tampered Chef signed fake-app overview + hunts. Pre-gold top-bar layout.
15

References

TierSourceUsed For
1Unit 42 — Tracking TamperedChef Clusters via Cert/Code ReuseCluster taxonomy, shell-company signing, cert pivot, app families
1Sophos — TamperedChef serves bad adsMalvertising → fake apps; infostealer payloads
2Infosecurity — TamperedChef malvertising / fake PDF · GBHackers — hides in signed apps56-day delay; 100+ variants; 20k+ ads; RAT/stealer payloads
2Cybersecurity News — signed productivity appsApp names, Electron packaging

HuntPack v0.3 · TamperedChef (EvilAI) · Generated 2026-06-12 · Defensive use only. The apps are validly signed and dormant — signature trust and short-window sandboxing both fail; hunt the install footprint and pivot on the shell-company cert. Validate field names (esp. PE signer telemetry) in your tenant before promoting any query.