Recentelijk hebben we meerdere malwareprogramma's waargenomen die sleutels stelen, zoals Remcos, DcRAT, AgentTesla, VIPKeyLogger , enz., die verspreid worden via een steganografische campagne. Bij nader onderzoek blijkt dat de campagne al een tijdje bestaat, maar de laatste tijd niet meer actief is. Wat de campagne interessant maakt, is de manier waarop de aanval wordt uitgevoerd.
In deze blog bespreken we de distributie van Remcos en AsyncRAT via de door ons geobserveerde campagne.
Infectie-keten:
De infectieketen begint met een phishingmail met een Excel-bestand dat een kwetsbaarheid in Excel misbruikt en een HTTP-verzoek verstuurt om een .hta-bestand te downloaden. Het .hta-bestand, dat .vbs-code bevat, schrijft een batchbestand dat verbinding maakt met een URL en een ander versleuteld .vbs-script downloadt. Het .vbs-script downloadt een .jpg-bestand met een opgevuld, base64-gecodeerd payloadbestand (een kwaadaardige loader) voor de tweede fase. Dit bestand wordt gedecodeerd en via het script wordt de functie VAI aangeroepen. Het loaderbestand, dat een URL en de naam van het beoogde proces als argument ontvangt, downloadt een omgekeerd base64-gecodeerd bestand dat na decodering de uiteindelijke payload oplevert.

Phishing-e-mail: Het eerste aanvalspunt is een phishing-e-mail met een kwaadaardig Excel-document dat zich voordoet als een legitiem bestand. Gebruikers worden zo verleid om de bijlage te openen, die de schadelijke code bevat.

Excel-document met schadelijk ole-pakket:
Het bestand is een exploit die misbruik maakt van kwetsbaarheid CVE-2017-0199. Het bevat een ingebed OLE2-linkobject dat een http-verzoek verzendt wanneer we het bestand openen.

.HTA-script
Het .hta-bestand bevat vbs-code (Fig.4) die een batchbestand schrijft dat verbinding maakt met een paste-URL en een vbs-bestand downloadt, wat een script is met een groot deel onzincode (Fig.5).

Het script schrijft VBS Script2:

Na het verwijderen van de overbodige code en het vereenvoudigen ervan, krijgen we een in base64 gecodeerd script dat met PowerShell kan worden uitgevoerd (Fig. 6).


Let op, terwijl de VAI-methode wordt aangeroepen, wordt de url doorgegeven in het eerste argument dat is opgeslagen in de variabele $deject. Het vijfde argument is ook belangrijk, maar we zullen dit later bespreken bij de bespreking van onze tweede payload, de injector dll.
Op een vergelijkbare manier ontdekten we dat AsyncRAT werd verspreid. De initiële keten is meestal hetzelfde, maar we konden deze niet traceren. In het geval van AsyncRAT doet het VBS-script zich voor als prnmngr.vbs, waardoor de gebruiker denkt dat het een legitiem script is dat printers of printerverbindingen toevoegt, verwijdert en weergeeft, en bovendien de standaardprinter instelt en weergeeft. Er is echter een klein stukje kwaadaardige code tussengevoegd om argwaan te voorkomen.

