Kort samengevat: msclairty-typosquat met rtkclickid-store-verwijdering en pub=twsc affiliate-cookie-stuffing
- Iedereen draait threat feeds en blocklists, maar msclairty.com had nul VirusTotal-detecties over meer dan 90 engines, geen urlscan- of Safe Browsing-dekking en gaf elke AI-tool en datacenter-IP die vroeg een 403, dus de feed die je betaalt is de tool waar de aanvaller al omheen liep.
- cside markeerde msclairty.com autonoom puur op runtime-gedrag, door te zien hoe een Chrome-only extensie _ga, _gid en rtkclickid-store verwijderde op path- en root-domeinniveau, een 1x1 iframe naar discounthero.org met pub=twsc plaatste, window.fetch kaapte om nivtrck.com te blokkeren en dagelijks campagne-ID's roteerde over vijf type= payload-varianten.
- Het SSL-certificaat werd op 20 februari 2026 uitgegeven en live verkeer arriveerde tien dagen later op 2 maart. Reputatiefeeds kunnen een zo vers domein niet opvangen, dus de eigenlijke vraag is of affiliate-omzet de prijs waard is van niet kijken naar wat scripts binnen de browser doen.
Een browserextensie injecteert geobfusceerde JavaScript van msclairty[.]com, een typosquatted domein dat Microsoft Clarity imiteert. Het script verwijdert Google Analytics-cookies, stopt affiliate-cookies met de waarde pub=twsc, injecteert verborgen iframes naar discounthero[.]org en kaapt de Fetch API. Verrassend genoeg markeert geen enkel beveiligingshulpmiddel dit domein. Dit is de eerste publieke documentatie van msclairty[.]com.
Wat is msclairty[.]com?
msclairty[.]com is een typosquatted domein dat is ontworpen om Microsoft Clarity (msclarity[.]com / clarity[.]ms) na te bootsen, de populaire analytics- en heatmaptool van Microsoft. Simpel gezegd: de letters "i" en "r" in "clarity" zijn omgewisseld naar "clairty", subtiel genoeg om bij een vluchtige blik in een netwerklog of scripttag geen argwaan te wekken.
Het domein levert geen analytics. In plaats daarvan levert het een geobfusceerde JavaScript-payload die affiliate cookie stuffing, het verwijderen van trackingcookies en het kapen van de Fetch API uitvoert in de browser van de bezoeker.
Hoe werd dit script ontdekt?
In de afgelopen 48 uur begonnen we netwerkverzoeken naar msclairty[.]com te observeren op meerdere niet-gerelateerde websites in onze telemetrie. Het eerste verzoek dat we registreerden was op 2 maart 2026 om 21:17 UTC, waarna het verkeer scherp toenam in de ochtend van 3 maart. Het verkeer is niet afkomstig van een gecompromitteerde scripttag in de paginabron. In plaats daarvan injecteert een browserextensie het. We hebben de specifieke extensie nog niet geïdentificeerd, maar het injectiepatroon is consistent op elke getroffen site: dezelfde geobfusceerde payload, hetzelfde domein, hetzelfde gedrag, ongeacht de eigen scriptinventaris van de site.
De gemeenschappelijke noemer is de browser van de eindgebruiker, niet de codebase van de site.
We observeerden dat het script sites trof in meerdere niet-gerelateerde sectoren, waaronder transport (zoals vliegticketboekingsplatforms), SaaS-platforms (zoals projectmanagementtools), sportbeheerportalen en overheidsbetalingsportalen. De getroffen bezoekers zijn verspreid over meerdere Chrome-versies (132, 138 en 145) en zijn afkomstig van Amerikaanse IP-adressen aan zowel de oost- als westkust. Elke getroffen site laadt de identieke event.js-campagne-identifier en ontvangt dezelfde payload-hash, wat bevestigt dat dit één gecoördineerde campagne is die via één browserextensie verloopt.
De campagne-ID's wisselen dagelijks. Op 2 maart was de loader-URL bijvoorbeeld event.js?id=dHRcSiYkDj4&date=2026-03-02. Op 3 maart verscheen een nieuwe campagne-ID: event.js?id=XGp2NSkTRVs&date=2026-03-03. De parameter date= komt overeen met de datum van elke campagnewisseling. Dit betekent dat de infrastructuur actief wordt onderhouden en elke dag nieuwe campagne-identifiers uitrolt.
Elke getroffen gebruiker deelt dezelfde vingerafdruk. In alle verzoeken in onze telemetrie is het browserprofiel identiek: Windows 10 x64, desktop Google Chrome, geen mobiele apparaten. Niet één verzoek is afkomstig van Firefox, Safari, Edge, Brave, macOS, Linux, Android of iOS. Dit is een Chrome-only extensie. De sec-ch-ua-clienthints bevestigen echte Chrome (niet Chromium-forks die anders rapporteren), en sec-ch-ua-mobile: ?0 bevestigt desktop bij elk verzoek. We observeerden slechts 5 unieke bezoeker-IP's op alle getroffen sites, allemaal op Amerikaanse residentiële verbindingen.
De volledige aanval volgt een tweefasig laadpatroon waarbij de server per verzoek targetingbeslissingen neemt over welke payload te leveren.
Fase 1: Loader-script (event.js)
hxxps://msclairty[.]com/event.js?id=dHRcSiYkDj4&date=2026-03-02
hxxps://msclairty[.]com/event.js?id=XGp2NSkTRVs&date=2026-03-03
De event.js-loader is 8.599 bytes groot. De parameter id= is een campagne-identifier die dagelijks wisselt. Op 2 maart was de campagne-ID dHRcSiYkDj4. Op 3 maart veranderde deze naar XGp2NSkTRVs. De parameter date= komt overeen met de datum van elke wisseling. De eerste loader die we vastlegden was voor het laatst gewijzigd op 2 maart 2026 om 09:58:50 GMT.
We deobfusceerden de loader en ontdekten dat deze het volgende doet:
- Console kapen. Het overschrijft alle 7 consolemethoden (
log,warn,info,error,exception,table,trace) direct bij het laden, voordat er een payload wordt uitgevoerd. Dit betekent dat pogingen om te debuggen of informatie te loggen stilzwijgend worden geblokkeerd. - Anti-iframe-controle. Het vergelijkt
window.selfmetwindow.topen stopt als de loader binnen een iframe wordt uitgevoerd. Dit zorgt ervoor dat het alleen wordt uitgevoerd in de top-level browsing context, waardoor analyse- of sandboxomgevingen die iframes gebruiken worden vermeden. - Dedup-cookiecontrole. Het leest de cookie
__tr_luptvvia eengetCookie()-hulpfunctie. Als de cookie al bestaat, stopt de loader. Deze cookie wordt door de payload ingesteld na uitvoering en dient twee doelen: aanvallersattributie voor commissiefraude en een "niet twee keer uitvoeren"-beveiliging die herhaalde uitvoering over paginalaadacties voorkomt. - Serversijdige targetingaanvraag. Het stuurt een POST naar
msclairty[.]commetContent-Type: application/x-www-form-urlencodedmet vier parameters:url(de huidige pagina-URL),referrer(document.referrer),unique_id(de campagne-ID uit de parameterid=) enext: 'twsc'(de affiliate-identifier van de aanvaller, hardgecodeerd). De server antwoordt met JSON met een velddata(de Base64-gecodeerde bestandsnaam voor de payload) en een veldtype(welke?type=-variant geladen moet worden). - Dynamische payload-injectie. Het construeert de fase 2-URL door de serverrespons samen te voegen:
https://msclairty[.]com/js/+response.data+.js?type=+response.type, maakt een<script>-element aan, stelt desrcin op deze URL en voegt het toe aandocument.head. Dit laadt dynamisch de kwaadaardige payload op basis van serverinstructies. - SPA-navigatiehooks. Het monkey-patcht
history.pushStateenhistory.replaceStateom aangepastelocationchange-events te verzenden, en luistert naarpopstate. Bij elke client-side navigatie in een single-page application voert de loader de functieInfo()opnieuw uit met de nieuwe URL, waardoor de server opnieuw de kans krijgt een payload te leveren. Een debounce van 500ms (wait_nw-semafoor) voorkomt snelle heruitvoering bij snelle routewijzigingen.
De server bepaalt de aanval, niet het script. De loader stuurt de pagina-URL en referrer, en de server antwoordt met zowel de gecodeerde payload-bestandsnaam als de waarde ?type=. Dit betekent dat verschillende sites, pagina's of referrers verschillende payloadvarianten kunnen ontvangen. Een productpagina kan bijvoorbeeld type=1 krijgen (stille cookie stuffing), terwijl een afrekenpagina type=5 kan krijgen (gedwongen omleiding). De targetinglogica is volledig serversijdig en onzichtbaar voor client-side analyse.
Fase 2: Geobfusceerde payload
hxxps://msclairty[.]com/js/[Base64-encoded-blob].js?type=[1-5]
De payload weegt 10.007 bytes. De Base64-achtige bestandsnaam wordt serversijdig gegenereerd op basis van de pagina-URL en referrer die door de loader zijn verzonden. De parameter ?type=, ook gekozen door de server, selecteert welke van de vijf aanvalsvarianten wordt uitgevoerd. De functie in elke payload is vernoemd naar de variant (type1(), type2(), type8(), type9(), type11()).
Welke beveiligingstools markeren msclairty[.]com?
Geen enkele. We hebben elk groot dreigingsinformatieplatform en beveiligingshulpmiddel gecontroleerd. Vanaf publicatie markeert niet één ervan msclairty[.]com als kwaadaardig:
- VirusTotal: 0 van de 90+ engine-detecties
- urlscan.io: geen scanresultaten, geen community-inzendingen
- Google Safe Browsing: niet gemarkeerd
- SecurityTrails: geen DNS-geschiedenis, geen WHOIS-verrijking
- ANY.RUN: geen sandbox-inzendingen voor dit domein
- Hybrid Analysis / Falcon Sandbox: geen resultaten
- PhishTank: niet vermeld
- OpenPhish: niet vermeld
- MalwareBazaar: geen samples
- ThreatFox (abuse.ch): geen IOC-vermeldingen
- Cloudflare Radar: geen gegevens
Dit is nul dekking op elk groot platform, en dit artikel is de eerste publieke documentatie van dit domein dat voor kwaadaardige doeleinden wordt gebruikt.
Hoe cside dit script detecteerde
cside detecteerde dit script autonoom via runtime-gedragsanalyse. Geen dreigingsfeed markeerde het domein. Geen scanner leverde de payload op. Geen handtekening kwam overeen. De detectie was volledig gebaseerd op wat het script in de browser deed: trackingcookies verwijderen, een verborgen iframe injecteren, de Fetch API kapen en de console onderdrukken.
Scripts van browserextensies vallen buiten uw controle als website-eigenaar. U kunt niet voorkomen dat een extensie code in uw pagina's injecteert. Maar het helpt om te weten dat het misbruik plaatsvindt. Het script verwijdert bijvoorbeeld de legitieme RedTrack-attributiecookie (rtkclickid-store) en vervangt deze door het eigen affiliate-token van de aanvaller pub=twsc via de omleidingsketen van discounthero[.]org. Als u RedTrack gebruikt voor het bijhouden van affiliate-conversies of afhankelijk bent van nauwkeurige verkeersattributie, steelt dit soort fraude actief commissie van uw legitieme affiliates, en u zou het nooit zien zonder client-side zichtbaarheid.
Voor het bredere redirectpatroon, zie onze gids over affiliate hijacking en traffic hijacking, waarin wordt uitgelegd hoe geïnjecteerde scripts links herschrijven en klikken via door aanvallers beheerde affiliatebestemmingen leiden.
Gebruik cside om te begrijpen hoe uw applicatie zich in de browser gedraagt. Detecteer signalen van fraude door bezoekers, AI-agents en client-side afhankelijkheden.
cside heeft deze informatie gedeeld met Microsoft zodat zij een takedown van msclairty[.]com kunnen nastreven wegens kwaadaardig typosquatten van hun Clarity-merk. We hebben ook contact opgenomen met RedTrack, omdat hun rtkclickid-store-attributiecookie expliciet wordt getarget voor verwijdering in deze aanval en het affiliate-token pub=twsc wordt gebruikt om legitieme RedTrack-klikattributie te overschrijven met frauduleuze commissieclaims.
Gratis starten of een demo boeken om met ons team te spreken.
Waarom krijgen AI-tools en scanners een 403 van msclairty[.]com?
De server achter msclairty[.]com draait op een Express (Node.js)-backend die wordt voorzien van Cloudflare. Responsheaders bevatten x-powered-by: Express, cf-cache-status en access-control-allow-origin: *. De payload wordt gecached door Cloudflare met een max-age van 14400 seconden (4 uur).
Ondanks het gebruik van Cloudflare blokkeert de server actief geautomatiseerde analyse. Wanneer AI-gestuurde tools zoals ChatGPT, Claude en Perplexity proberen inhoud van het domein op te halen, geeft de server een 403 Forbidden-respons terug. Hetzelfde geldt voor geautomatiseerde beveiligingsscanners en elk verzoek afkomstig van datacenter-IP-bereiken.
Dit is bewuste filtering op basis van IP-adresbereiken, user-agent-strings of andere verzoekvingerafdrukken. De server levert de kwaadaardige JavaScript-payload alleen wanneer het verzoek afkomstig lijkt te zijn van een echte browser met de juiste referrer, user-agent en headers. Datacenter-IP's, bekende bot-user-agents en verzoekhandtekeningen van AI-tools worden allemaal geblokkeerd.
Dit anti-onderzoeksgedrag verklaart ook waarom VirusTotal, urlscan.io en andere scanplatforms schone resultaten of helemaal geen resultaten teruggeven. Ze ontvangen de echte payload nooit.
Wat onthullen de verzoekheaders over de msclairty[.]com-extensie?
Elk verzoek in onze telemetrie deelt een identieke browservingerafdruk: Windows 10 x64, desktop Google Chrome, sec-ch-ua-mobile: ?0. Er is niet één verzoek van Firefox, Safari, Edge, Brave of een mobiele browser. Geen macOS, Linux, Android of iOS.
Dit is significant. Als de extensie beschikbaar was in het bredere Chromium-ecosysteem, zouden we Edge- of Brave-user-agents in de mix verwachten, omdat beide Chrome Web Store-extensies ondersteunen. Het feit dat elk verzoek "Google Chrome" rapporteert in de sec-ch-ua-clienthints en standaard Chrome-user-agent-strings suggereert dat dit ofwel een Chrome-only extensie is, of tot nu toe alleen door Chrome-gebruikers is geïnstalleerd.
Drie Chrome-versies komen voor in de gegevens: 132, 138 en 145. Chrome 132 werd uitgebracht in januari 2025 en is inmiddels verouderd. Chrome 138 en 145 zijn recenter. De spreiding over versies sluit een versiespecifiek exploit uit en is consistent met een vrijwillig geïnstalleerde extensie die Chrome-updates overleeft.
Andere opvallende headerpatronen:
De header sec-fetch-storage-access verschijnt met de waarden active en none bij de initiële scriptladingen (sec-fetch-dest: script). Dit geeft aan dat de extensie interactie heeft met de Storage Access API, die cross-site cookietoegang regelt. Dit is consistent met een extensie die cross-site opslag nodig heeft voor haar cookie-stuffing-mechanisme.
Alle POST-verzoeken gebruiken content-type: application/json met variërende content-length-waarden van 604 tot 10.246 bytes. Dit zijn de event.js-beacons die gegevens terugsturen naar msclairty[.]com. De variërende payloadgroottes suggereren dat het script verschillende hoeveelheden pagina- of sessiegegevens exfiltreert afhankelijk van de browsing context.
De header dnt: 1 (Do Not Track) is aanwezig bij verzoeken van Chrome 145- en Chrome 138-gebruikers, maar afwezig bij Chrome 132. Dit is een gebruikersvoorkeur, geen extensiegedrag, maar het bevestigt dat dit echte eindgebruikers zijn met individueel geconfigureerde browsers.
Wanneer werd het domein msclairty[.]com geregistreerd?
Het SSL-certificaat voor msclairty[.]com werd uitgegeven op 20 februari 2026 om 20:14:54 UTC. Dat is slechts 10 dagen voordat we op 2 maart voor het eerst live verkeer van dit domein observeerden. Dit is een vers geregistreerd domein, speciaal gebouwd voor deze campagne.
WHOIS-registratiegegevens zijn verborgen achter een privacyservice. Er bestaan geen historische DNS-records voor dit domein in SecurityTrails of passieve DNS-databases.
Wat doet het msclairty[.]com-script?
Na deobfuscatie voert het script zes afzonderlijke acties uit. Geen van deze heeft iets te maken met analytics of heatmaps.
Stap 1: DevTools-detectie
Het script controleert of de browser-ontwikkelaarstools open zijn voordat het iets uitvoert. Het vergelijkt window.outerWidth - window.innerWidth en window.outerHeight - window.innerHeight met een drempelwaarde van 120 pixels. Het controleert ook op Firebug en window.chrome.isInitialized.
Als een controle aangeeft dat iemand de pagina inspecteert, stopt het script onmiddellijk. Het wordt alleen uitgevoerd voor echte gebruikers, nooit voor ontwikkelaars of beveiligingsonderzoekers.
Stap 2: Console kapen
Het script overschrijft zeven native console-methoden: log, warn, info, error, exception, table en trace. Alle zeven worden vervangen door lege no-op-functies. Dit voorkomt dat waarschuwingen of debug-uitvoer verschijnen als iemand DevTools opent nadat het script is geladen.
Een aparte console.clear()-aanroep wordt na een timer van 3 seconden uitgevoerd om alles te wissen dat mogelijk is gelogd voordat de overschrijving van kracht werd.
Stap 3: Verwijderen van trackingcookies
Het script verwijdert de volgende cookies op zowel padniveau als rootdomeinniveau:
_ga(Google Analytics-client-ID)_gid(Google Analytics-sessie-ID)rtkclickid-store(RedTrack affiliate-klikattributie)
Dit is het belangrijkste gedrag om te begrijpen. Door de RedTrack-cookie rtkclickid-store te verwijderen, wist het script de legitieme affiliate-klikattributie voor die bezoeker. Door ook Google Analytics-cookies te verwijderen, wordt elk bewijs van hoe de gebruiker op de site is terechtgekomen gewist. De werkelijke verkeersbron van de bezoeker verdwijnt volledig. Dit maakt de weg vrij voor het eigen affiliate-token van de aanvaller (pub=twsc) om de enige attributiebron te worden.
Stap 4: Verborgen iframe-injectie en affiliate cookie stuffing
Een verborgen iframe van 1x1 pixel wordt in de paginabody geïnjecteerd. Het iframe laadt de volgende URL:
hxxps://discounthero[.]org/us/s/red_u_plain.php?t=direct&s=287&d=[target]&pub=twsc
Het iframe gebruikt referrerpolicy="noreferrer" om de referrer-header te onderdrukken.
Dit is wat elke URL-parameter betekent:
t=direct: verkeerstype-markerings=287: campagne-identifierd=[target]: de site die wordt opgelicht (de waarde verandert per slachtoffersite)pub=twsc: de affiliate-publisher-ID van de aanvaller
De waarde pub=twsc is het affiliate-account dat de frauduleuze commissie ontvangt. Dit is de kern van de aanval. Het verborgen iframe laadt stilletjes een omleidingsketen via discounthero[.]org die een affiliate-cookie in de browser van de gebruiker plaatst. Als de gebruiker later de doelsite bezoekt en een aankoop doet, verdient de aanvaller achter pub=twsc een commissie die hij nooit heeft gegenereerd. Het verwijderen van cookies in stap 3 zorgt ervoor dat er geen concurrerende attributie bestaat.
Na 20 seconden wordt het iframe uit de DOM verwijderd. Er blijft geen visueel spoor achter op de pagina.
Stap 5: Fetch API kapen
Binnen het geïnjecteerde iframe monkey-patcht het script window.fetch. Elk fetch-verzoek dat nivtrck[.]com bevat (gecodeerd als bml2dHJjay5jb20= in Base64) wordt stilzwijgend geblokkeerd met een afgewezen Promise.
Dit voorkomt dat een concurrerende trackingdienst de werkelijke verkeersbron registreert. De aanvaller wil niet alleen krediet voor het bezoek; hij blokkeert actief andere trackers om te voorkomen dat zij attributiegegevens vastleggen die zijn frauduleuze cookie zouden tegenspreken.
Stap 6: Referrer-onderdrukking en trackingcookie van de aanvaller
Een tag <meta name="referrer" content="no-referrer"> wordt geïnjecteerd in de <head> van de pagina, waardoor referrer-headers bij alle uitgaande navigaties worden onderdrukt. Dit verbergt de fraude voor downstream analytics op de doelsite.
Het script stelt ook zijn eigen trackingcookie in:
__tr_luptv = [huidige tijdstempel minus 300000 milliseconden]
De cookiewaarde is Date.now() - 300000 (huidige tijd minus 5 minuten), ingesteld op zowel het rootpad als het rootdomein van de site. Deze teruggedateerde tijdstempel signaleert waarschijnlijk aan de omleidingsketen van discounthero[.]org dat de bezoeker al is getagd en niet opnieuw verwerkt moet worden.
Hoe is het msclairty[.]com-script geobfusceerd?
De code gebruikt een standaard maar effectieve obfuscatiestack die de meeste statische analysetools verslaat:
- Een geroteerde tekenreeksarray met ongeveer 95 Base64-gecodeerde vermeldingen
- Een decoderfunctie die array-indices tijdens runtime vertaalt naar leesbare tekenreeksen
- Proxy-objecten die functieaanroepen en tekenreeksreferenties verbergen achter gerandomiseerde eigenschapsnamen
- Een IIFE-shufflelus die de array roteert totdat een controlesom overeenkomt, zodat de decoder correcte waarden produceert
De geobfusceerde code ziet eruit als willekeurige ruis. Geen enkele tool voor statische analyse, handtekeningscanner of op regex gebaseerde detectie zal kwaadaardig gedrag identificeren uit de ruwe broncode. U moet de decoder uitvoeren om te zien wat het script doet.
Wat is discounthero[.]org?
discounthero[.]org is het omleidingseindpunt voor affiliate-fraude dat in deze aanval wordt gebruikt. In tegenstelling tot msclairty[.]com heeft dit domein een gevestigde aanwezigheid op meerdere dreigingsinformatieplatforms:
- Gehost op AWS-infrastructuur op IP
3.68.5.1(AS16509, AMAZON-02), geogelokaliseerd in Duitsland - Geclassificeerd als adware-distributeur door Gridinsoft
- Gemarkeerd als kwaadaardig in ANY.RUN-sandboxanalyses met Tycoon 2FA-phishingindicatoren
- Verscheen in Falcon Sandbox-analyserapporten naast bekende advertentiefraude-domeinen
- Door gebruikers op meerdere browserfora gemeld als bron van malvertising-omleidingen, waaronder incidenten op de Daz3D-communityforums
- Gebruikt het omleidingseindpunt
red_u_plain.phpmet per-campagneparameters (s=,d=,pub=,t=) - Omleidingsketen loopt via
gracylifestyle[.]com(Cloudflare) naard33old9jdtt77h.cloudfront.net(Amazon CloudFront)
Wat is nivtrck[.]com?
nivtrck[.]com is het trackingdomein dat het script actief blokkeert via het kapen van de Fetch API. Dit domein heeft nul publieke documentatie op alle dreigingsinformatieplatforms, sandboxrapporten en WHOIS-historiedatabases. Het kan een legitieme trackingdienst zijn waarvan de aanvaller de attributie wil onderdrukken, of het kan toebehoren aan een concurrerende fraudeoperatie.
Indicatoren van compromittering (IOC's) voor msclairty[.]com
| Type | Waarde | Doel |
|---|---|---|
| Domein | msclairty[.]com |
Scriptlevering, typosquat van Microsoft Clarity |
| URL | msclairty[.]com/event.js |
Fase 1 loader-script |
| URL | msclairty[.]com/js/[encoded].js?type=1 |
Fase 2 geobfusceerde payload |
| SHA256 | 7ad3dcdcc83eba9298b800a9cbbc00720c35859880bf00ba7bab8883f750f0ff |
event.js (loader) hash, 8.599 bytes |
| SHA256 | 27e6d46c37d2cb8ef3cf21b70ce03b5090eae988f4e3923cd0902a7bde8c4e94 |
Payload (.js?type=1) hash, 10.007 bytes |
| Campagne-ID | id=dHRcSiYkDj4 |
Campagne 2 maart 2026 (wisselt dagelijks) |
| Campagne-ID | id=XGp2NSkTRVs |
Campagne 3 maart 2026 (wisselt dagelijks) |
| Domein | discounthero[.]org |
Omleidingseindpunt voor affiliate-fraude |
| IP-adres | 3.68.5.1 |
Hosting discounthero[.]org (AWS, Duitsland) |
| ASN | AS16509 (AMAZON-02) | Infrastructuur discounthero[.]org |
| Domein | nivtrck[.]com |
Concurrerende tracker geblokkeerd door het script |
| Cookienaam | __tr_luptv |
Aanvallersattributiecookie EN loader-dedup-vlag |
| Cookiewaarde | Date.now() - 300000 |
Teruggedateerde tijdstempel, 5 minuten in het verleden |
| Affiliate-ID | pub=twsc |
Publisher-account van de aanvaller voor commissiefraude |
| Loader POST-param | ext: 'twsc' |
Hardgecodeerde affiliate-identifier in loader-targetingverzoek |
| Loader POST-param | url, referrer, unique_id |
Pagina-URL, referrer en campagne-ID verzonden naar server |
| Content-Type | application/x-www-form-urlencoded |
Indeling van loader-targeting-POST-verzoek |
| Campagne-ID | s=287 |
Campagne-identifier in omleidings-URL |
| Payloadvariant | ?type=1 (functie type1) |
Stille affiliate cookie stuffing via verborgen iframe |
| Payloadvariant | ?type=2 (functie type2) |
Cookie stuffing + inhoudinjectie via {{link2}}-sjabloon |
| Payloadvariant | ?type=3 (functie type8) |
Klikhijacking: voegt affiliate-omleiding toe aan uitgaande links |
| Payloadvariant | ?type=4 (functie type9) |
Klikhijacking: stuurt gebruiker eerst naar discounthero |
| Payloadvariant | ?type=5 (functie type11) |
Auto-omleiding: navigeert pagina gedwongen na 400ms |
| URL-pad | /us/s/red_u_plain.php |
Omleidingshandler van discounthero[.]org |
| SSL-certificaat uitgegeven | 20 februari 2026, 20:14:54 UTC | Domein opgezet 10 dagen voor eerste waargenomen verkeer |
| Loader gewijzigd | 2 maart 2026, 09:58:50 GMT | Tijdstempel laatste wijziging event.js |
| Eerste waarneming | 2 maart 2026, 21:17:09 UTC | Vroegste verkeer in cside-telemetrie |
| ETag | W/"2717-Eekqo9gobf+ksAb6+kvO6VgzCto" |
Payload-ETag (ongewijzigd bij alle verzoeken) |
| ETag | W/"2197-19cadfc7987" |
event.js ETag (ongewijzigd bij alle verzoeken) |
| Infrastructuur | Cloudflare + Express (Node.js) | Serverstack van msclairty[.]com |
| Injectievector | Browserextensie (niet geïdentificeerd) | Scriptleveringsmechanisme |
Waarom omzeilt deze aanval traditionele beveiligingstools?
Deze aanval omzeilt traditionele beveiligingstools om twee redenen: de injectievector en de ontwijkingstechnieken.
Het script wordt geïnjecteerd door een browserextensie, niet ingebed in de broncode van de site. Dit betekent dat Content Security Policy-headers het niet blokkeren. Tag-audits vinden het niet. Subresource Integrity-controles zijn niet van toepassing. Beveiligingstools aan de serverzijde hebben geen zichtbaarheid in wat een browserextensie tijdens runtime in de pagina injecteert.
Bovendien filtert de server achter msclairty[.]com verzoeken agressief. Beveiligingsscanners, AI-gestuurde onderzoekstools en elk verzoek van een datacenter-IP of bekende bot-user-agent ontvangen een 403 Forbidden-respons. Zelfs als een scanner de echte payload zou ophalen, bevat de geobfusceerde broncode geen herkenbare handtekeningen of bekende kwaadaardige patronen die statische analyse zou markeren.
Het script ontwijkt ook handmatig onderzoek. Het detecteert open DevTools en stopt. Het overschrijft alle consolemethoden. Het verwijdert het iframe uit de DOM na 20 seconden. Het wist de console na 3 seconden.
De loader voegt nog een laag toe: het koppelt history.pushState, history.replaceState en popstate om opnieuw te activeren bij elke client-side navigatie in single-page applications. Elke routewijziging stuurt de nieuwe URL naar de server voor nieuwe targeting. En omdat de server bepaalt welke payloadvariant wordt geleverd op basis van de pagina-URL en referrer, kan statische analyse van één vastgelegde payload niet het volledige aanvalsbereik van de infrastructuur onthullen.
Hoe detecteer je affiliate cookie stuffing-aanvallen zoals deze?
Detectie op basis van blokkeerlijsten werkt niet tegen dit type aanval. Het domein is te nieuw voor een dreigingsfeed om het te hebben geïndexeerd. De obfuscatie versloeg statische analyse. De server blokkeert geautomatiseerde scanners en AI-tools met 403-responses.
De enige betrouwbare detectiemethode is runtime-gedragsanalyse: monitoren wat scripts in de browser doen in plaats van hun broncode te analyseren of hun domein te controleren aan de hand van een blokkeerlijst. Het verwijderen van cookies, het injecteren van verborgen iframes, het kapen van de Fetch API en het onderdrukken van de console zijn allemaal waarneembare gedragingen die duidelijk kwaadaardig zijn, ongeacht hoe de broncode eruitziet of waar het script vandaan is geladen.
Dit is precies waarvoor real-time client-side beveiligingsmonitoring is gebouwd.
Wat betekent de parameter ?type=?
De URL accepteert een queryparameter ?type= die selecteert welke aanvalspayload de server teruggeeft. We hebben vijf varianten bevestigd. Elke variant escaleert in agressiviteit. Alle vijf delen dezelfde ontwijkingskern: DevTools-detectie (stopt als open, drempelwaarde 150px), console kapen (7 methoden overschreven), cookie verwijderen (_ga, _gid, rtkclickid-store op pad- en rootdomeinniveau), aanvallersattributiecookie (__tr_luptv = Date.now() - 300000), referrer-onderdrukking via metatag en hetzelfde affiliate-doel (discounthero[.]org met pub=twsc en s=287).
De waarde van de parameter ?type= (1 tot en met 5) is opeenvolgend, maar de interne functienamen zijn dat niet. Dit verschil onthult de werkelijke omvang van de infrastructuur.
?type=1 (functie type1()) - Stille affiliate cookie stuffing
Injecteert een verborgen iframe van 1x1 pixel naar discounthero[.]org met pub=twsc. Het iframe laadt de affiliate-omleidingsketen, plaatst de cookie van de aanvaller en vernietigt zichzelf na 20 seconden. De Fetch API wordt gekaapt om verzoeken naar nivtrck[.]com te blokkeren. De bezoeker ziet niets.
?type=2 (functie type2()) - Cookie stuffing + inhoudinjectie
Doet alles wat type=1 doet. Vervolgens haalt het een tweede URL op uit een serversijdige sjabloonvariabele {{link2}}, maakt een tweede verborgen iframe van 0x0 aan, schrijft de opgehaalde HTML erin via contentWindow.document.write() en vervalst de iframe-URL met history.replaceState. Het tweede iframe vernietigt zichzelf na 15 seconden. De tijdelijke aanduiding {{link2}} wordt serversijdig per doel ingevuld en kan phishing-overlays, advertentie-injectie of paginamanipulatie leveren.
?type=3 (functie type8()) - Klikhijacking (meeliften)
Geen iframe. Installeert een klikgebeurtenisluisteraar op document.body. Wanneer een bezoeker op een <a>-tag klikt met een href die begint met "http", roept het script preventDefault() aan en leidt de browser vervolgens om naar de oorspronkelijke URL met de affiliate-omleiding van discounthero[.]org toegevoegd als queryparameter. De gebruiker bereikt nog steeds zijn beoogde bestemming, maar de navigatie loopt onderweg via de omleidingsketen van de aanvaller.
?type=4 (functie type9()) - Klikhijacking (directe omleiding)
Dezelfde klikonderschepping als type=3, maar de omleidingsrichting is omgekeerd. In plaats van de affiliate-URL toe te voegen aan de oorspronkelijke bestemming, stuurt het de gebruiker rechtstreeks naar discounthero[.]org met de oorspronkelijke URL gecodeerd als parameter via encodeURIComponent(). De gebruiker navigeert zichtbaar eerst via de infrastructuur van de aanvaller en wordt daarna doorgestuurd naar zijn beoogde bestemming nadat de affiliate-cookie is geplaatst.
?type=5 (functie type11()) - Auto-omleiding (geen klik vereist)
De meest agressieve variant. Geen iframe. Geen klikonderschepping. Na een vertraging van 400 milliseconden leidt het script de volledige pagina gedwongen om via window.location.search. De gebruiker wordt automatisch weggeleid van de pagina die hij bekeek naar de affiliate-keten van discounthero[.]org. Geen interactie vereist. De vertraging van 400ms is net lang genoeg om het verwijderen van cookies en het instellen van de __tr_luptv-cookie te voltooien voordat de omleiding plaatsvindt.
De functienamen zijn niet opeenvolgend. De parameter ?type= loopt van 1 tot 5, maar de functies heten type1, type2, type8, type9 en type11. Waarden boven 5 geven lege responses terug. De hiaten in de functienummering (type3 tot en met type7, type10) weerspiegelen waarschijnlijk buiten gebruik gestelde of verouderde varianten uit eerdere iteraties van deze infrastructuur. Vijf actieve payloadtypen, escalerend van stil naar gedwongen.
Hoe de Microsoft Clarity typosquatting-aanval werkt
Typosquatting is een aanvalspatroon waarbij een kwaadaardig script wordt gehost op een URL die bijna identiek is aan een legitieme URL, door letters te verwisselen, karakters te transponeren of een klinker weg te laten. Het Microsoft "Clairty"-script (mist een 'a') is een klassiek voorbeeld.
De aanvalsketen ziet er meestal zo uit:
- Een aanvaller registreert een domein dat visueel lijkt op het domein van een vertrouwde leverancier (
microsoft-clairty.[tld]in plaats vanmicrosoft-clarity.com). - De aanvaller host een ad-fraude, credential-harvest of Magecart-achtige payload op dat domein.
- Een developer kopieert een tag manager-snippet uit een gecompromitteerde bron (of uit een phishing-email) die verwijst naar het typosquatted domein in plaats van het echte.
- Het kwaadaardige script laadt nu binnen de browsercontext van elke gebruiker die de getroffen pagina bezoekt.
Runtime-scriptmonitoring vangt dit op omdat het gedrag en hostingdomein van het geladen script verschillen van het goedgekeurde Microsoft Clarity-script. Zie onze client-side security oplossing voor de browser-laag detectie die deze look-alike-domein aanvallen opvangt.









