Inhoudsopgave:
- Introductie
- Infectieketen
- Procesboom
- Campagne 1:
Vasthoudendheid
– BATCH-bestanden
– PowerShell-script
– Lader
– Xworm/Remcos - Campagne 2
- Conclusie
- IOCS
- Detecties
- MITRE ATTACK TTP's
Inleiding:
Recente dreigingscampagnes hebben een evoluerend gebruik van BAT-gebaseerde loaders onthuld om Remote Access Trojans te verspreiden, waaronder XWorm en Remcos. Deze campagnes beginnen vaak met een ZIP-archief, meestal gehost op vertrouwde platforms zoals ImgKit, en zijn ontworpen om als legitieme content te verschijnen om gebruikersinteractie te stimuleren.
Na extractie bevat het ZIP-bestand een sterk verhuld BAT-script dat dient als de eerste stap in de infectieketen. Deze BAT-bestanden maken gebruik van geavanceerde technieken om statische detectie te omzeilen en zijn verantwoordelijk voor de uitvoering van PowerShell-gebaseerde loaders die de RAT-payload rechtstreeks in het geheugen injecteren. Deze aanpak maakt bestandsloze uitvoering mogelijk, een groeiende trend in moderne malware om endpoint-beveiliging te omzeilen.
Een opvallende ontwikkeling in deze campagne is het gebruik van SVG-bestanden om de kwaadaardige BAT-scripts te verspreiden. Deze SVG's bevatten ingebedde JavaScript-code die de uitvoeringsketen activeert wanneer ze worden weergegeven in kwetsbare omgevingen of ingebed in phishingpagina's. Deze techniek benadrukt een verschuiving naar het gebruik van niet-traditionele bestandsformaten voor het verspreiden van malware, waarbij de scriptmogelijkheden ervan worden misbruikt om detectie te omzeilen.
Infectieketen:

Procesboom:

Campagne 1:
Tijdens de analyse van Campagne 1 identificeerden we meerdere BAT-scripts die verband hielden met de campagne, wat wijst op een veranderend dreigingslandschap. Sommige van deze scripts lijken actief in ontwikkeling te zijn en bevatten gedeeltelijke code of code in de testfase, terwijl andere volledig functioneel zijn en de volledige aanvalsketen kunnen uitvoeren, inclusief het downloaden en uitvoeren van de payload.
De afbeelding hieronder toont twee BAT-bestanden:
- Methode 1: Direct aangeleverd als bijlage via EML (e-mailbestand).
- Methode 2: Gedownload via een URL die gehost wordt op het ImageKit-platform.
Deze variatie in afleveringsmethoden suggereert dat de kwaadwillenden experimenteren met verschillende benaderingen om de kans op infectiesucces te vergroten en detectiemechanismen te omzeilen.

Persistentie:
De malware bereikt persistentie door een BAT-bestand aan te maken in de opstartmap van Windows. Dit zorgt ervoor dat het schadelijke script automatisch wordt uitgevoerd wanneer de gebruiker het systeem opstart of inlogt op zijn account.

BATCH-bestanden:
In de onderstaande afbeelding wordt het BAT-script in de verduisterde vorm weergegeven, naast de niet-verduisterde versie.

PowerShell-script:
De onderstaande afbeelding toont het PowerShell-procesvenster en de opdrachtregelargumenten die tijdens de uitvoering worden gebruikt. Dit geeft inzicht in hoe de malware PowerShell gebruikt voor de levering van in-memory payloads. In de volgende secties zullen we het PowerShell-script in detail analyseren om de rol ervan bij de implementatie van XWorm te begrijpen.


Deze PowerShell-opdracht voert het script uit door een Base64-gecodeerde tekenreeks te decoderen en in het geheugen uit te voeren. Het gebruikt -nop om het laden van het gebruikersprofiel te voorkomen, -w hidden om het venster te verbergen en iex (Invoke-Expression) om de gedecodeerde inhoud uit te voeren.
Gedeobfusceerd script:

We hebben het gedeobfusceerde script in twee delen opgesplitst. Het eerste deel van het PowerShell-script is ontworpen om een geobfusceerde code te vinden en uit te voeren die is ingebed in een batchbestand (aoc.bat) in de profielmap van de huidige gebruiker. Eerst haalt het de gebruikersnaam op uit de omgevingsvariabelen om het volledige pad naar aoc.bat te construeren. Het leest alle regels met UTF-8-codering en doorloopt elke regel, specifiek op zoek naar regels die beginnen met een commentaarprefix van drie dubbele punten (:::), gevolgd door een Base64-gecodeerde tekenreeks. Zodra een dergelijke regel is gevonden, probeert het de Base64-tekenreeks te decoderen naar een byte-array en deze vervolgens om te zetten naar een Unicode-tekenreeks die is toegewezen aan de variabele $ttzhae. Deze gedecodeerde tekenreeks ($ttzhae) bevat een extra laag PowerShell-script, die vervolgens in het geheugen wordt uitgevoerd met behulp van Invoke-Expression. Dit stelt de aanvaller in staat om complexe of meerstaps kwaadaardige PowerShell-logica heimelijk in te bedden en uit te voeren in een ogenschijnlijk onschuldige opmerking in een batchbestand, waardoor onopvallende uitvoering zonder bestanden mogelijk is.

