Threat Summary
Five live pulses from AlienVault OTX converge on a single dominant theme: industrial-scale credential harvesting and extortion across supply chains, edge devices, and end users.
- PolinRider is conducting a multi-ecosystem software supply-chain campaign. Operators compromised a maintainer GitHub account to poison development builds of
visanduma/nova-two-factor— a Packagist package with 700,000+ downloads — and are replicating the technique across npm, PyPI, Go modules, and Chrome extensions using Git history rewriting to hide malicious commits. - Clop (TA505-adjacent) has returned to mass exploitation, weaponizing CVE-2026-12569 in PTC Windchill to drop a custom Java web shell/implant (tracked alongside DEWMODE and LEMURLOOT tooling) with built-in credential harvesting, database enumeration, and exfiltration — a purpose-built data-theft platform targeting manufacturing.
- Settra ransomware intrusions leverage VPN access or compromised credentials, then deploy MeshAgent RMM for persistence — a living-off-the-land pattern that bypasses many EDR allowlists.
- BlackHatSect0r && DXQRTXX, a French-speaking crew, exposed an operation server revealing a Go-based C2 platform (DXSCAN) that harvested 16,834 credentials from 726,989 hosts across 2.7 million queued domains — with an AI agent deliberately stripped of safety controls to automate exploitation of 8 known CVEs (F5 BIG-IP, Laravel, VMware vCenter, and others).
- A concurrent T-Mobile smishing campaign uses rotating
t-mobile.*.toplookalike domains and fake 18,400-point expiry lures to steal consumer credentials — a reminder that bulk credential harvesting feeds the same underground markets that seed enterprise initial access.
Collectively: initial access brokers and extortion crews are scaling credential theft through trusted developer ecosystems and internet-facing PLM/VPN infrastructure. Stolen credentials from consumer smishing and mass-scanning operations are fungible — they become tomorrow's enterprise VPN logins.
Threat Actor / Malware Profile
PolinRider (Supply-Chain Infostealer)
- Distribution: Compromised maintainer accounts on GitHub/Packagist; Git history rewriting to conceal malicious commits; cross-ecosystem replication (npm, PyPI, Go, Chrome extensions).
- Payload behavior: Malicious code injected into dev branches of legitimate packages; executes during dependency install/build; harvests developer machine credentials, tokens, SSH keys, and environment secrets.
- C2: IPv4 infrastructure on low-reputation ASNs (166.88.134.62, 23.27.13.135, 166.88.73.46, 193.247.144.38).
- Anti-analysis: Commit history rewriting removes forensic evidence; payloads ship only in development versions to avoid release-tag scrutiny.
Clop — LEMURLOOT / DEWMODE Web Implant
- Distribution: Mass exploitation of CVE-2026-12569 (PTC Windchill), consistent with prior MOVEit (CVE-2023-34362) and Accellion-era tradecraft.
- Payload behavior: Custom Java web shell with built-in credential harvesting and database enumeration — no follow-on tooling required; immediate data-theft capability for extortion-only campaigns.
- Persistence: Web shell resident on the application server; survives until patched/removed.
Settra Ransomware + MeshAgent
- Access: VPN exploitation or compromised credentials.
- Persistence: Legitimate MeshAgent RMM installed as a service; ransomware executables named after victim domains; recovery inhibition and BYOVD techniques observed.
DXSCAN (BlackHatSect0r && DXQRTXX)
- Go-based C2 tasking mass exploitation of CVE-2020-5902, CVE-2021-3129, CVE-2021-22986, CVE-2021-29447, CVE-2022-22947, CVE-2022-1388, CVE-2018-15133, CVE-2023-46747; vishing and cloud-storage exploitation augment the pipeline.
IOC Analysis
| Type | Examples | Operationalization |
|---|---|---|
| IPv4 (C2/exfil) | 166.88.134.62, 23.27.13.135, 193.247.144.38, 193.5.65.114 | Block at egress firewall/proxy; retro-hunt netflow and DNS logs 90 days |
| Hostnames (phishing) | t-mobile.biktpw.top, t-mobile.koxetp.top (+6 more) | DNS sinkhole; alert on any resolution; expect domain rotation — wildcard-watch t-mobile.*.top |
| File hashes (SHA256/SHA1/MD5) | 7d47c430…, 321e1fb0…, 71a7b6b8… | Load into EDR blocklists; cross-check package build artifacts and Windchill webroot |
| CVEs | CVE-2026-12569, CVE-2023-34362, CVE-2022-1388, CVE-2023-46747, CVE-2021-3129 | Emergency patch prioritization for Windchill, F5 BIG-IP, Laravel, VMware vCenter |
Tooling: Sigma rules deploy via your SIEM pipeline; IOCs ingest into MISP/ThreatConnect; hash lookups via VirusTotal Enterprise; package integrity verification via Socket.dev/Snyk for dependency tree auditing.
Detection Engineering
---
title: PolinRider Malicious Package Install and C2 Beaconing
id: a1f3c8d2-9e4b-4c7a-b6d1-2026091801
status: experimental
description: Detects developer workstation credential access followed by egress to known PolinRider C2 infrastructure after package manager execution.
author: Security Arsenal Threat Intel
references:
- https://socket.dev/blog/polinrider-github-packagist
logsource:
category: network_connection
product: windows
detection:
selection_ip:
DestinationIp:
- 166.88.134.62
- 23.27.13.135
- 166.88.73.46
- 193.247.144.38
filter_tools:
Image|endswith:
- '\svchost.exe'
- '\explorer.exe'
condition: selection_ip and not filter_tools
fields:
- Image
- DestinationIp
- DestinationPort
- User
falsepositives:
- Legitimate hosting providers on shared IP space
level: high
tags:
- attack.command_and_control
- attack.t1071
- attack.t1195.002
---
title: MeshAgent RMM Install as Persistence Mechanism (Settra Ransomware TTP)
id: b2e4d9f1-7a3c-4d8b-c5e2-2026091802
status: experimental
description: Detects installation or execution of MeshAgent RMM tooling, observed as Settra ransomware persistence. Tune to known-good RMM deployments.
author: Security Arsenal Threat Intel
references:
- https://www.huntress.com/blog/new-settra-ransomware-variant
logsource:
category: process_creation
product: windows
detection:
selection_img:
Image|endswith:
- '\MeshAgent.exe'
- '\meshagent.exe'
selection_service:
CommandLine|contains:
- 'meshagent'
- 'meshcentral'
condition: selection_img or selection_service
fields:
- Image
- CommandLine
- ParentImage
- User
falsepositives:
- Organizations legitimately using MeshCentral for remote management
level: medium
tags:
- attack.persistence
- attack.t1219
- attack.t1543.003
---
title: Clop LEMURLOOT Web Shell Activity on PTC Windchill Server
id: c3f5e0a2-8b4d-4e9c-d6f3-2026091803
status: experimental
description: Detects web server process spawning shells or database clients consistent with the Clop custom Windchill web shell implant (CVE-2026-12569).
author: Security Arsenal Threat Intel
references:
- https://reliaquest.com/blog/clop-returns-with-custom-implant-in-mass-extortion-campaign
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|endswith:
- '\java.exe'
- '\javaw.exe'
- '\tomcat.exe'
- '\w3wp.exe'
selection_child:
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\sqlcmd.exe'
- '\whoami.exe'
- '\net.exe'
condition: selection_parent and selection_child
fields:
- ParentImage
- Image
- CommandLine
- User
falsepositives:
- Application server maintenance scripts
level: critical
tags:
- attack.execution
- attack.t1505.003
- attack.t1190
// Multi-pulse hunt: PolinRider C2, Settra MeshAgent persistence, Clop web shell, smishing DNS
let PolinRiderC2 = dynamic(["166.88.134.62","23.27.13.135","166.88.73.46","193.247.144.38"]);
let SettraC2 = dynamic(["193.5.65.114"]);
let SmishingDomains = dynamic(["t-mobile.biktpw.top","t-mobile.cugbjl.top","t-mobile.cymfjd.top","t-mobile.gdikxv.top","t-mobile.hdzcnb.top","t-mobile.koxetp.top","t-mobile.nxdcfp.top","t-mobile.pkrbai.top"]);
let NetworkHits = DeviceNetworkEvents
| where TimeGenerated > ago(30d)
| where RemoteIP in (PolinRiderC2) or RemoteIP in (SettraC2) or RemoteUrl has_any (SmishingDomains)
| project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteIP, RemoteUrl, RemotePort;
let RMMHits = DeviceProcessEvents
| where TimeGenerated > ago(30d)
| where FileName =~ "MeshAgent.exe" or ProcessCommandLine has_any ("meshagent","meshcentral")
| project TimeGenerated, DeviceName, AccountName, FileName, ProcessCommandLine, InitiatingProcessFileName;
let WebShellHits = DeviceProcessEvents
| where TimeGenerated > ago(14d)
| where InitiatingProcessFileName in~ ("java.exe","javaw.exe","tomcat.exe","w3wp.exe")
| where FileName in~ ("cmd.exe","powershell.exe","sqlcmd.exe","whoami.exe","net.exe")
| project TimeGenerated, DeviceName, AccountName, InitiatingProcessFileName, FileName, ProcessCommandLine;
union NetworkHits, RMMHits, WebShellHits
| sort by TimeGenerated desc
# PolinRider / Settra / Clop host-hunt script — run via EDR live response or GPO
title = "Security Arsenal IOC Hunt - 2026-09-18"
$report = @()
# 1. Check active/recent connections to known C2 IPs
$c2 = @("166.88.134.62","23.27.13.135","166.88.73.46","193.247.144.38","193.5.65.114")
$conns = Get-NetTCPConnection -ErrorAction SilentlyContinue | Where-Object { $c2 -contains $_.RemoteAddress }
foreach ($c in $conns) { $report += "[C2-CONN] PID $($c.OwningProcess) -> $($c.RemoteAddress):$($c.RemotePort) state=$($c.State)" }
# 2. MeshAgent persistence: services, scheduled tasks, install dirs
$svc = Get-CimInstance Win32_Service -ErrorAction SilentlyContinue | Where-Object { $_.PathName -match "meshagent|meshcentral" }
foreach ($s in $svc) { $report += "[RMM-SVC] $($s.Name): $($s.PathName)" }
$tasks = Get-ScheduledTask -ErrorAction SilentlyContinue | Where-Object { $_.Actions.Execute -match "meshagent" }
foreach ($t in $tasks) { $report += "[RMM-TASK] $($t.TaskName)" }
foreach ($p in @("$env:ProgramFiles\Mesh Agent","$env:ProgramData\MeshAgent","C:\Program Files (x86)\Mesh Agent")) {
if (Test-Path $p) { $report += "[RMM-DIR] $p exists" }
}
# 3. PolinRider package artifact hashes in node_modules / vendor / build caches
$hashes = @("7d47c430e6e404dc2fa8b4837678d1cbdb4d0aeacec9b405655cab79d54a2ad9",
"b7ede935d4979146b55f12b9eec7c83b61962b478f5dc9b8db251e539ec2abd3",
"ccb187dc9de0cc7477c9817ae53365d273e121407c0305f863e2ab67c35d6395",
"139ea03dcddf4aa810d55740be3cf6c92ce7a9f3cbcbbb35440e25b769a87683",
"321e1fb01eb3462b48ff6ccdef132acc1182e3f7456548439f0d4ead12fd98bf")
$searchRoots = @("$env:USERPROFILE\source","$env:USERPROFILE\projects","D:\builds")
foreach ($root in $searchRoots) {
if (Test-Path $root) {
Get-ChildItem $root -Recurse -File -Include *.js,*.php,*.py,*.go -ErrorAction SilentlyContinue |
ForEach-Object {
$h = (Get-FileHash $_.FullName -Algorithm SHA256 -ErrorAction SilentlyContinue).Hash
if ($hashes -contains $h.ToLower()) { $report += "[MAL-HASH] $($_.FullName) sha256=$h" }
}
}
}
# 4. Web shell artifacts in common webroots (Windchill/Tomcat/IIS)
foreach ($wr in @("C:\inetpub\wwwroot","C:\Program Files\Apache Software Foundation","C:\ptc\Windchill")) {
if (Test-Path $wr) {
$recent = Get-ChildItem $wr -Recurse -Include *.jsp,*.jspx,*.aspx,*.war -ErrorAction SilentlyContinue |
Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-30) }
foreach ($f in $recent) { $report += "[WEB-NEW] $($f.FullName) modified $($f.LastWriteTime)" }
}
}
# 5. DNS cache check for smishing domains
$dns = Get-DnsClientCache -ErrorAction SilentlyContinue | Where-Object { $_.Entry -match "t-mobile\..*\.top" }
foreach ($d in $dns) { $report += "[PHISH-DNS] $($d.Entry) -> $($d.Data)" }
if ($report.Count -eq 0) { "No hits. Host appears clean for 2026-09-18 IOC set." }
else { $report | Sort-Object }
Response Priorities
Immediate (0–4 hours)
- Block all five C2 IPs at egress firewall, proxy, and EDR network protection; sinkhole the eight
t-mobile.*.topsmishing domains and alert on anyt-mobile.*.topDNS pattern. - Push the six file hashes into EDR blocklists; scan build caches, artifact repositories, and developer workstations.
- Audit
composer.lock/dependency manifests forvisanduma/nova-two-factordevelopment-branch pulls; check Git history for rewritten commits (git log --all, reflog anomalies, force-push events). - Inventory PTC Windchill exposure; if internet-facing and unpatched against CVE-2026-12569, isolate now.
24 Hours
- Credential rotation: PolinRider, DXSCAN, and the Clop implant all harvest credentials at scale. Force rotation for developer secrets (SSH keys, API tokens, CI/CD secrets), VPN credentials, and any service accounts on Windchill hosts. Revoke active sessions.
- Search IdP/VPN logs for anomalous authentications correlating with the smishing campaign window (May–September 2026) — harvested consumer creds often overlap with corporate reuse.
- Audit installed RMM tooling against an approved list; remove unauthorized MeshAgent and investigate who installed it.
- Patch F5 BIG-IP (CVE-2020-5902, CVE-2021-22986, CVE-2022-1388, CVE-2023-46747), Laravel (CVE-2021-3129, CVE-2018-15133), and VMware vCenter (CVE-2021-29447) — DXSCAN is mass-scanning these today.
1 Week
- Supply-chain hardening: Enforce signed commits and 2FA for all maintainers; pin dependencies to release versions with hash verification; deploy dependency-firewall tooling (Socket, Snyk) to block typosquatted or freshly modified packages.
- RMM allowlisting: Implement application control (WDAC/AppLocker) permitting only sanctioned remote-management tools — RMM abuse is now standard ransomware tradecraft.
- Edge/PLM segmentation: Move Windchill and similar PLM systems behind VPN/ZTNA; add virtual patching via WAF for CVE-2026-12569 until vendor patch is deployed and validated.
- Deploy the Sigma rules and KQL query above into production detections with tuned allowlists; run retro-hunts across 90 days of network telemetry.
Related Resources
Security Arsenal Incident Response Managed SOC & MDR Services AlertMonitor Threat Detection From The Dark Side Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.