Two live OTX pulses converge on a single theme: browser-session abuse and credential theft at scale. One campaign hijacks authenticated WordPress administrator sessions to plant persistent PHP backdoors; the other floods finance, technology, telecom, manufacturing, real estate, and aviation sectors with year-end phishing lures impersonating compensation adjustments, Q4 invoices, access reviews, and benefits statements. Both are credential-centric operations feeding the dark web access-broker economy.
Threat Summary
TRUST#GRAFT (attributed to the Web Media Optimizer malware family) is a multi-stage attack chain that begins with JavaScript loaders injected into compromised websites. Victims — specifically WordPress administrators — are presented with fake Cloudflare-style verification screens (a ClickFix-pattern social engineering technique) while the script silently performs browser fingerprinting, harvests credentials from browser storage, and profiles the environment. The critical pivot: once an authenticated WordPress admin session is detected, the malware abuses that live session to deploy a persistent PHP backdoor on the server, converting a client-side compromise into full web-server control. Compromised WordPress infrastructure is routinely resold on dark web forums as initial access for ransomware affiliates and SEO-poisoning operators.
2026 Year End Phishing Lures represents a seasonal social-engineering wave exploiting fiscal-year-close administrative noise. Attackers impersonate HR compensation notices, Q4 financial documents, DocuSign signing requests, SharePoint access reviews, and invoice follow-ups. The infrastructure — heavily concentrated on Japanese hosting (GMO Internet AS7506, NTT AS4713, J:COM AS4721) — supports credential-harvesting pages designed to capture corporate SSO identities. Targeted verticals (Finance, Technology, Telecommunications, Manufacturing, Real Estate, Aviation) align with organizations processing high volumes of year-end approvals, where a single captured credential enables BEC, wire fraud, or internal pivoting.
Collectively, these pulses reveal a credential-theft kill chain operating at both ends of the attack surface: end-user browsers and server-side administrative control panels.
Threat Actor / Malware Profile
Web Media Optimizer (TRUST#GRAFT)
- Distribution Method: Malicious JavaScript injected into legitimate/compromised websites; fake Cloudflare verification interstitials (ClickFix technique) tricking users into executing or approving attacker-controlled actions.
- Payload Behavior: Browser fingerprinting (canvas, user-agent, plugin enumeration), extraction of credentials and session tokens from browser storage, environment profiling to identify authenticated WordPress admin sessions.
- Persistence Mechanism: Server-side PHP backdoor written via the hijacked admin session (typically via theme/plugin editor or malicious plugin upload), enabling long-term web shell access independent of the original client compromise.
- C2 Communication: Outbound beacons to loader/exfiltration domains including
gerlace.com,caapman.me,okuneva.sbs, andvtevens.icu— note the abuse of low-reputation TLDs (.sbs, .icu). - Anti-Analysis Techniques: Conditional execution gated on fingerprint results (only firing the admin-pivot stage when a high-value session is detected), obfuscated JavaScript loaders, and disposable domain rotation.
Year-End Phishing Operation
- Distribution Method: Bulk email lures themed around raises, Q4 invoices, benefits enrollment, and IT access reviews; DocuSign and SharePoint impersonation pages.
- Payload Behavior: Credential-harvesting landing pages cloning Microsoft 365 / SSO portals; captured credentials staged for account takeover or resale.
- Infrastructure: Concentrated on JP hosting (AS7506 GMO, AS4713 NTT, AS4721 J:COM) with mix of compromised legitimate domains (
bvlbetonvloeren.be,tropical100.com.do,rsfashionsdesignbd.com) and throwaway registrations (englaus.sbs).
IOC Analysis
| Indicator Type | Count (sampled) | Examples | Operationalization |
|---|---|---|---|
| Domains | 7 | gerlace.com, caapman.me, okuneva.sbs, vtevens.icu, englaus.sbs | DNS sinkhole / proxy block; alert on resolution in DNS & proxy logs; retro-search 90 days |
| IPv4 | 4 | 157.7.189.101, 157.7.44.119, 118.20.84.128, 123.98.253.31 | Egress firewall block; correlate with web proxy and email gateway logs; flag AS7506/4713/4721 hosting for year-end lure pages |
| FileHash (MD5/SHA1/SHA256) | 4+ | 07955dcb5f4f80c90ede398879589f2e369eb2d84c4975d3c8adf08433783409 | EDR hash blocklist; scan web servers for matching PHP artifacts in wp-content, themes, and uploads directories |
SOC teams should operationalize via: (1) threat intel platform ingestion (MISP/OpenCTI) with automatic push to DNS firewall and secure web gateway; (2) retro-hunt across proxy, DNS, and email security logs for the domain set; (3) WordPress integrity scanning — diff core/theme/plugin PHP files against known-good, audit recently modified .php files in wp-content/uploads/, and review admin accounts created in the last 90 days; (4) email gateway retro-search for lure themes ("compensation adjustment", "Q4 invoice", "access review", "benefits statement") delivered from the listed IPs/domains.
Detection Engineering
---
title: TRUST#GRAFT Fake Cloudflare ClickFix JavaScript Loader Execution
id: 7c3a1f2e-9b41-4d6a-a8e5-2f1c9d4b6a01
status: experimental
description: Detects browser process spawning command interpreters or script hosts consistent with ClickFix-style fake verification lures and clipboard/paste-execution patterns observed in TRUST#GRAFT Web Media Optimizer campaigns.
author: Security Arsenal Threat Intelligence
date: 2026/10/24
references:
- https://www.securonix.com/blog/trust-graft-wordpress-admin-php-backdoor/
logsource:
category: process_creation
product: windows
detection:
selection_browser_parent:
ParentImage|endswith:
- '\chrome.exe'
- '\msedge.exe'
- '\firefox.exe'
- '\brave.exe'
selection_child:
Image|endswith:
- '\powershell.exe'
- '\pwsh.exe'
- '\cmd.exe'
- '\mshta.exe'
- '\wscript.exe'
- '\cscript.exe'
- '\rundll32.exe'
condition: selection_browser_parent and selection_child
falsepositives:
- Browser-based legitimate admin tooling (rare)
level: high
tags:
- attack.initial_access
- attack.t1189
- attack.t1204
- attack.t1059
---
title: TRUST#GRAFT PHP Backdoor Dropped Into WordPress Content Directories
id: 8d4b2f3a-1c52-4e7b-b9f6-3a2d0e5c7b12
status: experimental
description: Detects web server processes (php-fpm, apache, nginx, IIS worker) writing PHP files into WordPress content, uploads, theme, or plugin directories — consistent with TRUST#GRAFT abuse of authenticated admin sessions to deploy persistent PHP backdoors.
author: Security Arsenal Threat Intelligence
date: 2026/10/24
references:
- https://www.securonix.com/blog/trust-graft-wordpress-admin-php-backdoor/
logsource:
category: file_event
product: linux
service: webserver
detection:
selection_path:
TargetFilename|contains:
- '/wp-content/uploads/'
- '/wp-content/themes/'
- '/wp-content/plugins/'
- '/wp-includes/'
selection_ext:
TargetFilename|endswith: '.php'
filter_known:
TargetFilename|contains:
- '/wp-content/plugins/' # plugin installs write here legitimately; tune per CMS management workflow
condition: selection_path and selection_ext and not filter_known
falsepositives:
- Legitimate plugin/theme installations via WP admin panel — correlate with admin audit logs and change windows
level: high
tags:
- attack.persistence
- attack.t1505.003
- attack.t1100
---
title: Network Connection to TRUST#GRAFT or Year-End Phishing Infrastructure
id: 9e5c3a4b-2d63-4f8c-c0a7-4b3e1f6d8c23
status: experimental
description: Detects DNS resolution or outbound connection to domains associated with the TRUST#GRAFT loader C2 and the 2026 year-end phishing lure infrastructure published in OTX pulses.
author: Security Arsenal Threat Intelligence
date: 2026/10/24
logsource:
category: dns
product: windows
detection:
selection_domain:
query|contains:
- 'gerlace.com'
- 'caapman.me'
- 'okuneva.sbs'
- 'vtevens.icu'
- 'englaus.sbs'
- 'rsfashionsdesignbd.com'
- 'bvlbetonvloeren.be'
- 'tropical100.com.do'
condition: selection_domain
falsepositives:
- Threat research activity
level: critical
tags:
- attack.command_and_control
- attack.t1071.001
- attack.t1566
// Sentinel hunt: TRUST#GRAFT C2 + year-end phishing infrastructure + ClickFix browser-spawned execution
let SuspiciousDomains = dynamic(["gerlace.com","caapman.me","okuneva.sbs","vtevens.icu","englaus.sbs","rsfashionsdesignbd.com","bvlbetonvloeren.be","tropical100.com.do"]);
let SuspiciousIPs = dynamic(["157.7.189.101","157.7.44.119","118.20.84.128","123.98.253.31"]);
let ScriptHosts = dynamic(["powershell.exe","pwsh.exe","cmd.exe","mshta.exe","wscript.exe","cscript.exe","rundll32.exe"]);
let Browsers = dynamic(["chrome.exe","msedge.exe","firefox.exe","brave.exe"]);
union isfuzzy=true
(
DeviceNetworkEvents
| where TimeGenerated > ago(30d)
| where RemoteUrl has_any (SuspiciousDomains) or RemoteIP in (SuspiciousIPs)
| project HuntType="NetworkIOC", TimeGenerated, DeviceName, InitiatingProcessFileName, RemoteUrl, RemoteIP, RemotePort
),
(
DeviceProcessEvents
| where TimeGenerated > ago(30d)
| where InitiatingProcessFileName in~ (Browsers) and FileName in~ (ScriptHosts)
| project HuntType="ClickFixExecution", TimeGenerated, DeviceName, InitiatingProcessFileName, FileName, ProcessCommandLine, AccountName
),
(
DeviceFileEvents
| where TimeGenerated > ago(30d)
| where SHA256 in~ ("07955dcb5f4f80c90ede398879589f2e369eb2d84c4975d3c8adf08433783409","0a3cb24e0d0c05b544a3e32affe3ea8a4ed87c0cc90e918c10b94d3b849d76fa")
or MD5 in~ ("197f6a5103870ab3bb1a213f27a63c73")
| project HuntType="MalwareHash", TimeGenerated, DeviceName, FolderPath, FileName, SHA256
)
| sort by TimeGenerated desc
# Security Arsenal - TRUST#GRAFT & Year-End Phishing Host Hunt
# Run elevated on endpoints and (adapted paths) WordPress servers
$ErrorActionPreference = 'SilentlyContinue'
$Report = @()
# 1) Check DNS client cache for malicious domains
$badDomains = @('gerlace.com','caapman.me','okuneva.sbs','vtevens.icu','englaus.sbs','rsfashionsdesignbd.com','bvlbetonvloeren.be','tropical100.com.do')
$dns = Get-DnsClientCache | Where-Object { $n = $_.Name; $badDomains | Where-Object { $n -like "*$_*" } }
if ($dns) { $Report += [pscustomobject]@{Check='DNSCache'; Finding=($dns | Out-String)} }
# 2) Active/established connections to malicious IPs
$badIPs = @('157.7.189.101','157.7.44.119','118.20.84.128','123.98.253.31')
$conns = Get-NetTCPConnection -State Established | Where-Object { $_.RemoteAddress -in $badIPs }
if ($conns) { $Report += [pscustomobject]@{Check='NetConnections'; Finding=($conns | Select-Object LocalPort,RemoteAddress,RemotePort,OwningProcess | Out-String)} }
# 3) Hash sweep for known Web Media Optimizer payloads
$badHashes = @('07955dcb5f4f80c90ede398879589f2e369eb2d84c4975d3c8adf08433783409','0a3cb24e0d0c05b544a3e32affe3ea8a4ed87c0cc90e918c10b94d3b849d76fa')
$sweepPaths = @('C:\inetpub','C:\xampp\htdocs','C:\wamp64\www','C:\Users\Public\Downloads')
foreach ($p in $sweepPaths) {
Get-ChildItem -Path $p -Recurse -Include *.php,*.js,*.exe,*.dll -File | ForEach-Object {
$h = (Get-FileHash $_.FullName -Algorithm SHA256).Hash.ToLower()
if ($badHashes -contains $h) { $Report += [pscustomobject]@{Check='MalwareHash'; Finding=$_.FullName} }
}
}
# 4) WordPress PHP backdoor sweep: recently modified .php files in uploads (should be near-zero)
$wpRoots = @('C:\inetpub\wwwroot','C:\xampp\htdocs','/var/www/html')
foreach ($root in $wpRoots) {
if (Test-Path $root) {
Get-ChildItem -Path $root -Recurse -Include *.php -File |
Where-Object { $_.FullName -match 'wp-content\\uploads' -and $_.LastWriteTime -gt (Get-Date).AddDays(-90) } |
ForEach-Object { $Report += [pscustomobject]@{Check='UploadsPHP'; Finding="$($_.FullName) modified $($_.LastWriteTime)"} }
}
}
# 5) Persistence review: suspicious scheduled tasks & run keys spawned by browsers/script hosts
Get-ScheduledTask | Where-Object { $_.Actions.Execute -match 'powershell|mshta|wscript|cscript|rundll32' -and $_.TaskPath -notlike '\Microsoft*' } |
ForEach-Object { $Report += [pscustomobject]@{Check='ScheduledTask'; Finding="$($_.TaskName) -> $($_.Actions.Execute) $($_.Actions.Arguments)"} }
$runKeys = @('HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run','HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run')
foreach ($k in $runKeys) {
(Get-ItemProperty $k).PSObject.Properties | Where-Object { $_.Value -match 'powershell|mshta|wscript|appdata' } |
ForEach-Object { $Report += [pscustomobject]@{Check='RunKey'; Finding="$k\$($_.Name) = $($_.Value)"} }
}
if ($Report.Count -eq 0) { Write-Output '[+] No TRUST#GRAFT / phishing indicators found.' } else { $Report | Format-List }
Response Priorities
Immediate (0–4 hours)
- Block all listed domains and IPs at DNS firewall, secure web gateway, and egress firewall; sinkhole
gerlace.com,caapman.me,okuneva.sbs,vtevens.icu. - Push the SHA256/MD5 hashes to EDR blocklists and scan all WordPress servers for matching PHP artifacts.
- Audit every WordPress instance for unauthorized admin accounts, recently modified PHP in
wp-content/uploads/, and unexpected plugin/theme changes in the last 90 days. - Run the ClickFix process-ancestry hunt (browser → script host) across the fleet.
24 Hours
- Both campaigns are credential-theft operations: enforce forced password resets and MFA re-verification for any user who visited a flagged domain, and for all WordPress administrators organization-wide.
- Review IdP/SSO sign-in logs (Entra ID, Okta) for anomalous authentications following phishing-lure delivery windows; revoke active sessions and refresh tokens for exposed accounts.
- Retro-search email gateways for year-end lure subjects and purge undelivered copies; notify targeted users.
- Assume any harvested WordPress admin credential was used: rotate application passwords, API keys, and database credentials.
1 Week
- Harden WordPress: disable the built-in theme/plugin file editor (
DISALLOW_FILE_EDIT), enforce FIDO2 MFA for admins, restrict admin panel access by network allowlist, and deploy file-integrity monitoring on web roots. - Deploy ClickFix-aware controls: block browser-spawned script interpreters via EDR policy, and restrict
powershell.exe/mshta.exefor standard users. - Upgrade email defenses for seasonal lures: banner external emails referencing HR/finance actions, enforce DMARC reject, and add DocuSign/SharePoint lookalike-domain detection.
- Conduct targeted user awareness for finance/HR/IT staff on year-end compensation, invoice, and access-review phishing themes.
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.