Introductie
Seqrite Labs heeft onlangs een malwarecampagne ontdekt die misbruik maakte van de geloofwaardigheid van overheidsinstellingen om de kans op succesvolle infecties te vergroten. De daders deden zich voor als legitieme overheidsinstanties en verspreidden kwaadaardige e-mails vermomd als officiële berichten over belastingen, teruggaven, nalevingsvereisten en regelgeving. Door gebruik te maken van herkenbare overheidslogo's, urgentie en financiële prikkels, was de campagne erop gericht ontvangers over te halen om kwaadaardige bijlagen te openen of te interageren met ingesloten inhoud. Deze activiteit benadrukt de aanhoudende effectiviteit van social engineering-technieken met een overheidsthema bij het verspreiden van malware en het compromitteren van gebruikers.
Infectieketen:

Eerste bevindingen over de campagne:
Er is een geavanceerde phishingcampagne ontdekt die zich richt op Indiase bedrijven en belastingbetalers. De campagne maakt gebruik van thema's rondom de GST (goederen- en dienstenbelasting) om malware te verspreiden. De campagne, die op 06 juli 2026 voor het eerst werd geïdentificeerd op VirusTotal, doet zich voor als legitieme overheidscommunicatie en gebruikt lokmiddelen met betrekking tot belastingen om de interactie met gebruikers te vergroten. De aanvallers gebruiken overtuigende documenten en bestandsnamen die sterk lijken op officiële GST-meldingen, waardoor het voor ontvangers moeilijk is om de schadelijke inhoud te onderscheiden van legitieme overheidscorrespondentie. Het primaire doel van de campagne lijkt het verspreiden van malware en het stelen van gevoelige informatie te zijn. Dit benadrukt het voortdurende misbruik van social engineering-technieken met overheidsthema's om het Indiase financiële en belastingstelsel aan te vallen.
Eerste e-mail:
In de geanalyseerde casus verstuurde de aanvaller een phishing-e-mail die de infrastructuur van de Indiase overheid voor de goederen- en dienstenbelasting (GST) nabootste. De e-mail was afkomstig van het adres donotreply.@gst.gov.in en had als onderwerp "Refund Application GST RFD-01 filed vide ARN AL27052600952P". Het bericht was zo opgesteld dat het leek op een officiële GST-terugbetalingsmelding, in een poging ontvangers ervan te overtuigen dat een terugbetalingsaanvraag was verwerkt of nog moest worden beoordeeld. Om de geloofwaardigheid te vergroten, bevatte de e-mail een archiefbijlage met de naam GST-Refund_July-26_AL27052600952P.rar, die verwees naar hetzelfde aanvraagreferentienummer (ARN) als in de onderwerpregel. Het gebruik van overeenkomende identificatiegegevens in de e-mailinhoud en de bijlage is een veelgebruikte social engineering-tactiek om de legitimiteit te versterken en wantrouwen te verminderen.

Afbeelding: E-mail
Technische Analyse:
Na extractie bleek het archief een uitvoerbaar bestand te bevatten dat zich voordeed als een document of applicatie met betrekking tot btw-teruggave. Een eerste onderzoek wees uit dat de payload een .NET-gebaseerd uitvoerbaar bestand is, wat erop wijst dat het is ontwikkeld met behulp van het Microsoft .NET-framework. Kwaadwillenden maken vaak gebruik van .NET-binaries omdat deze relatief eenvoudig te ontwikkelen zijn, een snelle implementatie van kwaadaardige functionaliteit mogelijk maken en vaak obfuscatiemechanismen bevatten die statische analyse bemoeilijken. Het uitvoerbare bestand dient als de primaire kwaadaardige payload die via de phishingcampagne wordt verspreid en vertegenwoordigt de volgende fase in de aanvalsketen na een succesvolle interactie van de gebruiker met de bijlage.

Analyse van het uitgepakte uitvoerbare bestand wees uit dat het een binair bestand was gebaseerd op het Microsoft .NET Framework. In tegenstelling tot native Windows Portable Executable (PE)-bestanden die direct naar machinecode worden gecompileerd, bevatten .NET-applicaties Intermediate Language-code die wordt uitgevoerd door de Common Language Runtime.

De analyse begint met een .NET-binair bestand dat een bitmap (AF) bevat die in de resources is ingebed. In plaats van de payload van de volgende fase als een normale DLL-resource op te slaan, verbergt de auteur deze in de afbeelding door de payloadbytes te coderen in de RGB-waarden van de pixels van de bitmap.

