Een met een trojan geïnfecteerde Slack-download van een typosquatting-website biedt aanvallers iets waar de meeste gebruikers niet eens op zouden letten: een verborgen desktop die op hun computer draait.
Het installatieprogramma ziet er legitiem uit en start zelfs een werkende versie van Slack op. Maar op de achtergrond kan het een onzichtbare sessie opzetten waarin aanvallers kunnen rondkijken, toegang krijgen tot accounts en interactie hebben met je systeem zonder dat er iets op je scherm verschijnt. Voor alle duidelijkheid: deze campagne heeft niets te maken met het bedrijf Slack, en we hebben hen op de hoogte gebracht van onze bevindingen.
Slack heeft tientallen miljoenen dagelijkse actieve gebruikers verspreid over meer dan 200.000 betalende organisaties in meer dan 150 landen, waaronder 77 van de Fortune 100. Een geïnfecteerd installatieprogramma vormt dus niet alleen een bedreiging voor de persoon die het uitvoert, maar ook voor bedrijfsnetwerken, accounts die via SSO zijn gekoppeld en interne communicatie.
Iedereen vertrouwt het logo

Slack is een van die apps die mensen zonder aarzelen installeren. Het staat naast Chrome Zoom in het pantheon van software die werknemers op hun eerste werkdag downloaden, vaak via een snelle Google-zoekopdracht in plaats van via een link in hun bladwijzers. Dat maakt het zo’n aantrekkelijke keuze. Het merk is direct herkenbaar, het installatieprogramma is iets wat miljoenen mensen al eens eerder hebben gebruikt, en de hele ervaring van het installatieproces voelt volkomen alledaags aan.
De aanvallers achter deze campagne hebben het domein geregistreerd slacks[.]pro (let op de extra „s“ en het .pro-topniveaudomein in plaats van .com). De broncode van de site bevat een JavaScript-klikhandler die elke klik op de pagina onderschept en de browser doorverwijst naar een download die op een apart domein wordt gehost, debtclean-ua[.]sbs. De enige klikken die worden uitgesloten, zijn de knoppen voor het accepteren van cookies; al het andere zet de download in gang. Dit is geen echte drive-by-aanval waarbij de browser ongemerkt wordt misbruikt, maar het komt wel in de buurt: er is slechts één klik van een afgeleide gebruiker voor nodig.
Wat op het bureaublad van het slachtoffer verschijnt, is een bestand met de naam slack-4-49-81.exe, een naam die zo sterk lijkt op de echte versienummering van Slack dat de meeste mensen er geen moment over zouden twijfelen.