Het script schakelt programmatisch twee belangrijke Windows-beveiligingsmechanismen uit: AMSI (Antimalware Scan Interface) en ETW (Event Tracing for Windows), om detectie te omzeilen. Het maakt gebruik van .NET-reflectie en dynamische aanmaak van delegates om native functies zoals GetProcAddress, GetModuleHandle, VirtualProtect en AmsiInitialize op te lossen. Hiermee lokaliseert en patcht het de AmsiScanBuffer-functie in het geheugen met instructies (mov eax, 0; ret), waardoor AMSI-scanning effectief wordt omzeild. Op dezelfde manier schakelt het gebeurtenistracering uit door het begin van EtwEventWrite te overschrijven met een return-instructie. Deze geheugenwijzigingen stellen kwaadaardige PowerShell-activiteiten in staat om onopgemerkt te worden uitgevoerd, zonder dat ze worden geregistreerd of gescand. endpoint protection oplossingen.

In het tweede deel van het PowerShell-script wordt eerst de naam van de huidige gebruiker uit de omgeving opgehaald en het pad naar een bestand met de naam aoc.bat in de profielmap van de gebruiker samengesteld. Vervolgens worden payloads uitgevoerd die zijn ingebed als versleutelde en gecomprimeerde .NET-assemblies in dit batchbestand. Het script zoekt specifiek naar een commentaarregel die begint met :: en een Base64-gecodeerde payload-string bevat. Deze string wordt vervolgens in twee delen gesplitst met behulp van de backslash (\) als scheidingsteken. Elk deel ondergaat Base64-decodering, AES-decryptie met behulp van een hardgecodeerde sleutel en IV (in CBC-modus met PKCS7-padding), gevolgd door GZIP-decompressie, zoals geïllustreerd in de bijbehorende afbeeldingen. Het resultaat zijn twee afzonderlijke .NET-assemblies, die beide direct in het geheugen worden geladen en uitgevoerd. De eerste assembly wordt zonder argumenten aangeroepen, terwijl de tweede wordt uitgevoerd met '%*' als gesimuleerde opdrachtregelinvoer.

De tweede payload speelt een belangrijkere rol. Deze fungeert als een loader die verantwoordelijk is voor het uitvoeren van de uiteindelijke malware, namelijk de XWorm remote access trojan (RAT).

Lader
De loader is ontworpen om detectie te omzeilen, gebeurtenisregistratie uit te schakelen en embedded payloads rechtstreeks in het geheugen uit te voeren. Dit gebeurt door .NET-uitvoerbare bestanden te decoderen en uit te voeren via Assembly.Load, of door gedecodeerde shellcode uit te voeren met VirtualProtect en delegates.



Laadcapaciteiten:
- Ontwijk detectie

- Gebeurtenisregistratie uitschakelen

- Ingesloten payloads extraheren en uitvoeren
We hebben hier meerdere loaders geïdentificeerd die in-memory uitvoeringstechnieken gebruiken om detectie te omzeilen en heimelijk te blijven bestaan. Sommige van deze loaders bevatten gecodeerde .NET-uitvoerbare bestanden, die tijdens runtime worden gedecodeerd en rechtstreeks vanuit het geheugen worden uitgevoerd met Assembly.Load, gevolgd door .EntryPoint.Invoke, waardoor de loader beheerde code kan uitvoeren zonder het uitvoerbare bestand naar schijf te schrijven.
Andere varianten hebben daarentegen gecodeerde shellcode in plaats van een binair bestand. Deze varianten decoderen de shellcode, passen de geheugenbeveiliging aan met VirtualProtect om deze uitvoerbaar te maken en voeren deze vervolgens uit met een gedelegeerde die is aangemaakt via Marshal.GetDelegateForFunctionPointer. Zoals weergegeven in onderstaande afbeeldingen,

- Volharding

Xworm
Eerder dit jaar hebben we al bericht over XWorm en Remcos , met een diepgaande analyse van de kernfunctionaliteit, geavanceerde mogelijkheden zoals keylogging, het uitvoeren van commando's op afstand, data-exfiltratie en de methoden voor persistentie en ontwijking.