Wanneer de applicatie start, roept deze de functie ServiceChromatic() aan, waarbij de ingebedde bitmap als invoer wordt doorgegeven. Hoewel de functie een grote hoeveelheid verhullende code bevat, is het eigenlijke doel ervan eenvoudig: de functie doorloopt de bitmap in kolomvolgorde, leest de rode, groene en blauwe waarden van elke pixel en reconstrueert de oorspronkelijke bytestroom. De functie extraheert de eerste 64,000 bytes uit de afbeelding en retourneert deze als een byte[].
De herstelde byte-array wordt vervolgens rechtstreeks doorgegeven aan Assembly.Load(), waardoor de verborgen .NET-assembly volledig vanuit het geheugen wordt geladen zonder naar de schijf te worden geschreven. In dit voorbeeld is de geëxtraheerde payload de assembly van de volgende fase, Windows Health Optimizer Plus.dll, die vervolgens via reflectie wordt uitgevoerd.

Analyse van de tweede fase van de lader:
Na de succesvolle extractie en het laden in het geheugen van de tweede-fase loader, Windows Health Optimizer Plus.dll , roept de malware de methode v3.aq() aan met drie parameters: v3.aq(“73537457”, “6C6E6A”, “CapitalCities”). De eerste twee argumenten zijn hexadecimaal gecodeerde tekenreeksen. Wanneer 73537457 wordt omgezet van hexadecimaal naar ASCII, wordt “sStW” en 6C6E6A “inj” . Deze gedecodeerde tekenreeksen worden vervolgens door de tweede-fase assembly gebruikt als commando- of bewerkingsidentificaties. Hun waarden geven aan dat de malware de volgende fase instrueert om de ingebedde bitmap-payload (sStW) te verwerken en een injectie-gerelateerde bewerking (inj) uit te voeren. Dit suggereert dat deze parameters dienen als uitvoeringsinstructies die het gedrag van de payload van de volgende fase bepalen.

Payload-extractie op basis van bitmaps:
Vervolgens maakt het gebruik van een op bitmaps gebaseerde techniek voor het extraheren van de payload door misbruik te maken van pixelopslag om ingebedde data te verbergen. In plaats van de afbeelding alleen te gebruiken voor visuele inhoud, leest het de ruwe ARGB-waarden van individuele pixels en reconstrueert het de verborgen binaire payload uit de geëxtraheerde bytestroom. De bitmap fungeert in feite als drager voor de verborgen data, waardoor de payload verborgen kan blijven binnen een verder legitiem afbeeldingsformaat.
De geëxtraheerde payload wordt verwerkt via een aangepaste XOR-gebaseerde decryptieroutine, waarbij de meegeleverde tekenreeksparameter wordt geconverteerd naar UTF-16 Big Endian-bytes en gebruikt als XOR-sleutelmateriaal, samen met een extra waarde die is afgeleid van de versleutelde buffer. Na decryptie wordt de payload direct in het geheugen gereconstrueerd, waardoor perfgurd.dll zichtbaar wordt. De malware laadt de DLL vanuit de gecodeerde representatie zonder deze naar de schijf te schrijven, waardoor een bestandsloze uitvoeringsketen mogelijk is die de detectiemogelijkheden verkleint.

Analyse van de derde fase van de loader – perfgurd.dll
De onderstaande methode fungeert als een dynamische uitvoeringswrapper die een specifieke methode uit een geladen assembly aanroept zonder de naam ervan direct te gebruiken. Eerst wordt de variabele num geïnitialiseerd met de waarde 29, maar als het proces in een 64-bits omgeving draait (IntPtr.Size == 8), wordt de waarde gewijzigd naar 15. Deze voorwaardelijke selectie suggereert dat de assembly aparte methoden bevat voor 32-bits en 64-bits uitvoeringspaden.
De parameter object_0 wordt verwacht een geladen .NET Assembly-object te zijn. De code haalt alle typen binnen de assembly op met GetTypes(), selecteert het type op index 20 en haalt vervolgens de methoden ervan op met GetMethods(). Afhankelijk van de systeemarchitectuur selecteert de code methode 29 of methode 15 van dat type en roept deze aan via reflectie met Invoke(null, null).
Omdat beide argumenten van Invoke() null zijn, wordt verwacht dat de beoogde methode een statische methode is die geen parameters accepteert. Deze techniek stelt de malware in staat om de werkelijke methodenaam en uitvoeringsstroom te verbergen voor statische analysetools, aangezien de uitvoering volledig gebaseerd is op array-indexen in plaats van expliciete identificatoren. In de praktijk fungeert deze functie als een dispatcher die de uitvoering overdraagt naar de volgende fase van de malware, waarbij de geselecteerde methode waarschijnlijk de primaire kwaadaardige functionaliteit of de routine voor payload-initialisatie bevat.