Dit is geen onbekende tactiek. In augustus 2024 hebben we een vrijwel identieke campagne gedocumenteerd waarbij frauduleuze Google Ads werden gebruikt om zoekopdrachten op Slack om te leiden naar een kwaadaardige downloadpagina. Via die aanvallen werd SecTopRAT verspreid, een trojan voor toegang op afstand met mogelijkheden om gegevens te stelen.
Deze campagnes blijven maar terugkomen omdat de formule werkt: aanvallers kiezen een vertrouwd merk, registreren een overtuigend domein en rekenen erop dat de meeste mensen een URL niet kritisch bekijken als ze gewoon aan het werk willen gaan.
Een echte installatie en een verborgen loader, die naast elkaar draaien
Dit is wat dit specifieke voorbeeld zo slim maakt: het doet niet alleen alsof het Slack installeert. Het installeert daadwerkelijk een werkende versie van de applicatie, terwijl op de achtergrond tegelijkertijd een malware-loader wordt uitgevoerd. Het slachtoffer ziet een legitiem welkomstscherm, ziet Slack in de taakbalk verschijnen en heeft geen enkele reden om te vermoeden dat er iets mis is gegaan.
Heb je iets meegenomen wat je beter niet had kunnen meenemen?
Binnen enkele seconden na de lancering, slack-4-49-81.exe schrijft twee tijdelijke bestanden naar de map van de gebruiker %TEMP% map. De eerste, slack.tmp, is de lokvogel: een zelfuitpakkend Squirrel-installatiepakket. Squirrel is een legitiem, open-source updateframework dat is ingebouwd in tientallen Electron-apps, waaronder de echte Slack, Discord en Microsoft Teams. De dropper bevat een authentiek exemplaar van Squirrel’s Update.exe naast een NuGet-pakket met de naam slack-4.49.81-full.nupkg, een splash-afbeelding met het merk (background.gif), en een release-manifest. Wanneer slack.tmp wanneer het wordt uitgevoerd, wordt dit alles uitgepakt naar %LOCALAPPDATA%\SquirrelTemp, lanceert Update.exe met een standaard --install vlag, en vanaf dat moment verloopt de installatie van Slack precies zoals wanneer de gebruiker de app had gedownload van slack.com. Slack start op, ziet er goed uit en werkt.
Het tweede bestand, svc.tmp, komt enkele seconden later binnen. Dit is de loader: een apart uitvoerbaar bestand van ongeveer 519 KB dat in het installatieprogramma van 150 MB is ingebed en wordt uitgepakt naar %TEMP% naast het lokbestand. Het is niet ondertekend, wordt in de metadata van het Portable Executable (PE)-bestand aangeduid als Windows Update Service“ van Microsoft Corporation, en staat los van het Squirrel-framework of de Slack-applicatie die ernaast wordt geïnstalleerd. Vrijwel onmiddellijk maakt het een klein bestand aan met de naam loader_log.txt in de tijdelijke map, waarmee wordt bevestigd dat de laadfase is gestart, en probeert verbinding te maken met een command-and-control (C2)-server op 94.232.46.16 op TCP-poort 8081.
Ondertussen wordt de installatie van Squirrel voltooid en wordt er een Run-sleutel in het register geschreven om herstarts te overleven: naam van de waarde com.squirrel.slack.slack onder HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run. Dit is precies de bestandsnaam en het pad die bij een legitieme Slack-installatie worden aangemaakt. Een IT-beheerder die door de items in de automatische opstartlijst bladert, zou dit zien als een normale Slack-installatie en gewoon verdergaan.
Een kijkje in de loader: wat statische analyse aan het licht brengt
Om te begrijpen waarvoor de loader is ontworpen zodra hij over een C2-kanaal beschikt, hebben we het binaire bestand rechtstreeks onderzocht. Volgens de PE-versie-informatie gaat het om een Windows Update Service (interne naam WinSvcUpd.exe), uitgegeven door Microsoft Corporation, versie 1.4.2.0. Niets van dit alles is waar. Het is een vals spoor dat bedoeld is om bij een vluchtige blik in een proceslijst of taakbeheer niet op te vallen.
Het binaire bestand is een 64-bits Windows dat is gecompileerd met MSVC. De zeven PE-secties hebben willekeurige namen, zoals .7ssik, .d1npl, .m6zef, in plaats van de standaard .text- en .rdata-bestanden die door gewone compilers worden gegenereerd, wat aansluit bij het gebruik van een aangepaste builder of crypter-tool. De importtabel is bewust minimaal gehouden: 90 functies uit KERNEL32.dll en verder niets. Er zijn geen statische imports voor netwerkfunctionaliteit, toegang tot het register of procesmanipulatie. In plaats daarvan worden die API’s tijdens de uitvoering opgelost met behulp van GetProcAddress en LoadLibraryExW, een gangbare techniek waarmee de werkelijke mogelijkheden van het binaire bestand worden verborgen voor analyse van de importtabellen.

