GBHackers

Modular Phishing Kit Uses GitHub Pages to Steal Payment Card Details and Passwords


A sophisticated, long-running phishing operation has evolved into a serverless, modular campaign that weaponizes GitHub Pages to harvest payment card data, credentials, and customer identifiers from banking customers in Mexico.

The campaign’s architecture centers on a phishing kit containing a selector panel that operators use to generate institution-specific landing pages.

Those landing pages impersonate at least a dozen financial institutions, supporting both desktop and mobile interfaces to maximize victim engagement.

Rather than relying on a single domain, operators deployed the kit across more than a hundred GitHub Pages repositories, each publishing cloned pages under varied directory paths (for example /cancelacion/, /soporte/, /mb1/) to increase redundancy, evade takedown, and enable rapid redeployment when individual repositories are removed.

Group-IB researchers have attributed the campaign persistence, scale, and operational discipline to a reusable phishing kit that combines distributed GitHub Pages hosting, obfuscated client-side scripts, and third-party APIs most notably SheetBest to exfiltrate stolen data.

Technically, the attack flow is multi-stage. Victims are lured to a trust-building impersonation page and then redirected to credential-harvesting forms that mimic legitimate banking login workflows.

Modular Phishing Kit Uses GitHub Pages

The pages attach JavaScript submit listeners that call e.preventDefault(), serialize form field values into JSON, and POST them to SheetBest API endpoints.

Those requests populate attacker-controlled Google Sheets in real time, eliminating the need to maintain command-and-control servers.

Group-IB identified several SheetBest endpoints associated with the campaign, all resolving to the same backend IP, and observed identical submission logic reused across multiple templates strong indicators of a centralized, serverless exfiltration backend supporting a many-to-one data collection model.

Impersonation landing pages targeting financial institutions (Source : GroupIB).

To complicate detection, phishing pages load obfuscated external JavaScript through randomized paths rather than embedding logic directly in HTML.

Payload rotation is possible without changing the visible page, undermining signature-based detection. Some instances also used hardcoded Telegram bot tokens and chat IDs to forward stolen credentials in real time, illustrating operational flexibility in exfiltration channels.

Repository metadata and commit histories reveal active maintenance by multiple operator accounts over more than a year, with continuous commits, template updates, and endpoint rotations.


Hardcoded Telegram bot token and chat ID embedded in phishing JavaScript  (Source : GroupIB).
Hardcoded Telegram bot token and chat ID embedded in phishing JavaScript (Source : GroupIB).

Deployment leveraged Jekyll-based GitHub Pages builds and GitHub Actions for automation, and pages included Open Graph metadata to craft convincing link previews for messaging apps.

A robots noindex,nofollow directive confirmed these pages were not intended for organic discovery but for targeted distribution via SMS, WhatsApp, Telegram, or social media, where link previews can substantially increase click-through rates.

This campaign underscores a maturing trend: threat actors are abusing reputable cloud platforms’ trust, HTTPS, and deployment ease to conduct resilient phishing at scale.

By exploiting services like GitHub Pages and SheetBest, attackers reduce their infrastructure footprint and complicate attribution and takedown efforts.

For defenders, the implications are clear traditional blocklists and domain blacklisting are insufficient.

Financial institutions and security teams must prioritize behavioral detections, continuous monitoring for brand impersonation across developer and hosting platforms, rapid takedown coordination with service providers, and sector-wide intelligence sharing.

Indicators of Compromise (IOCs)

#HostnameCount
1soporte-index25.github[.]io2
2soporte-index09.github[.]io2
3sntdr-soporte25.github[.]io1
4sntdr-soporte25.github[.]io1
507-soporte.github[.]io2
6soporte2507.github[.]io2
7soporte160625.github[.]io3
8soporte250324.github[.]io2
9soporte74.github[.]io4
10soporte-bm1.github[.]io1
11soporte-r5.github[.]io3
12api.sheetbest.com2
13soporte0625.github[.]io2
14soporte200525.github[.]io2
15soporte2650.github[.]io1
16soporte-bn1.github[.]io1
17soporte-b2.github[.]io1
18soporte-index.github[.]io2
19soporte-c1.github[.]io1
20soporte-b4.github[.]io1
21sntndr25-soporte.github[.]io2
22sntndr-soporte0825.github[.]io2
230825-soporte.github[.]io2
24soporte-07-25.github[.]io2
25soporte-0725.github[.]io2
260725soporte.github[.]io2
27soporte0725-3.github[.]io2
28soporte0725.github[.]io2
29soporteyatencionf.github[.]io2
300725-soporte.github[.]io2
31soporte-y-atencion.github[.]io1
32soporter03.github[.]io1
33respaldo94.github[.]io2
34soporte-index05.github[.]io1
35soporte-b1.github[.]io1
36soporte0625.github[.]io2
37soporte250324.github[.]io2
38fldsmdfr-94.github[.]io2
39support-vh.github[.]io1

Note: IP addresses and domains are intentionally defanged (e.g., [.]) to prevent accidental resolution or hyperlinking. Re-fang only within controlled threat intelligence platforms such as MISP, VirusTotal, or your SIEM.

Follow us on Google News, LinkedIn, and X to Get Instant Updates and Set GBH as a Preferred Source in Google.



Source link