Fake GlobalProtect MSI Targets Myanmar Using Cloudflare and Google Sheets as C2
Unsigned fake GlobalProtect MSI targets Myanmar via geolocation guardrail, using Cloudflare Workers for config delivery and Google Sheets API as C2 channel with command execution capability. The MSI installs an unsigned x64 executable that queries ip-api.com for geolocation and checks for Myanmar. On match, it contacts a Cloudflare Worker gate at /config0 with an X-Bot-Secret header to retrieve Google service-account credentials. It then authenticates to Google OAuth, reads and updates Google Sheets cells as a C2 channel. Command execution via hidden cmd.exe exists in code but was not observed at runtime.
Detection / Hunteropenrouter
Immediate Actions
- Block sheets-config-gate.hewlett-pack1.workers.dev at network egress
- Hunt for MSI and executable SHA-256 hashes across endpoint fleet
- Isolate hosts with GlobalProtectVPN RunOnce values referencing unsigned executable
- Remove scheduled task GlobalProtectVPNUpdate if referencing unsigned binary
Key Takeaways
- AES-256-CBC config decryption uses SHA-256 of string 'AmountOfFreeDiskSpace' as key
- Nine numbered Worker hosts hewlett-pack1 through 9; only host 1 DNS-observed
- Device identifier marker '-tk-' used for persistent victim tracking across sessions
- Sheet1 columns A-D map to device ID, victim IP, command queue, and result output
- Build and MSI package timestamps differ by only 18 seconds (2026-08-19 06:08:59 UTC)
Attack Chain
- Initial Access: Phishing email links to Google Sites page offering fake GlobalProtect download
- Execution: Unsigned MSI installs GlobalProtect.exe via /Install custom action
- Persistence: RunOnce registry keys and scheduled task GlobalProtectVPNUpdate created
- Reconnaissance: Queries ip-api.com for geolocation; activates only if country is Myanmar
- C2 Config: Contacts Cloudflare Worker gate at /config0; receives Google service-account credentials
- C2 Channel: Authenticates to Google OAuth; polls Google Sheets cells for commands and writes results
Affected Systems
- Windows x64 systems
- Organizations operating in Myanmar
- Users expecting Palo Alto GlobalProtect VPN
Detection Availability
- Published: YARA
- Platforms: Malware INFO article
YARA hunting rule published in article combining gate path, header, Sheets ranges, and campaign markers.
Detection Engineering Assessment
Hypotheses are starting points derived from the article, not findings about your environment; validate against your own telemetry.
| Dimension | Rating | Rationale |
|---|---|---|
| EDR Visibility | Medium | Process creation, file writes, and registry changes visible; HTTPS C2 content not inspectable. |
| Network Visibility | Low | Only ip-api.com request in cleartext; C2 over HTTPS to legitimate Google and Cloudflare services. |
| Detection Difficulty | Hard | C2 blends with legitimate Google and Cloudflare traffic; requires correlated behavioral chain analysis. |
Hunting Hypotheses
| Hypothesis | Telemetry | Stage | FP Risk |
|---|---|---|---|
| Unsigned executables named GlobalProtect.exe making HTTP requests to ip-api.com followed by workers.dev DNS resolution (T1036.005, T1016.001) | Process network connections and DNS logs | Reconnaissance | Low — rare correlation chain |
| Processes resolving *.workers.dev subdomains then contacting Google OAuth or Sheets APIs within short timeframe (T1102) | DNS and proxy logs with process correlation | Command and Control | Medium — legitimate dev workflows may match |
| GlobalProtect.exe spawning cmd.exe with CREATE_NO_WINDOW flag and inherited pipes for stdout/stderr capture (T1059.003) | Process creation logs with command line and flags | Execution | Low — unusual for VPN software |
| RunOnce registry values or scheduled tasks referencing GlobalProtect.exe under non-standard install path (T1547.001, T1053.005) | Registry and Task Scheduler event logs | Persistence | Low — specific value and task names |
Required Log Sources
- Sysmon EID 1 process creation
- Sysmon EID 11 file creation
- Sysmon EID 12/13 registry modification
- DNS query logs
- Proxy logs with user-agent strings
- Windows Task Scheduler EID 4698
Key Behavioral Indicators
- Unsigned GlobalProtect.exe under C:\Program Files\PaloAlto\GlobalProtect VPN
- SheetsBot/1.0 user agent requesting ip-api.com/json
- DLL files written beside GlobalProtect.exe in application directory
- GlobalProtect.exe /Install invoked from MSI custom action
- Process contacting workers.dev then Google OAuth/Sheets APIs
- GlobalProtectVPN RunOnce values or GlobalProtectVPNUpdate scheduled task
Control Gaps
- TLS inspection cannot reveal Google Sheets C2 traffic content
- Legitimate cloud services may be allowlisted in proxy rules
- Geolocation guardrail prevents sandbox detonation outside Myanmar
- Unsigned MSI may execute if filename-based trust is configured
False Positive Assessment
Medium — legitimate GlobalProtect software, Google APIs, and Cloudflare Workers are widely used; correlation with unsigned executable, SheetsBot user agent, and campaign markers required.
Recommendations
Suggestions to evaluate against your own environment, tooling, and incident-response procedures — not directives.
Infrastructure Hardening
- Block unsigned MSI packages from executing via AppLocker or WDAC
- Alert on SheetsBot/1.0 user agent in proxy and web gateway logs
- Monitor Google OAuth token requests from non-browser processes
- Restrict outbound *.workers.dev traffic where not business-required
User Protection
- Validate VPN client downloads against vendor official distribution channel
- Verify Authenticode signatures before installing any VPN software
- Report unsolicited GlobalProtect download links to security team
Security Awareness
- Train staff to verify software sources before installation
- Warn about fake VPN installer phishing targeting Myanmar organizations
MITRE ATT&CK Mapping
Initial Access
Execution
Persistence
Stealth
Discovery
Command and Control
Plain-Language Summary
Attackers sent fake VPN software to organizations in Myanmar. The software pretended to be Palo Alto Networks GlobalProtect but was actually a backdoor that checked the victim's location and only activated in Myanmar. It used Google Sheets, a normal spreadsheet service, as a hidden channel to receive commands. Organizations should verify all software downloads come from official vendor sources and check for the specific file hashes and indicators listed in this report.
Additional IOCs
- Urls:
/config0- Worker configuration endpoint path for C2 gate
- File Hashes:
811af66dd7e323a74db80648610bbeb956093ae7bd91c5b950ed6aca13d8026(SHA256) - bcrypt.dll copy placed beside executable in install dirc692af3f8741669cd1b517c461e80bce19ad6e8608c81066cde9786f17be0099(SHA256) - CRYPT32.dll copy placed beside executable in install dir948589c349b0205ff73c7049b0d2e5c4faffb64271c64ee0033e384f61cf51d6(SHA256) - WININET.dll copy placed beside executable; no embedded signature8a680fcc160c352ed2d9b96654e50bf0f5f504141828aa50b75b970f46f3f170(SHA256) - paloalto.png branding resource embedded in MSI
- File Paths:
C:\Program Files\PaloAlto\GlobalProtect VPN\GlobalProtect.exe- Deceptive installation path for fake GlobalProtect executable
- Command Lines:
- Purpose: Install the malicious MSI package and trigger executable | Tools:
msiexec,GlobalProtect.exe| Stage: Execution |GlobalProtect.exe /Install
- Purpose: Install the malicious MSI package and trigger executable | Tools:
- Other:
{49CB5141-CEC5-4324-BB91-E2D843CD4DE1}- MSI ProductCode for clustering and package identification{BF73E425-31E9-4F43-AFA3-B928117CAEA2}- MSI UpgradeCode for clustering and package identification101714939433347726433- Google client ID associated with recovered service accountelliptical-tree-505904-p7- Google Cloud project ID used by malware for Sheets C2-tk-- Device identifier marker embedded in generated persistent IDX-Bot-Secret- Gate authentication header name sent to Cloudflare WorkerSheetsBot/1.0- Campaign user agent used for ip-api and Worker requestsGlobalProtectVPNUpdate- Scheduled task name for persistence via Task Schedulersheets-config-gate.hewlett-pack{1..9}.workers.dev- Numbered Worker family; hosts 2-9 memory-observed only
- domainsheets-config-gate[.]hewlett-pack1[.]workers[.]devDNS-observed Cloudflare Worker C2 configuration gate
- file_pathC:\ProgramFiles\PaloAlto\GlobalProtectVPN\GlobalProtect.exeDeceptive installation path for fake GlobalProtect executable
- registry_keyHKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce\GlobalProtectVPNPersistence RunOnce value referencing installed executable
- registry_keyHKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce\GlobalProtectVPNPersistence RunOnce value referencing installed executable
- sha25633d696728101c9caf6ebb215ba176bbb94e5cc16218b574029b622fd6e3bee8cEmbedded unsigned x64 executable with C2 logic
- sha2568a680fcc160c352ed2d9b96654e50bf0f5f504141828aa50b75b970f46f3f170paloalto.png branding resource embedded in MSI
- sha256948589c349b0205ff73c7049b0d2e5c4faffb64271c64ee0033e384f61cf51d6WININET.dll copy placed beside executable; no embedded signature
- sha256a124caa58d956c7430ecb8772a3794266235917670c5b56564342bd1456897e7Unsigned MSI installer package delivering fake GlobalProtect
- sha256c692af3f8741669cd1b517c461e80bce19ad6e8608c81066cde9786f17be0099CRYPT32.dll copy placed beside executable in install dir