Wat dit voorbeeld zo bijzonder maakt voor een loader, is hoe veel informatie het intern prijsgeeft. Het binaire bestand zit vol met debug-strings die de volledige architectuur ervan in kaart brengen, georganiseerd in gelabelde subsystemen. Deze strings waren nooit bedoeld om door het slachtoffer te worden gezien. Het zijn diagnostische gegevens van de ontwikkelaar die in de build zijn achtergebleven, en ze vertellen ons precies waarvoor deze tool is ontworpen.
Strings met voorvoegsel [P1] beschrijf de eerste fase: de loader downloadt een payload van zijn C2 ([P1] Downloading payload...). De download zelf maakt gebruik van WinHTTP, dat tijdens de uitvoering wordt geladen. De foutopsporingsstrings [HTTP] Connect, [HTTP] Send, en [HTTP] Recv de volledige verzoekcyclus volgen, terwijl [HTTP] winhttp unavailable geeft het alternatieve pad weer als de bibliotheek niet kan worden geladen. Het slaat de payload op in het gedeelde geheugen via Windows ([P1] Payload in shared memory), en start een tweede exemplaar van zichzelf op als Fase 2 ([P1] Phase-2 launched). In fase 2 wordt de payload uit het gedeelde geheugen gelezen ([P2] Payload copied from shared memory) en decodeert deze. De tekenreeksen [CRYPT] Decrypting... en [CRYPT] MZ OK controleer of de payload versleuteld aankomt en na ontsleuteling wordt gevalideerd als een Windows . De ontsleutelde DLL wordt op de schijf opgeslagen onder een bestandsnaam die overeenkomt met het patroon wmiprvse_*.tmp, ontworpen om niet op te vallen tussen de tijdelijke bestanden die worden aangemaakt door de legitieme Windows Provider Host.
De loader is vervolgens zo ontworpen dat hij een specifieke geëxporteerde functie uit de gedecodeerde DLL aanroept: HvncRun. De snaren [LOAD] Calling HvncRun... en --- HvncClient log --- de payload identificeren als een HVNC-client, een tool voor Hidden Virtual Network Computing. HVNC verschilt op een cruciaal punt van een conventionele trojan voor externe toegang: het creëert een volledig afzonderlijke, onzichtbare desktopsessie op de computer van het slachtoffer. De aanvaller kan browsers openen, toegang krijgen tot internetbankieren en handelingen verrichten binnen geauthenticeerde sessies zonder dat er iets op het zichtbare scherm van de gebruiker verschijnt. Het is een tool die voornamelijk wordt gebruikt bij financiële fraude.
Om de HVNC-payload heimelijk uit te voeren, is de loader zo ontworpen dat hij de DLL in explorer.exe met behulp van een techniek die bekendstaat als sectiegebaseerde injectie. De strings [INJ] === Section-based injection into explorer.exe === en [INJ] Remote thread created in explorer.exe! beschrijf een reeks stappen waarin de loader een gedeeld geheugengedeelte aanmaakt via NtCreateSection, koppelt dit aan zowel zijn eigen proces als de Windows , schrijft shellcode en het DLL-pad naar het gedeelde gebied, en start een externe thread via NtCreateThreadEx. Dit is een moeilijker te detecteren variant van procesinjectie dan de klassieke WriteProcessMemory aanpak, omdat hiermee wordt voorkomen dat er rechtstreeks naar het geheugen van het doel wordt geschreven. Als de NT-API’s niet beschikbaar zijn, schakelt de loader over op het opslaan van de DLL op schijf en het rechtstreeks laden ervan ([INJ] Required NT APIs not available, falling back to DropAndLoad).