Afhankelijk van de architectuur van het slachtoffersysteem roept de malware een van de twee methoden aan uit de klasse PerfGuard.Networking.EfficientServer in perfgurd.dll. Op 32-bits systemen wordt de methode op index 29, WaitForAdvancedController(), uitgevoerd, terwijl op 64-bits systemen de methode op index 15, WaitForGlobalAggregator(), wordt aangeroepen. Zoals hieronder weergegeven, gebruikt de malware tijdens de uitvoering methode-indexen in plaats van expliciete methodenamen, een techniek die de uitvoeringsstroom verbergt en statische analyse bemoeilijkt.

De loader controleert eerst of het proces met beheerdersrechten wordt uitgevoerd. Als er geen verhoogde toegang beschikbaar is, maakt de loader gebruik van cmstp.exe, een legitiem Windows-hulpprogramma, om het hoofdproces met verhoogde rechten te starten. Door misbruik te maken van dit vertrouwde systeemprogramma probeert de malware de normale uitvoeringsbeperkingen te omzeilen en de uitvoering in een beheerderscontext voort te zetten.
Om persistentie te garanderen, maakt de malware een kopie van zichzelf aan in C:\Users\admin\AppData\Roaming met de bestandsnaam RVKLmPcYcNO.exe, zoals weergegeven in de onderstaande afbeelding. Vervolgens genereert de malware een PowerShell-script (.ps1) in de tijdelijke map, dat verantwoordelijk is voor het starten van het gekopieerde uitvoerbare bestand in verborgen modus, waardoor het minder zichtbaar is voor de gebruiker. Om automatische uitvoering na het inloggen van de gebruiker te garanderen, maakt de malware een registervermelding 'Run' aan onder HKCU\Software\Microsoft\Windows\CurrentVersion\Run die verwijst naar het PowerShell-script. Hierdoor wordt het PowerShell-script uitgevoerd telkens wanneer de gebruiker inlogt, wat op zijn beurt het gekopieerde malware-uitvoerbare bestand start en persistentie behoudt, zelfs na herstart van het systeem.


De derde fase van de loader decodeert en reconstrueert de uiteindelijke payload direct in het eigen procesgeheugen. Na de decodering wordt de herstelde payload geladen en uitgevoerd vanuit de bestaande procescontext, waardoor het niet nodig is om een apart uitvoerbaar proces te starten. Deze in-memory uitvoeringstechniek helpt bij het verminderen van bestandssysteemartefacten en verbetert de onzichtbaarheid van de payloaduitvoering. De gedecodeerde payload die tijdens de analyse is verkregen, wordt hieronder weergegeven.

Eindlading Deployment – Remcos RAT

