Threat Summary
AlienVault OTX pulse data confirms a software supply chain compromise affecting AOMEI Technology's update and notification infrastructure between April and July 2026. During three confirmed tampering windows — lasting ten, six, and five minutes respectively — attackers modified legitimate download instructions served to AOMEI Backupper users, redirecting them to a malicious ZIP archive containing an initial downloader staged as upgrade-now.exe.
AOMEI Backupper is installed on over 100 million systems worldwide, making this one of the widest-blast-radius supply chain events of 2026. The attack chain is classic trusted-channel abuse:
- Compromise of vendor update/notification infrastructure (publisher-side intrusion)
- Redirection of legitimate update prompts to attacker-controlled hosting (
storage-data.comand subdomains) - Delivery of a malicious ZIP containing the
upgrade-now.exedownloader - Staging of a remote access backdoor for persistent access to victim endpoints
The objective is consistent with initial-access-for-profit operations: mass compromise of endpoints through a trusted vendor channel, followed by selective exploitation — credential theft, lateral movement staging, ransomware precursor access, or resale of access on criminal markets. The short, surgical tampering windows (minutes, not days) indicate a disciplined operator deliberately minimizing detection exposure and forensic footprint on the vendor's infrastructure.
Threat Actor / Malware Profile
Attribution: Unknown. No established APT or crime group has claimed the operation. The tradecraft — brief tampering windows, lookalike staging subdomains (aomei.storage-data.com, promotion.storage-data.com), and ZIP-wrapped initial downloaders — mirrors techniques seen in prior update-channel compromises (e.g., SolarWinds-style selective delivery, 3CX double supply chain).
Malware: upgrade-now.exe (initial downloader → remote access backdoor)
- Distribution method: Trojanized update flow. Victims launching AOMEI Backupper during tampering windows received modified download instructions pointing to attacker infrastructure. The malicious ZIP masquerades as a legitimate software update.
- Payload behavior:
upgrade-now.exeacts as a first-stage downloader/dropper that retrieves and installs a remote access backdoor, granting operators interactive control of the compromised host. - C2 communication: Staging and likely C2 traffic flows to
storage-data.comand its subdomainsaomei.storage-data.comandpromotion.storage-data.com— subdomains engineered to blend with legitimate vendor telemetry and promotional endpoints. - Persistence mechanism: Backup/update software context provides natural persistence cover — expect registry Run keys, scheduled tasks mimicking update checks, or service installation under AOMEI-plausible names. Hunt for any persistence artifact referencing
upgrade-nowor non-AOMEI-signed binaries in AOMEI install paths. - Anti-analysis techniques: Time-boxed delivery windows frustrate sandbox detonation and reputation-based blocking; vendor-lookalike domains defeat naive domain allowlisting; ZIP encapsulation evades some proxy-level executable filtering.
IOC Analysis
The pulse provides network indicators (domain and hostname type) — high-value for this campaign because the attacker relied on a single purpose-built domain with deceptive subdomains:
| Indicator | Type | Role |
|---|---|---|
storage-data.com | domain | Root staging/C2 domain |
aomei.storage-data.com | hostname | Vendor-lookalike delivery endpoint |
promotion.storage-data.com | hostname | Masquerade as promotional/notification infra |
Operationalization guidance for SOC teams:
- Block all three indicators at DNS (RPZ/sinkhole), web proxy, and EDR network layers. Block at the root domain level — any future subdomains of
storage-data.comshould be treated as hostile. - Retro-hunt DNS query logs, proxy logs, and TLS SNI records back to April 1, 2026 — the earliest confirmed tampering window. Any hit is a potential compromised host.
- Pivot on passive DNS (SecurityTrails, VirusTotal, PassiveTotal) to identify resolving IPs during the campaign window and hunt those IPs in firewall/NetFlow telemetry, since the domain may now be sinkholed or dormant.
- File reputation: Add
upgrade-now.exefilename and any associated hashes from the MalwareBytes reference reporting to EDR blocklists; filename alone is weak (trivially renamed) but useful for retro-hunts in process execution and download logs. - Tooling: URLscan.io and VirusTotal for infrastructure pivoting; AbuseIPDB for resolving-IP reputation; your SIEM for the retro-hunt correlation.
Detection Engineering
---
title: AOMEI Backupper Malicious Update Execution - upgrade-now.exe
id: 7f3a2c1e-9b4d-4e8a-a1c5-2d6f8e0b1a34
status: experimental
description: Detects execution of the malicious upgrade-now.exe downloader distributed via compromised AOMEI Backupper update infrastructure (April-July 2026 supply chain compromise)
author: Security Arsenal Threat Intelligence
references:
- https://www.malwarebytes.com/blog/news/2026/10/aomei-backupper-update-servers-hijacked-to-push-malware-check-your-pc
date: 2026/10/19
logsource:
category: process_creation
product: windows
detection:
selection_filename:
Image|endswith: '\upgrade-now.exe'
OriginalFileName: 'upgrade-now.exe'
selection_child_of_aomei:
ParentImage|contains:
- '\AOMEI\'
- 'Backupper'
CommandLine|contains:
- 'upgrade'
- 'update'
condition: selection_filename or selection_child_of_aomei
falsepositives:
- Legitimate AOMEI update processes during the tampering window require verification of download source
level: high
tags:
- attack.initial_access
- attack.t1195.002
---
title: Network Connection to AOMEI Supply Chain Staging Domain
id: 8e4b3d2f-0c5e-5f9b-b2d6-3e7a9f1c2b45
status: experimental
description: Detects DNS resolution or network connections to storage-data.com infrastructure used to deliver the upgrade-now.exe backdoor via hijacked AOMEI update servers
author: Security Arsenal Threat Intelligence
references:
- https://www.malwarebytes.com/blog/news/2026/10/aomei-backupper-update-servers-hijacked-to-push-malware-check-your-pc
date: 2026/10/19
logsource:
category: network_connection
product: windows
detection:
selection_domain:
DestinationHostname|contains: 'storage-data.com'
selection_dns:
QueryName|contains: 'storage-data.com'
condition: selection_domain or selection_dns
falsepositives:
- None expected; domain is attacker-controlled
level: critical
tags:
- attack.command_and_control
- attack.t1071.001
---
title: Suspicious Persistence Masquerading as AOMEI Update Component
id: 9f5c4e3a-1d6f-6a0c-c3e7-4f8b0a2d3c56
status: experimental
description: Detects registry Run key or scheduled task persistence using AOMEI-plausible names or referencing upgrade-now, consistent with backdoor persistence following the AOMEI supply chain compromise
author: Security Arsenal Threat Intelligence
date: 2026/10/19
logsource:
category: registry_event
product: windows
detection:
selection_runkey:
TargetObject|contains:
- '\CurrentVersion\Run'
- '\RunOnce'
Details|contains:
- 'upgrade-now'
- 'storage-data'
selection_unsigned_aomei_path:
TargetObject|contains: '\CurrentVersion\Run'
Details|contains: '\AOMEI'
condition: selection_runkey
falsepositives:
- Legitimate AOMEI Backupper autostart entries; verify binary signer is AOMEI Technology Co.
level: high
tags:
- attack.persistence
- attack.t1547.001
// AOMEI Supply Chain Compromise Hunt - storage-data.com infrastructure & upgrade-now.exe
// Microsoft Sentinel / Defender XDR
let lookback = 200d; // Covers April 2026 tampering window start
let maliciousDomains = dynamic(["storage-data.com", "aomei.storage-data.com", "promotion.storage-data.com"]);
let NetworkHits = DeviceNetworkEvents
| where TimeGenerated >= ago(lookback)
| where RemoteUrl has_any (maliciousDomains)
| project NetworkTime=TimeGenerated, DeviceName, DeviceId, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteUrl, RemoteIP, ActionType;
let DnsHits = DeviceEvents
| where TimeGenerated >= ago(lookback)
| where ActionType == "DnsQueryResponse"
| extend Query = tostring(parse_json(AdditionalFields).DnsQueryString)
| where Query has_any (maliciousDomains)
| project DnsTime=TimeGenerated, DeviceName, DeviceId, Query;
let ProcessHits = DeviceProcessEvents
| where TimeGenerated >= ago(lookback)
| where FileName =~ "upgrade-now.exe" or ProcessCommandLine has_any ("upgrade-now", "storage-data")
| project ProcessTime=TimeGenerated, DeviceName, DeviceId, FileName, ProcessCommandLine, FolderPath, SHA256, InitiatingProcessFileName;
NetworkHits
| union DnsHits, ProcessHits
| sort by DeviceName
# AOMEI Supply Chain Compromise - Endpoint IOC Hunt Script
# Checks for upgrade-now.exe artifacts, malicious persistence, and network indicators
# Run elevated; outputs findings to console and C:\IR\AOMEI_Hunt_Results.csv
$results = @()
$outDir = "C:\IR"
if (-not (Test-Path $outDir)) { New-Item -ItemType Directory -Path $outDir | Out-Null }
Write-Host "[*] Hunting for upgrade-now.exe binaries on disk..." -ForegroundColor Cyan
$suspectPaths = @("$env:ProgramFiles", "${env:ProgramFiles(x86)}", "$env:ProgramData", "$env:LOCALAPPDATA", "$env:APPDATA", "$env:TEMP", "$env:USERPROFILE\Downloads")
foreach ($p in $suspectPaths) {
if (Test-Path $p) {
Get-ChildItem -Path $p -Recurse -Filter "upgrade-now.exe" -ErrorAction SilentlyContinue | ForEach-Object {
$sig = Get-AuthenticodeSignature $_.FullName
$results += [PSCustomObject]@{Type="File"; Artifact=$_.FullName; Detail="Signer: $($sig.SignerCertificate.Subject) | Status: $($sig.Status) | SHA256: $((Get-FileHash $_.FullName -Algorithm SHA256).Hash)"}
}
}
}
Write-Host "[*] Checking 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 "upgrade-now|storage-data") {
$results += [PSCustomObject]@{Type="Persistence-Registry"; Artifact="$key\$($_.Name)"; Detail=$val}
}
}
}
}
Write-Host "[*] Checking scheduled tasks for suspicious AOMEI/upgrade entries..." -ForegroundColor Cyan
Get-ScheduledTask | ForEach-Object {
$task = $_
$actions = ($task.Actions | Out-String)
if ($task.TaskName -match "upgrade-now" -or $actions -match "upgrade-now|storage-data") {
$results += [PSCustomObject]@{Type="Persistence-ScheduledTask"; Artifact=$task.TaskName; Detail=$actions.Trim()}
}
}
Write-Host "[*] Checking DNS cache for storage-data.com resolution..." -ForegroundColor Cyan
Get-DnsClientCache -ErrorAction SilentlyContinue | Where-Object { $_.Entry -match "storage-data\.com" } | ForEach-Object {
$results += [PSCustomObject]@{Type="DNS-Cache"; Artifact=$_.Entry; Detail="Resolved: $($_.Data)"}
}
Write-Host "[*] Checking active/recent connections to storage-data.com..." -ForegroundColor Cyan
Get-NetTCPConnection -ErrorAction SilentlyContinue | Where-Object { $_.State -eq "Established" } | ForEach-Object {
try {
$rdns = ([System.Net.Dns]::GetHostEntry($_.RemoteAddress)).HostName
if ($rdns -match "storage-data\.com") {
$proc = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
$results += [PSCustomObject]@{Type="Network-Active"; Artifact="$($_.RemoteAddress):$($_.RemotePort) ($rdns)"; Detail="Process: $($proc.ProcessName) PID $($_.OwningProcess)"}
}
} catch {}
}
if ($results.Count -gt 0) {
Write-Host "[!] $($results.Count) INDICATOR(S) FOUND - host may be compromised" -ForegroundColor Red
$results | Format-Table -AutoSize
$results | Export-Csv "$outDir\AOMEI_Hunt_Results.csv" -NoTypeInformation
} else {
Write-Host "[+] No indicators found on this host." -ForegroundColor Green
}
Response Priorities
Immediate (0–4 hours):
- Block
storage-data.comand all subdomains at DNS, proxy, and EDR network layers; block at root domain to cover future subdomains - Retro-hunt DNS/proxy/SNI telemetry back to April 1, 2026 for any resolution of the three indicators; any hit = suspected compromised host → isolate pending triage
- Identify all endpoints with AOMEI Backupper installed via software inventory/EDR; prioritize hunting on those systems
- Search process execution history for
upgrade-now.exeand any unsigned or non-AOMEI-signed binary executing from AOMEI installation directories
24 hours:
- For confirmed exposed hosts, treat as full compromise: isolate, acquire memory/disk, and force credential resets for any user accounts (local and domain) that authenticated on the machine — remote access backdoors enable interactive credential theft, token theft, and keylogging
- Audit lateral movement from exposed hosts: SMB/RDP/WinRM authentication logs, new local account creation, suspicious service installation
- Review outbound traffic from exposed hosts for data staging or exfiltration beyond the known C2 indicators
- If AOMEI Backupper is in use, suspend automated update flows and verify any pending updates directly against vendor-published hashes via out-of-band channels
1 week:
- Implement application control policies (WDAC/AppLocker) restricting execution in backup software directories to vendor-signed binaries only
- Enforce code-signing verification requirements for software update mechanisms across the environment; alert on unsigned binaries executing from Program Files subtrees
- Segment backup infrastructure and restrict backup agents' network egress to vendor-verified update endpoints only
- Add supply chain compromise scenarios (MITRE T1195.002) to tabletop exercise and detection validation cycles; verify Sigma coverage above is deployed and tested
- Engage vendor risk process for AOMEI Technology's incident disclosure and remediation attestation before re-enabling updates
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.