Het binaire bestand bevat actieve beveiliging tegen analyse. De tekenreeks [AA] Debugger/sandbox detected geeft aan dat het de situatie in de gaten houdt en zijn gedrag daarop aanpast. Het beschikt over de middelen om dat te doen: IsDebuggerPresent en GetTickCount verschijnen in de importtabel; deze worden vaak gebruikt voor het opsporen van debuggers en het omzeilen van sandboxes op basis van timing, hoewel beide ook standaard CRT-imports zijn in elk door MSVC gecompileerd binair bestand. De debug-string is de duidelijkste aanwijzing dat deze API’s bewust worden gebruikt.
Wat dit betekent voor iemand die het heeft uitgevoerd
Als je Slack ergens anders hebt gedownload dan slack.com de laatste tijd, met name van een domein dat eindigt op .pro, of een site die automatisch een bestand downloadde zodra je ergens op de pagina klikte, neem dat dan serieus.
De loader probeert verbinding te maken met zijn C2-server voordat het Slack-venster volledig is geladen. Hij is zo ontworpen dat hij die verbinding (indien tot stand gebracht) gebruikt om een HVNC-payload te downloaden en te ontsleutelen en deze vervolgens in explorer.exe om vanuit de Windows zelf te werken. De Squirrel-installatie schrijft dezelfde Run-sleutel weg als een legitieme Slack-installatie zou doen, waardoor de autostart-vermelding niet te onderscheiden is van die op een schone computer. Tegelijkertijd hoeft de loader maar één keer te slagen: als hij de HVNC-payload downloadt en deze in explorer.exe Tijdens de eerste uitvoering heeft de aanvaller een voet aan de grond die blijft bestaan tot de volgende herstart. Of de payload daarna nog langer aanwezig blijft, hangt af van de volgende stappen van de C2-operator.
Hoe blijf ik veilig
Deze campagne is een schoolvoorbeeld van hoeveel technische inspanning er nodig is om er onopvallend uit te zien. Het ene codepad installeert echte software via een legitiem framework. Het andere voert een meerfasige loader uit met dynamische API-resolutie, versleutelde levering van de payload, procesinjectie in de Windows en verdedigingsmechanismen tegen analyse, allemaal verpakt in een binair bestand dat zichzelf identificeert als een Microsoft-service. De afleiding verbergt wat er werkelijk gebeurt, terwijl de loader de aanvaller een voet aan de grond geeft.
Sla de echte downloadpagina’s van de software die je gebruikt op als bladwijzer. Als je merkt dat je op Google zoekt naar ‘Slack download’ en op het eerste resultaat klikt dat er goed uitziet, dan ben jij precies de persoon voor wie deze campagne bedoeld is.
- Download Slack alleen via de officiële website. Ga rechtstreeks naar slack.com of gebruik een betrouwbare bladwijzer. Klik niet op advertenties of onbekende links.
- Controleer de URL zorgvuldig. Let op kleine wijzigingen, zoals extra letters of ongebruikelijke domeinnamen (bijvoorbeeld „.pro“ in plaats van „.com“).
- Wees op je hoede voor websites die bij het klikken automatisch een download starten. Als een pagina een bestand begint te downloaden zodra je ergens klikt, sluit deze dan.
- Controleer het installatieprogramma voordat u het uitvoert. Klik met de rechtermuisknop op het bestand, bekijk de eigenschappen en controleer of het een geldige digitale handtekening heeft.
- Maak gebruik van realtime beveiliging. Een beveiligingsprogramma kan bekende schadelijke domeinen blokkeren en verdacht gedrag tijdens de installatie opsporen.
- Let op ongebruikelijk gedrag na het installeren van software. Onverwachte netwerkactiviteit, vertragingen of onbekende processen zijn het onderzoeken waard.
- Als er iets niet klopt, onderneem dan meteen actie. Verbreek de internetverbinding, voer een volledige scan uit en wijzig je wachtwoorden vanaf een veilig apparaat, met name voor je e-mail-, bank- en werkaccounts.
Wat te doen als u mogelijk bent getroffen
- Verbreek onmiddellijk de verbinding met het netwerk om alle actieve C2-sessies te beëindigen.
- Voer een volledige scan uit met Malwarebytes.
- Wijzig alle wachtwoorden voor accounts waarop u vanaf deze computer hebt ingelogd. Doe dit vanaf een ander, niet-besmet apparaat. Geef daarbij voorrang aan e-mail-, bank- en SSO-accounts.
- Als dit een bedrijfscomputer is, neem dan onmiddellijk contact op met uw IT- of beveiligingsteam.
Indicatoren van compromissen (IOC's)
Bestandshashes (SHA-256)
cfd2e466ea5ac50f9d9267f3535a68a23e4ff62e3fe3e20a30ec52024553c564 (slack-4-49-81.exe)
08fd0a82cdeb0a963b7416cf57446564dfed5de5c6f66dee94b36d28bfefec9d (svc.tmp)
Distributie
slacks[.]pro
debtclean-ua[.]sbs
Netwerkindicatoren
94.232.46.16:8081
“Een van de beste cyberbeveiligingspakketten ter wereld.”
Volgens CNET.Lees hun recensie →