Analyse van de laatste fase bracht aan het licht dat de malware uiteindelijk Remcos RAT (Remote Access Trojan) inzet. Remcos is een commercieel verkrijgbare tool voor beheer op afstand die vaak door cybercriminelen wordt misbruikt om permanente toegang tot gecompromitteerde systemen te verkrijgen.
De architectuur van de meertrapslader die in deze campagne is waargenomen, is ontworpen om de uiteindelijke payload te verbergen en detectie te bemoeilijken. Het initiële uitvoerbare bestand, Windows Health Optimizer Plus.dll, en perfgurd.dll functioneren gezamenlijk als gefaseerde laders die Remcos volledig in het geheugen decoderen, reconstrueren en uitvoeren.
Na uitvoering geeft Remcos de aanvaller uitgebreide controle over de gecompromitteerde host.
Mogelijkheden van Remcos:
Het geanalyseerde voorbeeld biedt mogelijkheden die doorgaans geassocieerd worden met Remcos RAT, waaronder:
- Op afstand opdrachten uitvoeren.
- Bestanden uploaden en downloaden.
- Beheer van bestandssystemen.
- Keylogging en toetsaanslagmonitoring.
- Het verzamelen van inloggegevens.
- Systeemverkenning.
- Proces- en servicemanipulatie.
- Wijziging van het register.
- Vaststellen van volharding.
- Screenshot vastleggen.
- Functionaliteit voor extern bureaublad.
- Monitoring van gebruikersactiviteit.
- Verzameling van systeem- en netwerkinformatie.
- Communicatie met door de aanvaller gecontroleerde Command-and-Control (C2)-infrastructuur.
- Inzet van extra ladingen.
Deze mogelijkheden stellen cybercriminelen in staat om langdurig toegang te behouden, de activiteiten van slachtoffers te monitoren, gevoelige informatie te stelen en verdere acties na de inbreuk uit te voeren.
Conclusie:
Deze campagne betreft een geavanceerde phishingaanval met een GST-thema, ontworpen om Remcos RAT te verspreiden via een meerfasig .NET-malwareframework. De aanval begint met een frauduleuze melding van een GST-terugbetaling, waarbij gebruik wordt gemaakt van de huisstijl van de Indiase overheid en thema's die verband houden met belastingen om het vertrouwen van de gebruiker te vergroten en de uitvoering van een kwaadaardige bijlage aan te moedigen.
Infrastructuuranalyse identificeerde meerdere willekeurige subdomeinen onder aofmokighoig.hath.network die verwijzen naar infrastructuur die geassocieerd wordt met Remcos RAT command-and-control-activiteiten. Het gebruik van dynamische DNS-services, waaronder hath.network en synology.me , in combinatie met roterende infrastructuur gehost door M247 Europe SRL, is consistent met standaard malware-operaties en financieel gemotiveerde cybercriminaliteit. De phishing met betrekking tot btw-teruggaven suggereert bovendien dat er doelbewust op Indiase gebruikers en organisaties is gefocust. Hoewel de beschikbare indicatoren wijzen op toewijzing aan een cluster van persistente cybercriminaliteitscampagnes, is het huidige bewijs onvoldoende om de activiteit met zekerheid te koppelen aan een publiekelijk geregistreerde dreigingsactor. Op basis van de waargenomen infrastructuur, malwarekenmerken en targeting wordt de campagne beoordeeld als uitgevoerd door een op India gerichte Remcos-operator of een Initial Access Broker die gebruikmaakt van tijdelijke dynamische DNS-infrastructuur.
Over het geheel genomen laat de combinatie van phishing-gebaseerde initiële toegang, gefaseerde .NET-loaders, op bitmaps gebaseerde payloadverhulling, bestandsloze uitvoering en een robuuste command-and-control-infrastructuur een doelbewuste poging zien om beveiligingsmaatregelen te omzeilen en tegelijkertijd aanhoudende, ongeautoriseerde toegang tot slachtoffersystemen te verkrijgen. De campagne weerspiegelt de voortdurende evolutie van gangbare malware-distributietechnieken en benadrukt de effectiviteit van gelaagde infectieketens bij het stelen van inloggegevens, toegang op afstand en bredere post-compromisoperaties.
Seqrite dekking:
Trojan.Agent
Trojan.AgentCiR
Trojan.LoaderCiR
Trojan.Mauvaise.SL1
IOC:
| 3757dccb2adae65ccdf8d5e5c948b927 | eml |
| 07d7d21c2c0920d198efb9ea54900a80 | GST-Refund_July-26_AL27052600952P.rar |
| 20476F3A51DFDDF3DC0603FC7858D894 | GST-Refund_July-26_AL27052600952P.com |
| 7842D12D9E37C75076133BE5B9904CB2 | Windows Health Optimizer Plus.dll |
| CC34D9760394104AD47877A0D57E9C63 | PerfGuard.dll |
| 2a34bdd25b404737ee5d3b52bf0b3b70 | RemcosRAT |
C2:
185.242.4.122
MITRE ATT&CK:
| Tactiek | Technieken in kaart gebracht |
| Eerste toegang | T1566.001 |
| Uitvoering | T1204.002, T1059.001, T1129 |
| Volharding | T1547.001, T1036 |
| Privilege-escalatie | T1548.002 |
| verdediging ontduiking | T1027, T1027.013, T1140, T1218.003, T1620, T1055 |
| Toegang tot inloggegevens | T1056.001, T1555 |
| De reis van mijn leven | T1082, T1016, T1057, T1083 |
| Collectie | T1113, T1005, T1039 |
| Command and Control | T1071.001, T1105 |
| Zijwaartse beweging | T1021 |
| Impact | T1489 |
Auteurs:
Vaibhav Billade
Rumana Siddiqui



