Fake GlobalProtect Installer Uses Myanmar Geofencing and Google Sheets C2

Summary
Researchers traced an unsigned, GlobalProtect-themed MSI through Myanmar geofencing and Google Sheets tasking to a follow-on payload. The evidence supports malware activity but does not establish attribution to SideWinder or another actor.
Key points
- An email link led to a Google Sites page impersonating a GlobalProtect download portal; the unsigned MSI installed a standalone executable with deceptive Palo Alto-themed metadata.
- The executable checked public-IP geolocation and continued when the result indicated Myanmar, then used a Cloudflare Worker configuration gate and Google service-account OAuth.
- One session read and updated Google Sheets cells and polled an empty command cell. A separate session retrieved tasking, launched a Windows shell child, collected 628 bytes of output, and attempted to submit results.
- The recovered command requested NGXPckg.exe from cctvcam[.]serveblog[.]net; researchers found the follow-on file in the analysis VM and confirmed its identity.
- NGXPckg.exe used a five-minute delay, a Myanmar location check, and GitHub-based configuration and tasking. The investigation reports active runtime paths but does not verify every embedded fallback or remote repository mutation.
- The analysis provides sample hashes, infrastructure pivots, persistence details, and YARA hunting rules, while cautioning that shared cloud services should not be blocked globally.
- SideWinder is described as a lead for further investigation, not a confirmed attribution; the evidence does not establish the operator or a link to other named malware families.
Article Details
- Attack Vectors
- An incident-reported email link led to a Google Sites page impersonating a GlobalProtect download portal and offering an unsigned MSI.
- The MSI launched its embedded executable through a custom action and configured RunOnce entries; separate code and host artifacts identified a scheduled task.
- The first-stage executable continued only after a Myanmar geolocation match, received Google service-account configuration through a Cloudflare Worker, and used spreadsheet cells for identifiers, metadata, tasking, and results.
- A later session retrieved encrypted spreadsheet tasking and launched a hidden command shell running curl to download the follow-on executable.
- The follow-on payload implemented delayed execution, another Myanmar gate, raw GitHub configuration discovery, and GitHub Contents API command and result exchange.
- Defensive Notes
- Validate installer signatures, actual publishers, and approved distribution routes rather than trusting product branding or familiar hosting platforms.
- Correlate executable hashes, the deceptive installation directory, GlobalProtectVPN RunOnce entries, and the GlobalProtectVPNUpdate scheduled task.
- Hunt for SheetsBot/1.0 geolocation requests followed by the exact Worker hostname and Google OAuth or Sheets traffic from the same unsigned executable.
- Investigate GlobalProtect.exe spawning cmd.exe /c curl and creation of NGXPckg.exe under C:\ProgramData\USOShared.
- Correlate the follow-on executable with its approximately five-minute delay, specific GitHub resources, authenticated PUT followed by same-path GET, and a 16-byte write to %LOCALAPPDATA%\TM87945.
- Do not globally block shared Google, Cloudflare, GitHub, or geolocation services, or common Windows DLL names, based on their appearance in this chain.
- Preserve volatile evidence securely during incident response. Memory captures can contain private keys, access tokens, personal data, and decrypted content and should not be uploaded to public services.
- Treat successful request API returns as distinct from verified remote changes. The traced spreadsheet result write and GitHub PUT did not independently establish remote persistence, and the final GitHub response artifact had unreliable lineage.
Indicators of compromise
| Type | Indicator | Context |
|---|---|---|
| HOSTNAME | sheets-config-gate[.]hewlett-pack1[.]workers[.]dev | Malware configuration-gate hostname resolved in retained packet captures; other numbered family members were observed only in process memory. |
| IPV4 | 5[.]230[.]254[.]220 | Alternate C2 endpoint recovered from the follow-on payload's encrypted configuration; runtime use was not observed. |
| SHA256 | 2fd4df25928fa2239d40696c67e638ddb1e10a070a3d9726864a498f68d8559a | Unsigned NGXPckg.exe follow-on payload copied from the VM deployment and independently reacquired from the recovered delivery URL. |
| SHA256 | 33d696728101c9caf6ebb215ba176bbb94e5cc16218b574029b622fd6e3bee8c | Unsigned embedded GlobalProtect.exe implementing Myanmar-gated configuration retrieval and Google Sheets command exchange. |
| SHA256 | a124caa58d956c7430ecb8772a3794266235917670c5b56564342bd1456897e7 | Unsigned deceptive GlobalProtect.msi installer containing the first-stage backdoor. |
| URL | hxxps[:]//api[.]github[.]com/repos/faviconicons2/images/contents/License | Specific GitHub command-channel resource that returned the Readme9823 repository-selection marker to NGXPckg.exe. |
| URL | hxxps[:]//api[.]github[.]com/repos/faviconicons2/images/contents/ljrxpCM6T630uiZt/QWRtaW4%20.txt | Specific per-run GitHub resource used for an authenticated malware PUT and subsequent same-path GET; remote mutation was not verified. |
| URL | hxxps[:]//cctvcam[.]serveblog[.]net/weblogin/ngxpkg | NGXPckg.exe delivery URL recovered from encrypted spreadsheet tasking and independently used by researchers to reacquire the payload. |
| URL | hxxps[:]//raw[.]githubusercontent[.]com/thetcoregorup1/collection/refs/heads/main/infosource45 | Specific GitHub-hosted bootstrap configuration resource from which the follow-on payload received 65 bytes. |
| URL | hxxps[:]//raw[.]githubusercontent[.]com/thetcoregorup1/collection/refs/heads/main/Readme12 | Specific GitHub-hosted malware discovery resource that returned the Test1234 marker during the follow-on payload trace. |
MITRE ATT&CK
T1016.001 · Internet Connection DiscoveryBoth stages requested public-IP geolocation information and used the returned Myanmar country information as an activation condition.T1027 · Obfuscated Files or InformationThe first-stage operational constants and spreadsheet command material were AES-256-CBC encrypted; NGXPckg.exe also stored encrypted configuration.T1036.005 · Match Legitimate Resource Name or LocationThe unsigned installer and executable used GlobalProtect naming, branding, and PaloAlto-themed package metadata despite implementing unrelated backdoor behavior.T1053.005 · Scheduled TaskCode and host artifacts identified a GlobalProtectVPNUpdate scheduled task with an action referencing GlobalProtect.exe.T1059.003 · Windows Command ShellThe later GlobalProtect.exe trace recorded successful creation of a hidden cmd.exe /c curl child and collection of 628 bytes from its output pipe.T1071.001 · Web ProtocolsHTTP and HTTPS requests carried geolocation, Worker configuration, Google OAuth and Sheets operations, and GitHub discovery and Contents API traffic.T1102 · Web ServiceThe first stage used a Cloudflare Worker for configuration and Google Sheets for tasking and results; NGXPckg.exe used specific GitHub resources for discovery and command-channel exchanges.T1105 · Ingress Tool TransferRecovered spreadsheet tasking downloaded NGXPckg.exe to C:\ProgramData\USOShared; researchers copied the deployed file and independently reacquired it from the same URL.T1140 · Deobfuscate/Decode Files or InformationThe first stage derived an AES key from SHA-256 of AmountOfFreeDiskSpace to decode configuration and tasking; NGXPckg.exe decoded Base64 configuration and decrypted it with an embedded AES key.T1218.007 · MsiexecThe Windows Installer package configured an executable custom action, and the installation trace recorded GlobalProtect.exe /Install running.T1497.003 · Time Based ChecksNGXPckg.exe implemented an approximately five-minute CPU-intensive delay, consistent with the interval before its first exact runtime API observation.T1547.001 · Registry Run Keys / Startup FolderThe MSI defined GlobalProtectVPN RunOnce values under HKCU and HKLM pointing to the installed executable.T1566.002 · Spearphishing LinkThe private incident report describes an email link leading to a Google Sites page offering the deceptive installer.
Threat Actors
Malware
DellHeuristics.exeEven exact protocol overlap between NGXPckg.exe and DellHeuristics.exe does not establish common code lineage, an operator, or a campaign.Fake GlobalProtectinvisible.” Several publicly documented malware families used this general model before the Fake GlobalProtect sample analyzed here.NGXPckg.exeThe command requested NGXPckg.exe from cctvcam[.]serveblog[.]net and wrote it to C:\programData\USOShared\NGXPckg.exe.
Vendors
CloudflareIt then reaches a numbered Cloudflare Worker, receives Google service-account material and uses Google Sheets as a row-oriented command channel: column A holds identifiers used for row lookup, B stores geolocation dataGitHubThe resulting follow-on payload waits about five minutes, checks for a Myanmar location, discovers configuration through raw GitHub content and uses the GitHub Contents API for tasking and result transfer.GoogleThe case began with an email link and a Google Sites page made to look like a Palo Alto Networks GlobalProtect download portal.
Products
Cloudflare Workersbackdoor built around services that defenders normally expect to see: Google Sites for delivery, Cloudflare Workers for configuration, Google OAuth and Sheets for first-stage command exchange, and GitHub for theGlobalProtectThe case began with an email link and a Google Sites page made to look like a Palo Alto Networks GlobalProtect download portal.Google SheetsIt then reaches a numbered Cloudflare Worker, receives Google service-account material and uses Google Sheets as a row-oriented command channel: column A holds identifiers used for row lookup, B stores geolocation dataGoogle SitesThe case began with an email link and a Google Sites page made to look like a Palo Alto Networks GlobalProtect download portal.
Tools
IDAThe matching IDA database and decompiler output support the following offline findings:MalwareINFO Deep API TraceMalwareINFO Deep API Trace, Process Memory Capture, and Payload & Memory Analyzer exports;MalwareINFO Payload & Memory AnalyzerMalwareINFO Payload & Memory Analyzer then examined the dump locally under a static-only safety contract.MalwareINFO Process Memory CaptureThe debugger targeted PID 4408; three MalwareINFO Process Memory Capture manifests bind the captures to the same process-creation identity, executable path, architecture and executable SHA-256Process MonitorProcess Monitor host activity from installation and direct execution;YARADefensive YARA hunting rules