Inhoud
- Introductie
- Campagneoverzicht
- Eerste toegang
- Infectieketen
- Technische Analyse
- Fase 1: Eerste levering (Archief→JavaScript)
- Fase 2: Analyse van PowerShell Loader1
- Fase 3: Analyse van PowerShell Loader2
- Fase 4 – Phantom Stealer v3.5.0: Gegevensverzameling en -exfiltratie
- Campagne-attributie
- Conclusie
- IOC's
- Seqrite Detectiebereik
- MITRE-aanvalstactieken, -technieken en -procedures (TTP's)
Introductie
Phishingcampagnes blijven zich ontwikkelen door zich te vermommen als gewone zakelijke communicatie die ontvangers waarschijnlijk vertrouwen. Tijdens ons onderzoek ontdekten we een campagne die gebruikmaakt van meerdere phishing-methoden om de kwaadaardige JavaScript-bestanden te verspreiden die verpakt zitten in gecomprimeerde archiefbijlagen. Hoewel de e-mails zich voordoen als verschillende vertrouwde entiteiten, waaronder een wereldwijde logistieke dienstverlener en een belastingdienst, leiden ze uiteindelijk tot een identieke infectieketen in meerdere stappen.
Na uitvoering start de JavaScript-downloader een versleuteld PowerShell-script dat de volledige kwaadaardige workflow in het geheugen uitvoert. Hierdoor wordt de schijfruimte aanzienlijk verkleind en is detectie lastiger. De infectieketen implementeert uiteindelijk Phantom Stealer v3.5.0, dat gevoelige informatie verzamelt van het gecompromitteerde systeem en de verzamelde gegevens via SMTP versleuteld verzendt.
Deze campagne laat zien hoe cybercriminelen steeds vaker overtuigende, op het bedrijfsleven gerichte social engineering combineren met gelaagde obfuscatie en technieken voor het uitvoeren van bestanden zonder bestanden om conventionele beveiligingsmaatregelen te omzeilen en bedrijfsomgevingen te compromitteren.
Campagneoverzicht
De campagne maakt gebruik van zorgvuldig opgestelde phishing-e-mails die lijken op gewone zakelijke communicatie om ontvangers ertoe te verleiden een kwaadaardig JavaScript-bestand uit te voeren dat verborgen zit in gecomprimeerde archiefbijlagen. Tijdens onze analyse hebben we twee verschillende phishing-e-mails geïdentificeerd die dezelfde malware verspreiden via verschillende social engineering-technieken.
De eerste e-mail doet zich voor als een UPS-doorstuurservice en presenteert details over verzendboekingen en offertes om gebruikers te lokken die betrokken zijn bij inkoop- of logistieke activiteiten. De tweede e-mail doet zich voor als een officiële kennisgeving van de Maleisische belastingdienst (LHDN) en vraagt om documentatie voor een vennootschapsbelastingcontrole om druk uit te oefenen op ontvangers die verantwoordelijk zijn voor financiën of naleving van de regelgeving.
Hoewel de lokmethoden verschillen, maken beide gebruik van bekende bedrijfsprocessen die snelle aandacht vereisen. Door vertrouwde merken, realistische bedrijfsscenario's en een gevoel van urgentie in te zetten, vergroten de aanvallers de kans dat ontvangers het bijgevoegde archief openen en de ingesloten JavaScript-code uitvoeren.
Eerste toegang
De campagne begint met phishing-e-mails die eruitzien als legitieme zakelijke communicatie. Tijdens ons onderzoek hebben we twee phishing-e-mails waargenomen die gebaseerd waren op verschillende zakelijke scenario's, maar beide volgden dezelfde aanvalsketen.
· E-mail 1 – UPS-verzendingmelding

De eerste phishing-e-mail doet zich voor als een ander. UPS-doorstuurpunt Het e-mailbericht doet zich voor als een standaard aanvraag voor het boeken van een verzending. Het is gericht aan een inkoopmailbox en bevat een verzendnummer, offerte-ID, leveringsgegevens en kosten voor de ontvanger, waardoor het lijkt op legitieme logistieke communicatie die tijdens de dagelijkse bedrijfsvoering plaatsvindt. Om de authenticiteit te versterken, bevat het e-mailbericht bedrijfslogo's, verzendinformatie en een gecomprimeerde archiefbijlage die zogenaamd de bijbehorende verzenddocumenten bevat.
Interessant, De verzendgegevens verwijzen naar een offerte van 25 juni 2025, ondanks dat de e-mail in juni 2026 is verzonden. Dit wijst erop dat de phishingtemplate waarschijnlijk is hergebruikt van een eerdere campagne of is samengesteld zonder alle velden grondig bij te werken.
· E-mail 2 – Kennisgeving belastingcontrole Maleisië

De tweede phishing-e-mail doet zich voor als de Maleisische Inland Revenue Board (LHDN) Het bericht is volledig in het Maleis geschreven, waardoor het de indruk wekt van een officiële belastingcontrolemelding. Er wordt gevraagd om bewijsstukken voor de vennootschapsbelastingaanslag van 2026 en er wordt een indieningstermijn van 14 dagen gesteld om een gevoel van urgentie te creëren. Door te verwijzen naar legitieme belastingformulieren, overheidsinstanties en officiële contactgegevens proberen de aanvallers geloofwaardigheid op te bouwen en ontvangers over te halen het bijgevoegde archief te openen.
Door de lokale taal en de wettelijke context lijkt de e-mail op gewone zakelijke correspondentie met betrekking tot belastingnaleving.
Een veelvoorkomend leveringsmechanisme
Hoewel de thema's van de social engineering verschillen, verspreiden beide e-mails hetzelfde kwaadaardige JavaScript-bestand, verpakt in gecomprimeerde archieven. Dit wijst erop dat de aanvallers een consistente methode gebruiken om malware te verspreiden, maar de lokroep aanpassen aan verschillende zakelijke scenario's.
Infectieketen
Figuur 3 illustreert de volledige infectieketen die we tijdens onze analyse hebben waargenomen. De campagne maakt gebruik van een gelaagde uitvoeringsworkflow waarbij elke fase de volgende component geleidelijk reconstrueert en lanceert, om uiteindelijk Phantom Stealer v3.5.0 te implementeren.

Technische Analyse
Fase 1: Eerste levering (Archief->JavaScript)
Beide phishing-e-mails bevatten een gecomprimeerde archiefbijlage. De JavaScript-code in de bijlage is gemaskeerd met bestandsnamen die nauw aansluiten bij het thema van de phishing-e-mail. In alle onderzochte voorbeelden gebruiken de aanvallers namen die relevant zijn voor het bedrijfsleven, zoals:
- UPS Docs_Verzendnummer 3264010420-Offerte-ID 203263067.js
- Bankoverschrijvingsbewijs voor factuur van mei '26 MBB531540 dd 20042026.js
- CKHT800A_RUJ ATC13529CWYE25M.js
Door de bestandsnaam aan te passen aan de social engineering-truc, lijkt de bijlage een legitiem verzenddocument, bankafschrift of belastingbestand te zijn, waardoor de kans groter wordt dat ontvangers het zonder argwaan openen.
Analyse van een JavaScript-bestand
In plaats van direct kwaadaardige activiteiten uit te voeren, verbergt het script eerst zijn functionaliteit door middel van meerdere lagen van tekenreeksverhulling en indirecte functieaanroepen.

Functienamen, methodeaanroepen, opdrachtreeksen enzovoort worden vervangen door numerieke indexen die verwijzen naar verborgen tekenreeksarrays, waardoor het script aanzienlijk complexer lijkt dan het in werkelijkheid is.
Het script bevat talloze hulpfuncties die simpelweg basisrekenkundige of vergelijkingsbewerkingen uitvoeren. Deze wrappers bieden geen functioneel voordeel, maar verminderen de leesbaarheid aanzienlijk doordat analisten meerdere lagen van indirectie moeten traceren voordat ze de daadwerkelijke uitvoeringslogica bereiken. De gecodeerde tekenreeksarrays worden slechts eenmaal geïnitialiseerd en vervolgens hergebruikt, wat de uitvoeringsstroom verder verhult.
Mogelijkheden van JavaScript Loader
Hoewel de verhulling het gedrag van het script aanvankelijk maskeert, geeft het herstellen van de ingebedde tekenreeksen een duidelijk beeld van de beoogde functionaliteit. De gedecodeerde tekenreeksen onthullen verwijzingen naar PowerShell, native Windows COM-objecten, bestandsbewerkingen en WMI, die allemaal wijzen op een zorgvuldig ontworpen loader in plaats van een op zichzelf staande malware-payload.

Deze artefacten geven aan dat JavaScript verantwoordelijk is voor het voorbereiden van de uitvoeringsomgeving, het reconstrueren van de volgende fase en het overdragen van de controle aan PowerShell. Deze gelaagde aanpak houdt de kern van de code verborgen tot het moment van uitvoering, waardoor statische analyse aanzienlijk lastiger wordt.
Ingesloten Base64-payload
Een van de meest opvallende kenmerken van de loader is de aanwezigheid van een grote Base64-gecodeerde blob die direct in de JavaScript-broncode is ingebed. In plaats van de volgende stap van een externe bron te downloaden, integreert de JavaScript-loader een volledig Base64-gecodeerd PowerShell-script in zijn broncode.

De gecodeerde payload wordt opgeslagen als een eigenschap van een JavaScript-object en wordt pas tijdens de uitvoering gereconstrueerd. Hierdoor blijft de loader op zichzelf staan en wordt de daadwerkelijke PowerShell-logica verborgen voor statische inspectie.
Na de initialisatie haalt de JavaScript-code de ingesloten Base64-gecodeerde PowerShell-payload op die is opgeslagen in het object `encodedData`. Met behulp van native Windows COM-componenten decodeert de loader de ingesloten inhoud, reconstrueert het PowerShell-script en schrijft het naar een tijdelijk `.ps1`-bestand. Vervolgens roept het `powershell.exe` aan met verborgen uitvoeringsparameters om de controle over te dragen aan de volgende fase van de infectieketen.
Een typische uitvoeringssequentie van JavaScript dat PowerShell uitvoert, ziet er als volgt uit:

Fase 2: Analyse van PowerShell Loader1
In plaats van de volgende stap direct in platte tekst op te slaan, slaat de PowerShell-loader deze op als een met AES versleutelde payload. De versleutelde inhoud, de versleutelingssleutel en de initialisatievector (IV) zijn allemaal als Base64-gecodeerde tekenreeksen in het script opgenomen. Hierdoor blijft de loader volledig op zichzelf staan en blijft de daadwerkelijke kwaadaardige logica verborgen tot het moment van uitvoering.


Voordat de versleutelde gegevens kunnen worden ontsleuteld, verwijdert het script witruimte en regeleinden uit de ingebedde Base64-strings om een continue gegevensstroom te reconstrueren. Vervolgens worden de opgeschoonde strings omgezet in byte-arrays met behulp van de .NET- methode Convert.FromBase64String() . Dezelfde routine wordt hergebruikt om de versleutelde gegevens, de AES-sleutel en de initialisatievector te verwerken.
AES-ontsleutelingsprocedure
Zodra de Base64-gecodeerde componenten zijn omgezet in byte-arrays, reconstrueert de loader de verborgen payload met behulp van de .NET AesCryptoServiceProvider- klasse.

Het script configureert de cipher om in CBC-modus te werken met PKCS7-padding, waarna een decryptor-object wordt aangemaakt dat de versleutelde gegevens volledig in het geheugen verwerkt. Door gebruik te maken van native .NET-cryptografische bibliotheken in plaats van aangepaste decryptieroutines, bereikt de loader een betrouwbare en compacte implementatie, terwijl de volgende stap verborgen blijft tot de uitvoering.
De onversleutelde bytes worden via een CryptoStream naar een MemoryStream geschreven, waardoor het volledige onversleutelingsproces in het geheugen kan plaatsvinden.
Uitvoering
Nadat het script in platte tekst succesvol is hersteld, draagt de loader de uitvoering onmiddellijk over met behulp van Invoke-Expression. Hierdoor kan het script rechtstreeks vanuit het geheugen worden uitgevoerd, waardoor de volgende fase kan beginnen zonder dat er extra bestanden op het gecompromitteerde systeem worden aangemaakt.

Fase 3: Analyse van PowerShell Loader2
Fase 3 in deze infectieketen is een andere Base64-ontsleutelde blob die in PowerShell is gegenereerd vanuit fase 2.

In tegenstelling tot de vorige fase, die zich richt op het decoderen van het ingebedde script, is deze loader verantwoordelijk voor het herstellen van een beveiligde .NET-assembly, het bewaken van de uitvoeringsomgeving en het rechtstreeks vanuit het geheugen starten van de assembly zonder deze naar de schijf te schrijven.
Het voorbereiden van de uiteindelijke payload voor reflectieve uitvoering
Analyse van het secundaire PowerShell-script bracht aan het licht dat het twee verschillende payloads bevat , die elk een andere functie vervullen in de infectieketen.
· Payload 1: Injector
De eerste payload wordt opgeslagen als een Base64-gecodeerde blob, beveiligd met een eenvoudige XOR-codering. Deze assembly fungeert als een in-memory injector die verantwoordelijk is voor de uitvoering van de volgende fase.
Voordat de PowerShell-loader wordt uitgevoerd, decodeert deze de Base64-gegevens en past een XOR-ontsleutelingsprocedure toe met behulp van de vastgelegde sleutel. “DEVILboy56@@” om de oorspronkelijke samenstelling in het geheugen te reconstrueren.


Succesvolle XOR-ontsleuteling van base64-blob resulteert in een .NET-assembly die direct in het geheugen wordt geladen.


· Payload 2: Phantom Stealer
Een tweede payload is ingebed in de PowerShell-loader als een ruwe byte-array die is opgeslagen in decimale notatie.

Onderzoek van de byte-array onthulde de DOS-header "MZ" (4D 5A), wat bevestigt dat het een geldig Portable Executable (PE)-bestand is en geen shellcode of gecodeerde data. In tegenstelling tot de eerste payload wordt deze PE niet gedecodeerd door het PowerShell-script. In plaats daarvan wordt deze rechtstreeks als argument doorgegeven aan de reflectieve .NET-assembly, samen met het pad naar het legitieme aspnet_compiler.exe-binaire bestand.


Dit ontwerp scheidt de verantwoordelijkheden van elk onderdeel duidelijk van elkaar.
- Het PowerShell-script fungeert voornamelijk als een orchestrator, die de reflective loader herstelt en deze voorziet van het doelproces en de ingebedde PE-payload.
- De eigenlijke injectie- en uitvoeringslogica wordt gedelegeerd aan de in-memory .NET-assembly, waardoor de complexiteit van de PowerShell-fase aanzienlijk wordt verminderd en de uiteindelijke malware verborgen blijft tot de volgende uitvoeringsfase.
Fase 4 – Phantom Stealer v3.5.0: Gegevensverzameling en -exfiltratie
Na de succesvolle uitvoering van de reflectieve .NET-loader, culmineert de aanval in de implementatie van Phantom Stealer v3.5.0 . De stealer is gericht op het verzamelen van een breed scala aan gevoelige informatie van het gecompromitteerde systeem, waaronder hostinformatie, geïnstalleerde applicaties, browsergegevens, cookies, opgeslagen betaalgegevens, cryptowallets en gegevens die zijn gekoppeld aan populaire berichtenapps. Door informatie uit meerdere bronnen te verzamelen, probeert de malware de waarde van de gecompromitteerde host te maximaliseren voordat de data-exfiltratie wordt gestart.

Informatie verzamelen
Phantom Stealer inventariseert het geïnfecteerde systeem en verzamelt informatie uit talloze applicaties en gebruikersprofielen. De verzamelde gegevens omvatten systeeminformatie, geïnstalleerde software, browsergegevens, cookies, opgeslagen betaalkaarten, browsegeschiedenis en bestanden die zijn gekoppeld aan cryptowallets en berichtenapps. De verzamelde informatie wordt georganiseerd in aparte bestanden op basis van de applicatie of het gegevenstype, waardoor latere exfiltratie wordt vereenvoudigd.
Voorbeelden van geoogste artefacten zijn:
- Chromium_wachtwoorden_ .txt
- Chromium_creditcards_ .txt
- Chromium_cookies_ .json
- Gecko_wachtwoorden_ .txt
- Gecko_cookies_ .json
SMTP-authenticatie
Nadat een sessie tot stand is gebracht, authenticeert de malware zich bij de SMTP-server met behulp van het AUTH LOGIN- mechanisme. De gebruikersnaam en het wachtwoord worden in Base64-gecodeerde vorm verzonden voordat de SMTP-server toegang verleent tot het doorsturen van uitgaande e-mail.
Tijdens onze analyse werden de volgende gegevens geconstateerd:
Gebruikersnaam (Base64): cnVoaUBha3Rla21ldGFsLmNvbS50cg==
Gedecodeerd naar: ruhi@aktekmetal[.]com[.]tr
Het wachtwoord wordt eveneens in Base64-gecodeerde vorm verzonden voordat de authenticatie succesvol is afgerond.

Toen we de base64-gegevens decodeerden die door de aanvaller waren verzameld (weergegeven in Fig. 18), ontdekten we dat de daadwerkelijke gegevens het onderstaande formaat hadden.

SMTP-gebaseerde data-exfiltratie
Phantom Stealer verzendt de verzamelde informatie rechtstreeks via de Eenvoudig mailoverdrachtprotocol (SMTP)Uit dynamische analyse bleek dat de malware een SMTP-sessie opzet via TCP-poort 587, de standaard verzendpoort voor geauthenticeerde e-mailbezorging. Na verbinding met de mailserver start de malware een Extended SMTP (ESMTP) sessie met behulp van de EHLO commando en vervolgens upgrade het communicatiekanaal via STARTTLSwaardoor wordt gewaarborgd dat de verzonden inloggegevens en gestolen informatie tijdens de overdracht worden beschermd door TLS-encryptie.
In plaats van alle gestolen informatie in één archief te combineren, genereert Phantom Stealer meerdere bestanden, die elk overeenkomen met een specifieke applicatie of categorie inloggegevens.

Nadat de verzamelde informatie succesvol is verzonden, beëindigt de malware de SMTP-sessie op een gecontroleerde manier met het QUIT -commando. Hierdoor wordt de e-mailtransactie voltooid volgens de standaard SMTP-semantiek, waardoor de kwaadwillige communicatie sterk lijkt op legitiem uitgaand e-mailverkeer.
Campagne-attributie
Tijdens de analyse hebben we geen doorslaggevend bewijs gevonden dat deze campagne koppelt aan een specifieke dader of inbraakmethode. Hoewel de uiteindelijke payload is geïdentificeerd als Phantom Stealer v3.5.0, is de malware wijdverspreid binnen het cybercriminele ecosysteem en is deze door meerdere operators gebruikt.
Conclusie
Deze campagne laat zien hoe moderne phishingaanvallen zijn geëvolueerd van eenvoudige malwareverspreiding naar zorgvuldig georkestreerde, meerfasige aanvalsketens. Door legitieme zakelijke communicatie met betrekking tot logistiek, bankwezen en regelgeving na te bootsen, vergroten de aanvallers de kans op interactie met de gebruiker, terwijl ze een geavanceerd uitvoeringsproces verbergen achter ogenschijnlijk routineuze documenten.
In plaats van de uiteindelijke lading direct bloot te leggen, onthult elke fase slechts het volgende onderdeel in de infectieketen, waardoor de complexiteit van statische analyse aanzienlijk toeneemt en de mogelijkheden voor vroegtijdige detectie afnemen.
Voor organisaties dient deze campagne als een herinnering dat overtuigende e-mails met een zakelijk thema, zelfs die afkomstig lijken te zijn van vertrouwde logistieke dienstverleners, financiële instellingen of overheidsinstanties, met de nodige voorzichtigheid moeten worden behandeld. Het versterken van de e-mailbeveiliging, het trainen van medewerkers om onverwachte bijlagen te controleren, het beperken van onnodige scriptuitvoering en het monitoren van verdachte PowerShell-activiteit, reflectieve geheugenbelasting, procesinjectie en ongebruikelijk uitgaand SMTP-verkeer kunnen de kansen op het detecteren van dergelijke bedreigingen aanzienlijk vergroten voordat gevoelige informatie in gevaar komt.
Deze campagne benadrukt het belang van een gelaagde beveiligingsstrategie, waarbij e-mailbeveiliging, endpoint protectionGedragsmonitoring en netwerkzichtbaarheid werken samen om geavanceerde, meerfasige aanvallen te identificeren die mogelijk aan traditionele, op signaturen gebaseerde detectiemethoden ontsnappen.
IOC's-
6BBFC88534D5D515DDDB0EC9BB618530
8A620E451E64F418BC21FD458E952F2E
5F238710A5EF4F6DDBBE7A118C822705
a30b628d0c087f305b35be3e3f5281b3
34bfa888695b9aaa41bd575245972043
Seqrite Detectiebereik
Trojan.Injector.S39585891
Trojan.YakbeexMSIL.ZZ4
PS.Trojan.Loader.50921.GC
Js.Trojan.Loader.50922.GC
MITRE-aanvalstactieken, -technieken en -procedures (TTP's)
| Tactieken (ATT&CK ID) | Technieken / Subtechniek (ID) | Procedure |
| Initiële toegang (TA0001) | Phishing: Spearphishing-bijlage (T1566.001) | Verzendt een schadelijke ZIP-bijlage. |
| Uitvoering (TA0002) | Opdracht- en scriptinterpreter: JavaScript (T1059.007) | Voert versleutelde JavaScript uit. |
| Uitvoering (TA0002) | Opdracht- en scriptinterpreter: PowerShell (T1059.001) | Start een verborgen PowerShell-bestand. |
| Stealth (TA0005) | Versleutelde/gecomprimeerde bestanden en informatie (T1027) | Maakt gebruik van meerlaagse verhulling. |
| Stealth (TA0005) | Bestanden of informatie decoderen/ontcijferen (T1140) | Decodeert Base64-, AES- en XOR-payloads. |
| Stealth (TA0005) | Reflecterende code laden (T1620) | Laadt een .NET-assembly uit het geheugen. |
| Stealth (TA0005) | Maskeren (T1036) | Gebruikt bestandsnamen met een zakelijk thema. |
| Stealth (TA0005) | Procesinjectie (T1055) | Injecteert een payload in aspnet_compiler.exe. |
| Stealth (TA0005) | Systeem binaire proxy-uitvoering (T1218) | Misbruikt legitieme .NET-binaire bestanden |
| Ontdekking (TA0007) | Systeeminformatie-ontdekking (T1082) | Verzamelt hostinformatie |
| Ontdekking (TA0007) | Procesontdekking (T1057) | Controleert de status van het doelproces |
| Toegang tot inloggegevens (TA0006) | Inloggegevens uit wachtwoordarchieven (T1555) | Extraheert opgeslagen inloggegevens |
| Toegang tot inloggegevens (TA0006) | Inloggegevens van webbrowsers (T1555.003) | Steelt browsergegevens en cookies. |
| Collectie (TA0009) | Gegevens van lokaal systeem (T1005) | Verzamelt lokale applicatiegegevens |
| Collectie (TA0009) | Gearchiveerde verzamelde gegevens (T1560) | Organiseert gestolen gegevens in bestanden. |
| Exfiltratie (TA0010) | Exfiltratie via alternatief protocol (T1048) | Exfiltreert gegevens via SMTP |
| Commando en controle (TA0011) | Applicatielaagprotocol: Mailprotocollen (T1071.003) | Maakt gebruik van het SMTP-protocol. |
| Commando en controle (TA0011) | Versleuteld kanaal (T1573) | Versleutelt SMTP met STARTTLS. |
auteurs
- Prashil Maan
- Manoj Kumar Neelamegam