Naast XWorm maakten verschillende varianten in dezelfde campagne ook gebruik van Remcos , een algemeen bekende commerciële Remote Access Trojan (RAT) die een scala aan mogelijkheden biedt, waaronder toegang op afstand tot het bureaublad, keylogging, het uitvoeren van commando's, het manipuleren van bestanden, het maken van schermafbeeldingen en het stelen van gegevens.
Campagne 2:
Campagne 2 introduceert een opmerkelijke verschuiving in de verspreiding van malware door gebruik te maken van SVG-bestanden (Scalable Vector Graphics) met JavaScript, die voornamelijk worden gebruikt bij phishingaanvallen. Deze schadelijke SVG's zijn zo gemaakt dat ze eruitzien als legitieme afbeeldingsbestanden en worden weergegeven in kwetsbare softwareomgevingen (zoals verouderde image viewers of e-mailclients) of ingebed in phishingpagina's die bedoeld zijn om nietsvermoedende gebruikers te lokken. De ingebedde JavaScript in het SVG-bestand fungeert nu als een triggermechanisme en initieert de automatische download van een ZIP-bestand wanneer het SVG-bestand wordt geopend of bekeken.
Dit gedownloade ZIP-archief bevat een versluierd BAT-script, dat dient als eerste toegangsvector voor de malware. Zodra het BAT-script handmatig door de gebruiker of via social engineering wordt uitgevoerd, start het een meerfaseninfectieketen, vergelijkbaar met die in Campagne 1. Het BAT-script roept PowerShell-opdrachten aan om een uitvoerbaar bestand (exe) van een loader rechtstreeks in het geheugen te decoderen en uit te voeren. Deze loader is verantwoordelijk voor het decoderen en implementeren van de uiteindelijke payload, in deze campagne de XWorm Remote Access Trojan (RAT).
Het gebruik van SVG als aflevermechanisme vertegenwoordigt een opmerkelijke evolutie in aanvalsmethodologie, aangezien afbeeldingsbestanden doorgaans als onschadelijk worden beschouwd en vaak worden uitgesloten van diepgaande inhoudsinspectie door traditionele beveiligingstools. Door de scriptmogelijkheden van SVG's te benutten, kunnen kwaadwillenden effectief de perimeterbeveiliging omzeilen en schadelijke payloads op een bestandsloze, onopvallende manier afleveren.
Conclusie:
Deze campagnes benadrukken een groeiende trend in het gebruik van verhulde scripts, bestandsloze malware en niet-traditionele bestandsformaten zoals SVG's om Remote Access Trojans zoals XWorm en Remcos te verspreiden. Door payloads in BAT-bestanden te integreren en deze via PowerShell uit te voeren, omzeilen aanvallers effectief statische verdedigingsmechanismen. De verschuiving van het gebruik van SVG's in phishingaanvallen naar het verspreiden van malware benadrukt de noodzaak van gedragsdetectie, inhoudsinspectie en een beter gebruikersbewustzijn om dergelijke evoluerende bedreigingen tegen te gaan.
IOCS:
| MD5 | Dien in |
| EDA018A9D51F3B09C20E88A15F630DF5 | BAT |
| 23E30938E00F89BF345C9C1E58A6CC1D | JS |
| 1CE36351D7175E9244209AE0D42759D9 | LADER |
| EC04BC20CA447556C3BDCFCBF6662C60 | XWORM |
| D439CB98CF44D359C6ABCDDDB6E85454 | REMCOS |
Detecties:
Trojan.LoaderCiR
Trojan.GenericFC.S29960909
MITRE ATTACK TTP's:
| Tactiek | Techniek-ID en naam | Beschrijving |
| Uitvoering | T1059.001 – Opdracht- en scriptinterpreter: PowerShell | PowerShell wordt gebruikt om opdrachten te interpreteren, gegevens te decoderen en payloads aan te roepen. |
| T1106 – Uitvoering via API | Het script maakt gebruik van .NET API's (bijvoorbeeld Assembly.Load en Invoke) om payloads in het geheugen uit te voeren. | |
| verdediging ontduiking | T1027 – Verduisterde bestanden of informatie | Payloads zijn Base64-gecodeerd, AES-gecodeerd en gecomprimeerd om statische detecties te omzeilen. |
| T1140 – Bestanden of informatie decoderen/deobfusceren | Het script decodeert en decomprimeert de payloads voordat deze worden uitgevoerd. | |
| T1055.012 – Procesinjectie: .NET Assembly-injectie | Payloads worden in het geheugen geladen | |
| T1036 – Maskeren | De schadelijke inhoud is verborgen in een batchbestand. | |
| Volharding | T1053 – Geplande taak/job | Zorg voor persistentie via het opstartmenu. |
| Eerste toegang | T1204 – Gebruikersuitvoering | De uitvoering is afhankelijk van het handmatig uitvoeren van het batchbestand door een gebruiker |
| Command and Control | T1132 – Gegevenscodering | Base64 en encryptie worden gebruikt om opdrachten of payloads te coderen. |
| T1219 – Software voor externe toegang | Xworm biedt volledige toegang en controle op afstand over de geïnfecteerde host. | |
| Toegang tot inloggegevens | T1056.001 – Invoer vastleggen: Keylogging | XWorm bevat keyloggingfunctionaliteit om gebruikersinvoer en -gegevens te stelen. |
| exfiltratie | T1041 – Exfiltratie via C2-kanaal | Gestolen gegevens worden geëxfiltreerd via hetzelfde C2-kanaal dat door Xworm wordt gebruikt. |
Auteur:
Vaibhav Billade
Rumana Siddiqui



