Developers in the Crosshairs: Fake AI Tools Deliver Infostealer

Developers in the Crosshairs: Fake AI Tools Deliver Infostealer
Netskope Threat Labs reported a NodeJS-based MaaS infostealer campaign delivered through ClickFix and trojanized GitHub repositories that impersonated AI and developer resources. The operation used a multi-stage SmartLoader chain with EtherHiding on the Polygon blockchain to resolve C2 at runtime and targeted developers across North America, Asia, and Southern Europe. #NetskopeThreatLabs #SmartLoader #EtherHiding #Polygon #ClickFix #Claude #ComfyUI #GitHub

Keypoints

  • Attackers delivered a Windows-based MaaS infostealer through ClickFix social engineering and cloned GitHub repositories.
  • The campaign impersonated AI-related resources and developer tools, including Claude, ComfyUI, Python security guides, and Rust frameworks.
  • SmartLoader was used in a redundant multi-stage loader chain, with Stage 1 and Stage 2 both resolving C2 via EtherHiding.
  • Both loaders queried a Polygon smart contract at runtime, allowing the attackers to change the C2 IP address without changing malware code.
  • The payload was hidden in modular archives containing LuaJIT components, batch scripts, and obfuscated Lua code in text files.
  • Prometheus was used to obfuscate Stage 1 Lua code, while Stage 2 was consistent with MoonSec V3 obfuscation.
  • Victims were mainly in North America, Asia, and Southern Europe, with financial services, banking, and technology among the most targeted sectors.

MITRE Techniques

  • [T1566.002 ] Phishing: Spearphishing Link – Victims were lured through impersonated GitHub repositories and ClickFix-style delivery links (‘delivering payloads via impersonated GitHub repositories hosting popular AI resources’).
  • [T1189 ] Drive-by Compromise – The attackers redirected download links inside trusted-looking GitHub pages to deliver malicious payloads (‘modifying the URLs on the installation instructions’).
  • [T1105 ] Ingress Tool Transfer – Stage 2 downloaded the next payload and supporting components from GitHub repositories (‘instructed to download the second-stage Lua script stager file along with a bundled LuaJIT interpreter and DLL runtime’).
  • [T1027 ] Obfuscated Files or Information – The Lua payloads were heavily obfuscated with Prometheus and MoonSec (‘obfuscated using Prometheus’ and ‘likely obfuscated using MoonSec’).
  • [T1027.016 ] Binary Padding – The stage 2 payload used a pump setting to alter file size and evade detection (‘pump’: {‘size’: 700, ‘status’: true}).
  • [T1055 ] Process Injection – Not explicitly used; no clear process injection was described in the article.
  • [T1106 ] Native API – The malware used Windows APIs such as GetSystemMetrics, CreateDIBSection, BitBlt, and CreateProcessW to collect data and launch stages (‘uses GetSystemMetrics … CreateProcessW directly’).
  • [T1082 ] System Information Discovery – SmartLoader gathered victim IP, country, city, time zone, ISP, and OS version (‘retrieve the victim’s IP address, country, city, time zone, and ISP’).
  • [T1113 ] Screen Capture – SmartLoader captured the victim’s screen using GDI APIs (‘takes a screenshot of the victim’s device using the GDI API’).
  • [T1102 ] Web Service – The loader used ip-api.com and public RPC providers as external services for geolocation and C2 resolution (‘sending a GET request to ip-api.com/json’ and ‘hardcoded public RPC providers’).
  • [T1568.001 ] Dynamic Resolution: Fast Flux DNS – Not directly DNS-based; C2 was dynamically resolved via blockchain instead of DNS (‘resolve the IP address at runtime’).
  • [T1001 ] Data Obfuscation – The beacon and C2 response were XOR-encrypted to hide traffic content (‘XOR-encrypted JSON beacon’).
  • [T1098 ] Account Manipulation – Attackers cloned and impersonated GitHub accounts to host payloads (‘We identified two GitHub accounts serving identical payloads’).
  • [T1053.005 ] Scheduled Task/Job: Scheduled Task – Persistence was established using a scheduled task (‘used a scheduled task for persistence’).
  • [T1204.002 ] User Execution: Malicious File – Execution depended on the victim running the downloaded archive and scripts (‘when the batch script runs compiler.exe with gc.txt as an argument’).

Indicators of Compromise

  • [Domains/URLs ] Public RPC and download infrastructure – ip-api.com/json, polygon.drpc.org, polygon.publicnode.com, rpc-mainnet.matic.quiknode.pro, polygon-mainnet.gateway.tatum.io, polygon-public.nodies.app
  • [IP addresses ] Blockchain-resolved C2 and victim data collection – stager IP address resolved from Polygon smart contract, public IP collected in the beacon
  • [GitHub URLs ] Payload hosting and task links – https://github[.]com/yawalinte/80/raw/refs/heads/main/ae.log, https://github.com/JuliusMAAR/gpt-re/raw/refs/heads/main/re0.log, and https://github.com/JuliusMAAR/gpt-re/raw/refs/heads/main/re1.log
  • [Smart contract / blockchain reference ] EtherHiding C2 resolver – 0x1823A9a0Ec8e0C25dD957D0841e3D41a4474bAdc, method selector 0x3bc5de30 on Polygon
  • [File names ] Malicious archive contents and stage components – lua51.dll, compiler.exe, Application.bat, gc.txt, 7d7752.exe, dist.lua
  • [Account names ] Malicious GitHub accounts hosting payloads – yawalinte, JuliusMAAR, and other reported accounts
  • [Detection names ] Vendor detections associated with the campaign – Trojan.DeceptiveDevelopment.32, Generic.JS.ContagiousInterview.C., Win32.Trojan.FakeGit, Trojan.Lua.Agent


Read more: https://www.netskope.com/blog/developers-in-the-crosshairs-fake-ai-tools-deliver-infostealer