Onderzoekers hebben een nieuwe stap gezien in het verbergen van command-and-control (C2) infrastructuur via blockchain. Ditmaal gaat het om NullReceiver trojanized npm: gemanipuleerde npm-pakketten die het IP-adres van de aanvaller niet hardcoden, maar in de “bytes” van een zogenaamd lege Ethereum-transactie verstoppen.
Hoewel de onderzochte packages inmiddels niet meer te downloaden zijn via npm, tonen downloadstatistieken aan dat ze eerder alsnog enkele honderden keren zijn binnengehaald. Daarmee blijft de praktische impact: systemen die destijds zijn geüpgraded of geïnstalleerd, kunnen alsnog betrokken zijn bij kwaadaardige connecties naar de C2.
Wat is NullReceiver trojanized npm?
De techniek heet NullReceiver en is een ontwikkeling van een eerder bekende aanpak: EtherHiding. EtherHiding werd al in 2023 openbaar beschreven en maakt gebruik van smart contracts en blockchain-gegevens om kwaadaardige componenten te “smokkelen” via een publieke keten.
NullReceiver kiest voor een andere route. In plaats van een vaste, herkenbare bestemming of het verstoppen van informatie in contractcode of calldata, wordt het C2-IP gecodeerd in een bestemmingsadres van een Ethereum-transfer die (op het oog) niets lijkt te bevatten.
Welke npm-pakketten waren betrokken?
In de observaties van OpenSourceMalware worden twee trojanized pakketten genoemd die de techniek toepassen:
- bianira-ui – ongeveer 109 downloads sinds publicatie op 28 juli 2026
- fluid-type-ui – ongeveer 587 downloads sinds publicatie op 28 juli 2026
De pakketten zijn op het moment van schrijven niet meer beschikbaar voor download via npm. Dat neemt echter niet weg dat de techniek juist bedoeld is om gedurende de periode vóór verwijdering installaties te laten plaatsvinden en daarna kwaadaardige netwerkacties uit te voeren.
Hoe EtherHiding werkte, en waarom NullReceiver slimmer is
EtherHiding maakt het mogelijk om informatie via blockchain door te geven, maar heeft een praktisch nadeel voor verdedigers. De techniek vereist doorgaans een destination address dat publiek en herleidbaar is. Zodra er nieuwe transacties met payload-achtige gegevens verschijnen, kan een analist of detector gericht transacties volgen en patronen herkennen.
NullReceiver lost dat probleem deels op door geen “wachttoren” of vaste bestemming te hergebruiken. De aanpak gebruikt een niet-bestaand destination adres dat alleen dient als drager voor de gecodeerde bytes. Daardoor ontbreekt de klassieke, vaste indicator die je eenvoudig kunt monitoren.
Zo decodeert de malware het C2-IP
Volgens de beschreven analyse verloopt de uitvoering op een besmet systeem in een reeks stappen. Belangrijk: de techniek vereist geen smart contract en laadt geen payload in het klassieke veld calldata zoals je bij sommige varianten zou verwachten.
- De bibliotheek zoekt een vooraf ingestelde, aanvallerswallet op (een hard-coded walletadres).
- Vervolgens kijkt de code naar de meest recente outbound transactie van die wallet.
- Daarna leest de malware het destination (“To”) adres uit de transactie.
- Het C2-IP wordt gedecodeerd uit de eerste bytes van dat adres: een conversie van hexadecimale waarden naar getal-equivalenten.
- Tot slot maakt de malware verbinding met het resulterende IP-adres.
In de onderzochte voorbeelden werd het decoded IP gekoppeld aan een specifiek adresformaat. Ook opvallend: de resterende trailing bytes bevatten in dit geval een ASCII-achtige tekststring. Dat detail illustreert vooral hoe zorgvuldig de aanvallers het adres gebruiken als datastructuur.
Geen fixed target, wel variatie
Het “sneaky” karakter van NullReceiver zit in de afwezigheid van een herbruikbare bestemming. De beschreven aanpak benadrukt dat elke lookup een nieuwe, wegwerpadres oplevert. Voor defenders betekent dat: minder vaste ankerpunten en minder eenvoudige fingerprinting op basis van een constant transactiedoel of herkenbare transactie-inhoud.
Waarom de blockchain-transfer minder opvalt
Naast het ontbreken van een vaste bestemming speelt nog een tweede factor: de transactievorm. De analyse stelt dat de gebruikte Ethereum-transfer blank is en geen extra data meedraagt.
Dat heeft twee voordelen voor de aanvaller. Ten eerste is er minder “materiaal” dat je als indicator kunt afleiden uit de transactie. Ten tweede zijn transacties met minder bytes meestal goedkoper, waardoor het uitvoeren van veel varianten niet snel opvalt in kostenpatronen.
Link met eerdere campagnes
De onderzoekers koppelen het gebruik van EtherHiding en de evolutie daarvan aan cyberactiviteiten die eerder zijn toegeschreven aan Noord-Koreaanse actoren. Ook wordt verwezen naar een campagne rond “Contagious Interview”, waarbij slachtoffers via LinkedIn met ogenschijnlijk aantrekkelijke vacatures worden benaderd. Het doel is om deelnemers een assessment te laten invullen dat uiteindelijk uitmondt in malware-installatie.
NullReceiver laat zien dat threat actors blijven verfijnen: waar de eerdere techniek nog herkenbaar kon worden door vaste blockchain-onderdelen, wordt nu gestuurd op variatie en het minimaliseren van de zichtbare sporen.
Wat betekent dit voor jouw beveiliging?
Als je werkt met Node.js, npm en front-end of tooling-ecosystemen, raakt dit direct aan de beveiliging van software supply chains. Dit soort aanvallen laat zien dat “we hebben het pakket verwijderd” pas het begin is; je moet vooral weten wat er al is geïnstalleerd.
Praktisch kun je denken aan de volgende acties:
- Herinspecteer dependency-geschiedenis: systemen die in of rond de publicatiedatum geïnstalleerd hebben, verdienen prioriteit.
- Monitor outbound verbindingen: let op onverwachte verbindingen naar IP-adressen die niet passen bij normale applicatiegedragspatronen.
- Gebruik integriteitscontrole: tools die lockfiles, hashes en registraties kunnen verifiëren helpen om gemanipuleerde packages vroeg te detecteren.
- Beperk install rechten: voorkom dat omgevingen direct breed software kunnen installeren zonder controle.
Als je wilt vergelijken hoe blockchain-achtige technieken en C2-verberging zich verhouden tot andere supply chain-incidenten, kan ook het achtergrondstuk over ChainDrop en besmette NPM-pakketten helpen om patronen in npm-aanvallen beter te herkennen.
Snelle checklist voor incidentrespons
Zie dit als een korte volgorde om schade te beperken wanneer je vermoedt dat een trojanized npm package is uitgevoerd:
- Inventariseer welke npm packages recent zijn geïnstalleerd en koppel dit aan build- en deploymomenten.
- Controleer of er runtime-connecties tot stand zijn gekomen richting onbekende IP’s of netwerken.
- Verifieer of er vreemde scripts of bibliotheekaanroepen plaatsvinden binnen build- of startprocessen.
- Herbouw afhankelijkheden vanuit een veilige bron (bij voorkeur met gecontroleerde lockfiles en goedgekeurde registraties).
Voor organisaties die werken met moderne AI- of agent-achtige workflows en daarmee extra automatisering in security-ketens hebben, is het ook nuttig om mee te nemen hoe AI-agenten en cybertests in de praktijk kunnen botsen met detectie- en controleprocessen.
Conclusie
NullReceiver trojanized npm laat zien dat aanvallers blijven evolueren in het verbergen van C2-informatie. Door het C2-IP te coderen in het destinationadres van een ogenschijnlijk lege Ethereum-transfer, wordt de techniek minder herkenbaar dan eerdere blockchain-varianten met vaste ankerpunten.
Hoewel de betrokken packages inmiddels zijn weggehaald uit npm, is de belangrijkste les voor verdedigers: check wat er al is geïnstalleerd, monitor ongebruikelijk netwerkgedrag en versterk dependency-integriteit. Zo verklein je de kans dat supply chain-verstoringen doorwerken in productie en later pas zichtbaar worden.
Bron: https://thehackernews.com/2026/08/trojanized-npm-packages-decode-c2-ip.html