Hieronder staat het stukje code dat de JPG-afbeelding heeft gedownload van de hard gecodeerde URL [hxxps://watchonlinehotvideos[.]top/omfg[.]jpg], vergelijkbaar met de uitleg in het vorige geval


Net zoals we een aantekening maakten voor het vorige script, is hier het eerste argument dat wordt doorgegeven onze omgekeerde URL in variabele $restoredtext en het lijkt op een onzinnige waarde/willekeurige tekenreeks die in andere argumenten wordt doorgegeven. Ook hier houden we het vijfde argument in gedachten.
In beide gevallen maakt het monster gebruik van steganografie; het gedownloade jpg-bestand (Fig. 11) verbergt zich als een onschadelijke afbeelding die base64-gecodeerde malware bevat. Zoals u in Fig. 7 kunt zien, controleert het de marker < > en < > om het hele schadelijke bestand te verkrijgen en dat vervolgens te decoderen.

Beide bestanden zijn VB.NET dll-bestanden met de interne bestandsnaam “Microsoft.Win32.TaskScheduler.dll”, misschien om gebruikers te laten denken dat het een Microsoft dll is.

Beide DLL's zijn geobfusceerd, maar op verschillende niveaus. De DLL die we van Remcos' campagne kregen, heeft zelfs een gemeenschappelijke .NET-functienaam geobfusceerd, maar in andere gevallen waren sommige delen recht. De code van de DLL was echter hetzelfde en deed hetzelfde.
De DLL-code is verduisterd, maar we kunnen de doorgegeven argumenten zien. De bedreigingsactor heeft de VAI-methode aangeroepen met 15 argumenten. Op basis van de doorgegeven argumenten beschikt de methode over mogelijkheden zoals het laden van een ander uitvoerbaar malwarebestand door middel van process hollowing, het creëren van persistentie, enzovoort.

Het eerste argument dat in het script wordt doorgegeven (Fig7. /Fig10.) bij het aanroepen van de methode, is onze URL die is opgeslagen in de variabele $deject/$restoredtext en hier wordt doorgegeven als QBXtX.
De waarde persistentie is een null/onzinwaarde en de andere waarde, die wordt doorgegeven, decodeert naar 1. Deze wordt doorgegeven aan Delegate11.smethod_0 en retourneert een booleaanse waarde. De uiteindelijke waarde is dus 0 en de voorwaarde mislukt. Er zal dus geen activiteit zijn die persistent blijft.

De omgekeerde URL, die in argument QBXtX wordt doorgegeven en is opgeslagen in "text5", wordt omgekeerd en downloadt met behulp van een webclient de data in de string "text6", een base64-gecodeerde data in omgekeerd formaat (Figuur 14). Dit is onze uiteindelijke payload, die samen met het pad "C:\Windows\SysWOW64" (gedecodeerd vanuit Class219.smethod(10577)) van "caspol.exe" / "msbuild.exe" (vijfde argument) als argument wordt doorgegeven aan de functie "Tools.Ande". Deze functie voert de procesuitholling uit met het doelproces dat als vijfde argument wordt meegegeven (Figuur 15).

Zoals hierboven weergegeven, wordt een nieuw proces aangemaakt met de CreateProcess API in de onderbroken toestand. Het nieuw aangemaakte proces wordt ontkoppeld met NtUnmapViewOfSection en geheugen wordt toegewezen met VirtualAllocEx, waar de schadelijke code vervolgens wordt geïnjecteerd. Met SetThreadContext wordt het toegangspunt toegevoegd aan de geïnjecteerde code en wordt het proces uiteindelijk hervat met ResumeThread.
In ons geval is de uiteindelijke payload die we kregen een Remcos- en AsyncRAT-monster (Figuur 16).

Laatste lading: Remcos
Remcos is al sinds de oprichting in 2016 actief in de malwarewereld. Van versie 1.0 tot de meest recente versie, wat Remcos nog steeds relevant houdt, is de kernfunctionaliteit van command & control. Begonnen als een closed-sourcetool die op de markt werd gebracht als software voor afstandsbediening en bewaking, heeft Remcos een lange weg afgelegd.
Remcos hebben meestal een instellingenblok met een batch configuraties, dat gecodeerd is en opgeslagen in de resourcesectie met de naam "SETTINGS". Het wordt bij de start gedecodeerd en initialiseert Remcos met het instellingenblok.


Remcos maakt verbinding met C2 voor C&C-communicatie en wacht vervolgens op de commando's van de aanvaller. De belangrijkste details uit de geëxtraheerde configuratiegegevens zijn als volgt:
C2: interestedthingsforkissinggirlwithloves[.]duckdns[.]org
Bestandsnaam: Remcos.exe
Botnetnaam: zyno007
Mutex Gemaakt: Rmc-IB3RDF
Bovendien wordt in sommige gevallen gezien dat Remcos ook malware zoals AgentTesla gebruikt.
Eindlading: AsyncRAT
AsyncRAT is een remote access Trojan (RAT), geschreven in C#, die standaard RAT- en informatie-stelende functies biedt, waaronder de mogelijkheid om toetsaanslagen te registreren, extra payloads uit te voeren/injecteren, command-and-control uit te voeren, enzovoort.
De backdoor heeft mogelijkheden op basis van de embedded configuratie. Zoals u kunt zien in de onderstaande afbeelding (Fig. 19), start de uitvoering met een De_lay-functie die de slaapduur definieert, meestal om sandboxes te omzeilen.

De functie InitializeSettings() heeft hier toegang tot alle hardgecodeerde configuratie die AES-gecodeerd is.

De functie verifyhash() (Fig. 20) in de laatste versie controleert of de configuraties geldig zijn met behulp van het servercertificaat en de serverhandtekening. De belangrijkste details uit de geëxtraheerde configuratiegegevens zijn als volgt:
Ports: 7878
Gastheren: 148[.]113[.]214[.]176
Versie: 1.0.7
MTX: asasasas2242dqwe
Pastebin: nul
Groep:Diama
De Pastebin-waarde wordt gebruikt door de API "WebClient.DownloadString" (Fig21.), die extra resources en andere payloads kan downloaden van Pastebin of andere domeinen. In ons geval is deze waarde null, dus worden hosts en poorten uit de configuratie geselecteerd en wordt een socketverbinding gebruikt om te communiceren met C2.

IOCS:
| Remcos IOC's |
| 9d66405aebff0080cc5d28a1684d501fa7e183dc8b6340475fc06845509cb466 |
| 42813b301da721c34ca1aca29ce2e4c7d71ae580b519a3332a4ba71870b6a58e |
| f67c6341bfe37f5b05c00a0dda738f472fdabd6ea94ca8dc761f57f11ce12036 |
| aed291c023c3514fb97b4e08e291e03f52de91a2a8d311491b4ab8299db0aa0f |
| faed55ed0102b1b2e3d853e8633abecbb9cec6a5f41c630097d8eaeefafba060 |
| C2: interestedthingsforkissinggirlwithloves[.]duckdns[.]org |
| C2: freebirdkissingonmylipswithnicefeelings[.]duckdns[.]org |
| AsynchroneRAT |
| b8fc29c02005c84131f34de083c2e81cdf615ff405877f9e73400bf35513c053 |
| 2d4ab87f9ea104075d372f4c211b1fb89adec60208d370b8fb2d748e1a73186c |
| b2e8f720740bbd46f6ae3f450f265ace1044fe232141fbd84f269eafeb290812 |
| a582e7e5b3ac37895e7cf484aaa8ea477deb90d99b47b2d9bfc018c604573889 |
| C2: 148[.]113[.]214[.]176 |
Detecties:
Backdoor.Remcos
Achterdeur.MsilFC.S13564499
Trojan.loaderCiR
MITRE ATTACK TTP's:
| Tactiek | Techniek-ID | Naam |
| Initiële toegang (TA0001) | T1566 | Phishing |
| Uitvoering (TA0002) |
T1204 |
Gebruikersuitvoering |
| Volharding (TA0003) | T1547.001 | Register Run Keys/Opstartmap |
| Ontwijking van verdediging (TA0005) | T1055 | Procesinjectie |
| T1027 | Verduisterde bestanden of informatie | |
| T1036.004 | Maskerende taak of dienst | |
| Ontdekking (TA0007) | T1614 | Detectie van systeemlocatie |
| Exfiltratie (TA0010) | T1041 | Exfiltratie via het command-and-control-kanaal |
| Commando en controle (TA0011) | T1001.0012 | steganography |
Conclusie:
In deze blog hebben we de volledige aanvalsketen van de recente Steganographic-campagne besproken, waarbij een onschuldig ogend JPG-bestand een injector-DLL met kwaadaardige mogelijkheden bleek te bevatten. We hebben ook onderzocht hoe elke kwaadaardige payload zorgvuldig werd gedownload en zeer methodisch werd uitgevoerd. De aanval maakte sterk gebruik van geavanceerde maskeringstechnieken die zelfs ervaren gebruikers vaak kunnen misleiden. Zoals gebruikelijk begon de keten van gebeurtenissen met een phishing-e-mail met een exploit die in meerdere fasen uiteindelijk RemcosRAT/AsyncRAT implementeerde (met de mogelijkheid dat andere RAT's of backdoors op vergelijkbare wijze werden verspreid). De command-and-control-server heeft in dit geval de mogelijkheid om extra payloads te implementeren, waardoor het systeem van het slachtoffer verder wordt gecompromitteerd.
Deze campagne benadrukt hoe belangrijk het is om waakzaam te blijven en robuuste cybersecuritypraktijken te implementeren om zowel onze veiligheid als de integriteit van onze gegevens te waarborgen.
Auteur:
Kirti Kshatriya
Medeauteur:
Manoj Kumar Neelamegam



