Deze nieuwe cyberspionagegroep is voornamelijk gericht op Azië en gebruikt ongedocumenteerde tools, waaronder het steganografisch extraheren van PowerShell-payloads uit PNG-bestanden
ESET-onderzoekers hebben onlangs gerichte aanvallen gevonden die ongedocumenteerde tools gebruikten tegen verschillende spraakmakende bedrijven en lokale overheden, voornamelijk in Azië. Deze aanvallen werden uitgevoerd door een voorheen onbekende spionagegroep die we Worok hebben genoemd en die actief is sinds ten minste 2020. De toolset van Worok omvat een C++ loader CLRLoad, een PowerShell backdoor PowHeartBeat en een C# loader PNGLoad die steganografie gebruikt om verborgen kwaadaardige payloads van PNG-bestanden.
Wie is Worok?
Tijdens de ProxyShell (CVE-2021-34523) openbaarmaking van kwetsbaarheden begin 2021, hebben we waargenomen activiteit van verschillende APT-groepen. De ene vertoonde kenmerken die gemeenschappelijk zijn met TA428:
- Activiteitstijden
- Getargete branches
- Gebruik van ShadowPad
De rest van de toolset is heel anders: TA428 nam bijvoorbeeld deel aan de In staat Desktop-compromis in 2020. We zijn van mening dat de banden niet sterk genoeg zijn om Worok als dezelfde groep als TA428 te beschouwen, maar de twee groepen kunnen instrumenten delen en gemeenschappelijke belangen hebben. We besloten een cluster te maken en noemden het Worok. De naam is gekozen na een mutex in een lader die door de groep wordt gebruikt. Verdere activiteit met varianten van dezelfde tools werd vervolgens aan deze groep gekoppeld. Volgens de telemetrie van ESET is Worok actief sinds eind 2020 en blijft het actief op het moment van schrijven.
Eind 2020 richtte Worok zich op overheden en bedrijven in meerdere landen, met name:
- Een telecommunicatiebedrijf in Oost-Azië
- Een bank in Centraal-Azië
- Een maritiem industriebedrijf in Zuidoost-Azië
- Een overheidsinstantie in het Midden-Oosten
- Een privébedrijf in zuidelijk Afrika
Er was een aanzienlijke onderbreking in de waargenomen operaties van 2021-05 tot 2022-01, maar de Worok-activiteit keerde terug in 2022-02, gericht op:
- Een energiebedrijf in Centraal-Azië
- Een entiteit in de publieke sector in Zuidoost-Azië
Afbeelding 1 geeft een visuele heatmap weer van de beoogde regio's en verticalen.
Gezien de profielen van de doelwitten en de tools die we hebben zien inzetten tegen deze slachtoffers, denken we dat het belangrijkste doel van Worok is om informatie te stelen.
Technische analyse
Hoewel de meeste initiële toegangen onbekend zijn, hebben we in sommige gevallen tot 2021 en 2022 exploits gezien tegen de ProxyShell-kwetsbaarheden. In dergelijke gevallen zijn er doorgaans webshells geüpload na misbruik van deze kwetsbaarheden, om persistentie in het netwerk van het slachtoffer te bieden. Vervolgens gebruikten de operators verschillende implantaten om meer mogelijkheden te krijgen.
Nadat toegang was verkregen, implementeerden de operators meerdere, openbaar beschikbare tools voor verkenning, waaronder: Mimikatz, Regenworm, ReGeorg en NBTscan, en implementeerden vervolgens hun aangepaste implantaten: een loader van de eerste fase, gevolgd door een .NET-loader van de tweede fase (PNGLoad). Helaas hebben we geen van de laatste payloads kunnen ophalen. In 2021 was de lader van de eerste trap een CLR-assemblage (CLRLoad), terwijl deze in 2022 in de meeste gevallen is vervangen door een volledig uitgeruste PowerShell-achterdeur (PowHeartBeat) - beide uitvoeringsketens zijn afgebeeld in figuur 2. Deze drie instrumenten worden in de volgende paragrafen in detail beschreven.
CLRLoad: CLR-assemblagelader
CLRLoad is een generieke Windows PE die we hebben gezien in zowel 32- als 64-bits versies. Het is een loader geschreven in C++ die de volgende fase laadt (PNGLoad), die a . moet zijn Common Language Runtime (CLR)-assemblage DLL-bestand. Die code wordt geladen vanuit een bestand dat zich op schijf in een legitieme map bevindt, vermoedelijk om slachtoffers of incidentresponders te misleiden door te denken dat het legitieme software is.
Sommige CLRLoad-voorbeelden beginnen met het decoderen van het volledige pad van het bestand waarvan ze de inhoud zullen laden als de volgende stap. Deze bestandspaden zijn gecodeerd met een single-byte XOR, met in elk voorbeeld een andere sleutel. Gedecodeerd of in leesbare tekst, deze bestandspaden zijn absoluut, met de volgende die we zijn tegengekomen:
- C:ProgrammabestandenVMwareVMware ToolsVMware VGAuthxsec_1_5.dll
- C: Programmabestanden UltraViewermsvbvm80.dll
- C:ProgrammabestandenInternet ExplorerJsprofile.dll
- C: ProgrammabestandenWinRarRarExtMgt.dll
- C: Programmabestanden (x86) Foxit Software Foxit Readerlucenelib.dll
Vervolgens wordt een mutex gemaakt en hebben we in elk voorbeeld een andere naam gezien. De lader controleert op deze mutex; indien gevonden, wordt het afgesloten, omdat de lader al actief is. In een van de voorbeelden, de mutex Wo0r0KGWhYGO werd aangetroffen, wat de groep de naam Worok gaf.
CLRLoad laadt vervolgens een CLR-assembly van het mogelijk gedecodeerde bestandspad. Als onbeheerde code bereikt CLRLoad dit via CorBindToRuntimeEx Windows API-aanroepen in 32-bits varianten, of CLRCreateInstance oproepen in 64-bits varianten.
PowHeartBeat: PowerShell-achterdeur
PowHeartBeat is een volledig uitgeruste achterdeur die is geschreven in PowerShell, verdoezeld met behulp van verschillende technieken zoals compressie, codering en codering. Op basis van ESET-telemetrie denken we dat PowHeartBeat CLRLoad heeft vervangen in recentere Worok-campagnes als de tool die werd gebruikt om PNGLoad te starten.
De eerste laag van de achterdeurcode bestaat uit meerdere brokken base64-gecodeerde PowerShell-code. Zodra de payload is gereconstrueerd, wordt deze uitgevoerd via IEX. Eenmaal gedecodeerd, wordt een andere laag versluierde code uitgevoerd, die we kunnen zien in figuur 3.
De tweede laag van de backdoor first base64 decodeert de volgende laag van zijn code, die vervolgens wordt gedecodeerd met Drievoudige DES (CBC-modus). Na de decodering wordt deze code gedecomprimeerd met behulp van de gzip algoritme, waardoor de derde laag PowerShell-code wordt verkregen, de eigenlijke achterdeur. Het is verdeeld in twee hoofdonderdelen: configuratie en het afhandelen van achterdeurcommando's.
De hoofdlaag van backdoor-code is ook geschreven in PowerShell en gebruikt HTTP of ICMP om te communiceren met de C&C-server. Het werkt zoals weergegeven in figuur 4.
Configuratie
De configuratie bevat meerdere velden, waaronder versienummer, optionele proxyconfiguratie en C&C-adres. Tabel 1 beschrijft de betekenis van de configuratievelden in de verschillende versies die we hebben waargenomen.
Tabel 1. Betekenissen van configuratievelden
Veldnaam | Omschrijving |
---|---|
nouse / ikuyrtydyfg (andere monsters) |
ongebruikt. |
Klant identificatie | Klant-ID, gebruikt voor de volgende doeleinden: · Als een waarde bij het construeren van de Cookiekop voor C&C-communicatie. · Als cryptografisch artefact voor verzonden gegevensversleuteling. |
Versie | Versienummer van PowHeartBeat. |
ExecTimes | Aantal toegestane uitvoeringspogingen bij het uitgeven van een a RunCmd (opdracht wordt uitgevoerd) opdracht. |
gebruikersagent | User-agent gebruikt voor C&C-communicatie. |
Referer | Referer header gebruikt voor C&C-communicatie. |
AccepterenCodering | ongebruikt. |
CookieClientId CookieTaskId CookieTerminalId |
Waarden die zijn gebruikt om de . te construeren Cookiebleid header voor C&C-communicatie. |
URLHttps | Protocol te gebruiken voor C&C-communicatie. |
UrlDomein IP adres domeinen |
URL, domein(en) of IP-adres gebruikt als de C&C-server. Als domeinen is niet leeg, het is gekozen in plaats van IP adres. In andere gevallen, IP adres is bezet. |
UrlVerzendHeartBeat | URL-pad dat wordt gebruikt wanneer de achterdeur de C&C-server om opdrachten vraagt. |
UrlSendResultaat | URL-pad dat wordt gebruikt wanneer de achterdeur de resultaten van de opdracht terugstuurt naar de C&C-server. |
GetUrl | Volledige URL, gebruikt door PowHeartBeat om opdrachten van de C&C-server op te vragen. Het is de aaneenschakeling van de bovenstaande URL-elementen. |
PutUrl | Hetzelfde als GetUrl maar gebruikt om de resultaten van de opdracht terug te sturen naar de C&C-server. |
huidige pad | ongebruikt. |
ProxyEnableFlag | Vlag die aangeeft of de achterdeur een proxy moet gebruiken of niet om te communiceren met de C&C-server. |
Proxymsg | Adres van de te gebruiken proxy als ProxyEnableFlag is ingesteld op $waar. |
interval | Tijd in seconden dat het script slaapt tussen GET-verzoeken. |
Basisconfiguratiepad | Pad naar een optioneel configuratiebestand met: UpTime, uitvaltijd, Standaardinterval en domeinen. Die waarden worden overschreven als het bestand aanwezig is. |
UpTime | Tijd van de dag waarop de achterdeur begint te werken, wat betekent dat het GET-verzoeken begint te doen aan de C&C-server. |
uitvaltijd | Tijdstip waarop de achterdeur kan werken, d.w.z. het tijdstip waarop hij stopt met het doen van verzoeken aan de C&C-server. |
DomeinIndex | Index van de huidige domeinnaam die moet worden gebruikt voor communicatie met de C&C-server. In het geval dat een verzoek een andere foutmelding geeft dan 304 ("Niet aangepast"), DomeinIndex is verhoogd. |
Geheime sleutel | Sleutel die wordt gebruikt om de configuratie te ontsleutelen/versleutelen. Configuratie is versleuteld met multiple-byte XOR. |
AlsLog | ongebruikt. |
IfLogFilePath | Vlag die aangeeft of logboekregistratie is ingeschakeld. |
logpad | Pad van het logbestand. |
ProxyBestand | Bestandspad van de optionele proxyconfiguratie. Als het leeg is of niet wordt gevonden in het bestandssysteem, haalt de achterdeur de proxy-instellingen van de gebruiker op uit de registerwaarde HKCUSoftwareMicrosoftWindowsHuidige versieInternetinstellingenProxyServer . |
AlsConfig | Vlag die aangeeft of een configuratiebestand moet worden gebruikt. |
Afbeelding 5 toont een voorbeeld van de configuratie die is geëxtraheerd uit een PowHeartBeat-monster (SHA-1: 757ABA12D04FD1167528FDD107A441D11CD8C427).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
$Script:nouse = 100; if(Test-Path $MyInvocation.MyCommand.Path){Remove-item $MyInvocation.MyCommand.Path -Force;} $Script:ClientId = “83”; $Script:Version = “2.1.3.0003”; $Script:ExecTimes = 10; $Script:UserAgent = “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3487.100 Safari/537.36”; $Script:Referer = “www.adobe.com”; $Script:AcceptEncoding = “text/html,app1ication/xhtml+xml,app1ication/xml;q=0.9,*/*;q=0.8”; $Script:CookieClientId = “s_ecid”; $Script:CookieTaskId = “aam_uuid”; $Script:CookieTerminalId = “AAMC_adobe_0”; $Script:UrlHttps = “http://”; $Script:UrlDomain= ” 118.193.78[.]22:443″; $Script:UrlSendHeartBeat = “/latest/AdobeMessagingClient.js”; $Script:UrlSendResult = “/content/dam/offers-homepage/homepage.jpg”; $Script:GetUrl = $Script:UrlHttps + $Script:UrlDomain + $Script:UrlSendHeartBeat; $Script:PutUrl = $Script:UrlHttps + $Script:UrlDomain + $Script:UrlSendResult; $Script:currentPath = Split-Path -Parent $MyInvocation.MyCommand.Definition; $Script:ProxyEnableFlag = $false; $Script:Proxymsg; $Script:Interval = 10 ; $Script:BasicConfigPath = “C:ProgramDataunins.dat”; $Script:UpTime = 0; $Script:DownTime = 24; $Script:Domains; $Script:DomainIndex; $Script:SecretKey = “###ConfigKey###”; #$Script:IfLog = $true; $Script:IfLogFilePath = “C:ProgramDatatpncp.dat”; $Script:logpath = “C:ProgramDataunins000.dat”; $Script:ProxyFile = “C:ProgramDatahwrenalm.dat”; $Script:IfConfig = $false; |
Afbeelding 5. Configuratievoorbeeld
Data encryptie
PowHeartBeat versleutelt logboeken en aanvullende inhoud van configuratiebestanden.
De inhoud van het logbestand wordt versleuteld via een XOR van meerdere bytes met een sleutel die in het voorbeeld in leesbare tekst is opgegeven. interessant, klant identificatie wordt gebruikt als een zout voor de index in de sleutelarray. De sleutel is een array van 256 bytes, die identiek was in elk voorbeeld dat we tegenkwamen. Aanvullende inhoud van het configuratiebestand wordt versleuteld via multiple-byte XOR met de waarde from Geheime sleutel als zijn sleutel.
C&C communicatie
PowHeartBeat gebruikte HTTP voor C&C-communicatie tot versie 2.4 en schakelde toen over op ICMP. In beide gevallen is de communicatie niet versleuteld.
HTTP
In een oneindige lus stuurt de achterdeur een GET-verzoek naar de C&C-server, waarin wordt gevraagd om een opdracht te geven. Het versleutelde antwoord wordt ontsleuteld door de achterdeur, die de opdracht verwerkt, en de uitvoer van de opdracht naar een bestand schrijft waarvan de inhoud vervolgens via een POST-verzoek naar de C&C-server wordt gestuurd.
Het formaat van de GET-verzoeken is als volgt:
GET <UrlSendHeartBeat> HTTP/1.1 User-Agent: <UserAgent> Referer: <Referer> Host: <Domain> Cookie: <CookieClientId>=<ClientId> Connection: close |
Merk op dat het verzoek is opgebouwd met behulp van de gelijknamige configuratievelden.
In het antwoord van de C&C-server is de derde byte van de inhoud de opdracht-ID die aangeeft welke opdracht door de achterdeur moet worden verwerkt. We noemen het commando_id. De resterende inhoud van het antwoord wordt als argument doorgegeven aan de opdracht die wordt verwerkt. Deze inhoud is versleuteld met het algoritme dat wordt getoond in figuur 6, taak-ID zijnde de waarde van de cookie die vernoemd is naar CookieTaskId's waarde uit de configuratie.
1 2 3 4 5 6 7 8 9 10 |
o[int] $pos = $taskId % 256; for ($i = 0; $i -lt $tmpBytes.Value.Length; $i++) { $pos = $pos + $clientId; if ($pos -ge 256) { $pos = $pos % 256; } $tmpBytes.Value[$i] = [byte]($tmpBytes.Value[$i] -bxor $hexEnc[$pos]); } |
Afbeelding 6. Versleutelingsalgoritme voor inhoudsgegevens
Het antwoord van de C&C-server bevat ook nog een cookie, waarvan de naam wordt gespecificeerd door de backdoor's CookieTerminalId configuratie variabele. De waarde van deze cookie wordt herhaald in het POST-verzoek van de achterdeur en mag niet leeg zijn. Na het uitvoeren van het backdoor-commando stuurt PowHeartBeat het resultaat als een POST-verzoek naar de C&C-server. Het resultaat wordt verzonden als een bestand waarvan de naam is .png.
ICMP
Vanaf versie 2.4 van PowHeartBeat werd HTTP vervangen door ICMP, verzonden pakketten met een time-out van zes seconden en ongefragmenteerd. Communicatie via ICMP is hoogstwaarschijnlijk een manier om detectie te omzeilen.
Er is geen grote verandering in versie 2.4 en hoger, maar we hebben enkele wijzigingen in de code opgemerkt:
- PowHeartBeat verzendt een hartslagpakket bij elke lus die de string bevat abcdefghijklmnopqrstuvwxyz, voordat u een opdracht aanvraagt. Dit informeert de C&C-server dat de achterdeur klaar is om commando's te ontvangen.
- Verzoeken om opdrachten uitgevoerd te krijgen door de achterdeur bevatten de string abcdefghijklmnop.
Heartbeat-pakketten hebben het formaat dat wordt beschreven in Afbeelding 7.
Het verschil tussen klant identificatie en klant vlag dat klant identificatie verschilt in elk monster, terwijl: klant vlag is hetzelfde in elk monster dat ICMP gebruikt. hartslag vlag geeft aan dat de achterdeur een hartslag stuurt. Het antwoord van de C&C-server heeft het formaat dat wordt beschreven in Afbeelding 8.
vlag hier geeft aan of er een commando moet worden gegeven aan de achterdeur. Verzoeken om opdrachten te krijgen hebben de indeling die wordt beschreven in Afbeelding 9.
Merk op dat de ICMP-modus van de achterdeur het mogelijk maakt om een onbeperkte hoeveelheid gegevens te ontvangen, verdeeld in brokken, en de variabelen gegevenslengte:, huidige positie en totale lengte worden gebruikt om de verzonden gegevens bij te houden. De antwoorden op deze verzoeken hebben het formaat dat wordt beschreven in afbeelding 10.
Net als bij HTTP-antwoorden is de opdracht-ID de derde byte van gegevens.
Na zeven opeenvolgende ICMP-antwoorden met lege of inconsistent geformatteerde inhoud, worden de overdrachten tussen de achterdeur en de C&C-server als voltooid beschouwd.
Wat betreft de verzoeken om het resultaat van het gegeven commando naar de C&C-server te sturen, wordt de servermodus gewijzigd in de postmodus en de laatste string (abcdefghijklmnop) wordt gewijzigd voor de resultaatgegevens.
Achterdeur commando's
PowHeartBeat heeft verschillende mogelijkheden, waaronder het uitvoeren van opdrachten/processen en bestandsmanipulatie. Tabel 2 geeft een overzicht van alle opdrachten die door de verschillende geanalyseerde monsters worden ondersteund.
Tabel 2. Beschrijvingen van PowHeartBeat-opdrachten
Naam | Opdracht-ID | Omschrijving |
---|---|---|
Cmd | 0x02 | Voer een PowerShell-opdracht uit. |
Exe | 0x04 | Voer een opdracht uit als a . |
Bestand upload | 0x06 | Upload een bestand naar de slachtoffermachine. Bestandsinhoud is gzip-gecomprimeerd. |
Bestand download | 0x08 | Download een bestand van de slachtoffermachine en retourneer bestandspad, bestandslengte, aanmaaktijd, toegangstijden en bestandsinhoud naar de C&C-server. |
Bestandsweergave | 0x0A | Verkrijg bestandsinformatie van een specifieke map, in het bijzonder: · Bestandsnamen · Bestandskenmerken · Laatste schrijftijden · Bestandsinhoud |
BestandVerwijderen | 0x0C | Een bestand verwijderen. |
Bestand Hernoemen | 0x0E | Hernoem of verplaats een bestand. |
WijzigDir | 0x10 | Wijzig de huidige werklocatie van de achterdeur. |
Info | 0x12 | Verkrijg een informatiecategorie volgens het opgegeven argument: · "Basis informatie": Klant identificatie, Versie, hostnaam, IP-adressen, explorer.exe informatie over versie en grootte, besturingssysteem (architectuur en vlag die aangeven of de machine een server is), interval, huidige map, schijfinformatie (naam, type, vrije ruimte en totale grootte), huidige tijd · “Tijdsintervalinformatie”: interval en huidige tijd · "Domeininformatie": gedecodeerde inhoud van het configuratiebestand |
Config | 0x14 | Werk de inhoud van het configuratiebestand bij en laad de configuratie opnieuw. |
NB | 0x63 | Achterdeur uitgang. |
In het geval van fouten aan de backdoor-kant, gebruikt de backdoor een specifieke opdracht-ID 0x00 in het POST-verzoek aan de C&C-server, wat aangeeft dat er een fout is opgetreden.
Merk op dat voordat de informatie teruggestuurd wordt naar de C&C-server, de gegevens gzip-gecomprimeerd zijn.
PNGLoad: Steganografische lader
PNGLoad is de payload van de tweede fase die door Worok wordt ingezet op gecompromitteerde systemen en, volgens ESET-telemetrie, wordt geladen door CLRLoad of PowHeartBeat. Hoewel we in PowHeartBeat geen code zien die PNGLoad rechtstreeks laadt, heeft de achterdeur de mogelijkheid om extra payloads van de C&C-server te downloaden en uit te voeren, wat waarschijnlijk is hoe de aanvallers PNGLoad hebben geïmplementeerd op systemen die zijn gecompromitteerd met PowHeartBeat. PNGLoad is een loader die bytes uit PNG-bestanden gebruikt om een payload te maken die moet worden uitgevoerd. Het is een 64-bits .NET uitvoerbaar bestand – versluierd met .NET-reactor – die zich voordoet als legitieme software. Afbeelding 11 toont bijvoorbeeld de CLR-headers van een voorbeeld dat zich voordoet als een WinRAR-DLL.
Eenmaal onthecht, is er slechts één klasse aanwezig. In deze klas is er een Hoofdpad attribuut dat het directorypad bevat dat de achterdeur zoekt, inclusief de subdirectories, naar bestanden met a . Png extensie, zoals weergegeven in afbeelding 12.
Elke . Png bestand gevonden door deze zoekopdracht van Hoofdpad wordt vervolgens gecontroleerd op steganografisch ingesloten inhoud. Eerst wordt het minst significante bit van de R (rood), G (groen), B (blauw) en A (alfa) waarden van elke pixel opgehaald en in een buffer geassembleerd. Als de eerste acht bytes van die buffer overeenkomen met het magische getal dat te zien is in figuur 13 en de volgende waarde van acht bytes, control, niet-null is, doorstaat het bestand de steganografische inhoudscontrole van PNGLoad. Voor dergelijke bestanden gaat de verwerking door met de rest van de buffer gedecodeerd met een multi-byte XOR, met behulp van de sleutel die is opgeslagen in PNGLoad's GeheimeKeyBytes attribuut, en vervolgens wordt de gedecodeerde buffer gzip-gedecomprimeerd. Het resultaat is naar verwachting een PowerShell-script dat onmiddellijk wordt uitgevoerd.
Interessant is dat bewerkingen die door PNGLoad worden uitgevoerd, worden vastgelegd in een bestand waarvan het pad is opgeslagen in de variabele Logbestandpad. Bewerkingen worden alleen gelogd als er een bestand aanwezig is waarvan het pad is gespecificeerd door de interne variabele IfLogFilePath.
We hebben geen monster kunnen verkrijgen . Png gebruikt samen met PNGLoad, maar de manier waarop PNGLoad werkt, suggereert dat het zou moeten werken met geldige PNG-bestanden. Om de kwaadaardige lading te verbergen, gebruikt Worok Bitmap-objecten in C#, die alleen pixelinformatie uit bestanden halen, niet de metadata van het bestand. Dit betekent dat Worok zijn kwaadaardige payloads kan verbergen in geldige, onschuldig ogende PNG-afbeeldingen en zich dus in het volle zicht kan verbergen.
Conclusie
Worok is een cyberspionagegroep die zijn eigen tools ontwikkelt en bestaande tools gebruikt om zijn doelen in gevaar te brengen. Het stelen van informatie van hun slachtoffers is wat wij denken dat de operators nastreven, omdat ze zich richten op spraakmakende entiteiten in Azië en Afrika, gericht op verschillende sectoren, zowel privé als publiek, maar met een specifieke nadruk op overheidsinstanties. Activiteitstijden en toolset wijzen op mogelijke banden met TA428, maar we maken deze beoordeling met weinig vertrouwen. Hun aangepaste toolset omvat twee laders - één in C++ en één in C# .NET - en één PowerShell-backdoor. Hoewel onze zichtbaarheid beperkt is, hopen we dat het belichten van deze groep andere onderzoekers zal aanmoedigen om informatie over deze groep te delen.
ESET Research biedt nu ook privé APT-intelligentierapporten en datafeeds. Voor vragen over deze service, bezoek de ESET-bedreigingsinformatie pagina.
IOCs
Bestanden
SHA-1 | Bestandsnaam | ESET-detectienaam | Opmerking |
---|---|---|---|
3A47185D0735CDECF4C7C2299EB18401BFB328D5 | script | PowerShell/PowHeartBeat.B | PowHeartBeat 2.4.3.0003. |
27ABB54A858AD1C1FF2863913BDA698D184E180D | script | PowerShell/PowHeartBeat.A | PowHeartBeat 2.4.3.0003. |
678A131A9E932B9436241402D9727AA7D06A87E3 | script | PowerShell/PowHeartBeat.B | PowHeartBeat 2.4.3.0003. |
757ABA12D04FD1167528FDD107A441D11CD8C427 | script | PowerShell/PowHeartBeat.B | PowHeartBeat 2.1.3.0003. |
54700A48D934676FC698675B4CA5F712C0373188 | script | PowerShell/PowHeartBeat.A | PowHeartBeat 1.1.3.0002. |
C2F53C138CB1B87D8FC9253A7088DB30B25389AF | script | PowerShell/PowHeartBeat.A | PowHeartBeat 1.1.3.0002. |
C2F1954DE11F72A46A4E823DE767210A3743B205 | tmp.ps1 | PowerShell/PowHeartBeat.B | PowHeartBeat 2.4.3.0004. |
CE430A27DF87A6952D732B4562A7C23BEF4602D1 | tmp.ps1 | PowerShell/PowHeartBeat.A | PowHeartBeat 2.1.3.0004. |
EDE5AB2B94BA85F28D5EE22656958E4ECD77B6FF | script | PowerShell/PowHeartBeat.A | PowHeartBeat 2.4.3.0003. |
4721EEBA13535D1EE98654EFCE6B43B778F13126 | vix64.dll | MSIL/PNGLoader.A | PNGLoader. |
728A6CB7A150141B4250659CF853F39BFDB7A46C | RarExtMgt.dll | MSIL/PNGLoader.A | PNGLoader. |
864E55749D28036704B6EA66555A86527E02AF4A | Jsprofile.dll | MSIL/PNGLoader.A | PNGLoader. |
8DA6387F30C584B5FD3694A99EC066784209CA4C | vssxml.dll | MSIL/PNGLoader.A | PNGLoader. |
AA60FB4293530FBFF00D200C0D44EEB1A17B1C76 | xsec_1_5.dll | MSIL/PNGLoader.A | PNGLoader. |
B2EAEC695DD8BB518C7E24C4F37A08344D6975BE | msvbvm80.dll | MSIL/PNGLoader.A | PNGLoader. |
CDB6B1CAFEE098615508F107814179DEAED1EBCF | lucenelib.dll | MSIL/PNGLoader.A | PNGLoader. |
4F9A43E6CF37FF20AE96E564C93898FDA6787F7D | vsstrace.dll | Win64/CRLLoad.C | CLR laden. |
F181E87B0CD6AA4575FD51B9F868CA7B27240610 | ncrypt.dll | Win32/CRLLoad.A | CLR laden. |
4CCF0386BDE80C339EFE0CC734CB497E0B08049C | ncrypt.dll | Win32/CRLLoad.A | CLR laden. |
5CFC0D776AF023DCFE8EDED5CADA03C6D7F9C244 | wlbsctrl.dll | Win64/CRLLoad.E | CLR laden. |
05F19EBF6D46576144276090CC113C6AB8CCEC08 | wlbsctrl.dll | Win32/CRLLoad.A | CLR laden. |
A5D548543D3C3037DA67DC0DA47214B2C2B15864 | secur32.dll | Win64/CRLLoad.H | CLR laden. |
CBF42DCAF579AF7E6055237E524C0F30507090F3 | dbghelp.dll | Win64/CRLLoad.C | CLR laden. |
Bestandspaden
Enkele Hoofdpad, Logbestandpad en IfLogFilePath waarden die we tegenkwamen in PNGLoad-voorbeelden:
Hoofdpad | Logbestandpad | IfLogFilePath |
---|---|---|
C:ProgrammabestandenVMwareVMware Tools | C:ProgrammabestandenVMwareVMware ToolsVMware VGAuthreadme.txt | C:ProgrammabestandenVMwareVMware ToolsVMware VGAuthVMWSU_V1_1.dll |
C: Programmabestanden WinRar | C: ProgrammabestandenWinRarrarinstall.log | C: ProgrammabestandenWinRardes.dat |
C:ProgrammabestandenUltraViewer | C:Program FilesUltraViewer (CopyRights.dat) | C: Programmabestanden UltraVieweruvcr.dll |
Netwerk
Domein | IP |
---|---|
Geen | 118.193.78[.]22 |
Geen | 118.193.78[.]57 |
vliegtuig.travel-commercials[.]agentschap | 5.183.101[.]9 |
central.suhypercloud[.]org | 45.77.36[.]243 |
Mutexen
In CLRLoad-voorbeelden zijn de mutex-namen die we tegenkwamen:
aB82UduGX0EX
ad8TbUIZl5Ga
Mr2PJVxbIBD4
oERiQtKLgPgK
U37uxsCsA4Xm
Wo0r0KGWhYGO
xBUjQR2vxYTz
zYCLBWekRX3t
3c3401ad-e77d-4142-8db5-8eb5483d7e41
9xvzMsaWqxMijn
Een uitgebreide lijst van Indicators of Compromise (IoC's) en voorbeelden is te vinden in: onze GitHub-repository.
MITRE ATT&CK-technieken
Deze tafel is gemaakt met behulp van versie 11 van het MITRE ATT&CK-raamwerk.
Tactiek | ID | Naam | Omschrijving |
---|---|---|---|
verkenning | T1592.002 | Verzamel informatie over de host van het slachtoffer: Software | PowHeartBeat verzamelt explorer.exe's informatie. |
T1592.001 | Verzamel informatie over de host van het slachtoffer: Hardware | PowHeartBeat verzamelt informatie over schijven. | |
T1590.005 | Informatie over slachtoffernetwerk verzamelen: IP-adressen | PowHeartBeat verzamelt IP-adressen van de besmette computer. | |
Ontwikkeling van hulpbronnen | T1583.004 | Infrastructuur verwerven: Server | Worok gebruikt zijn eigen C&C-servers. |
T1588.002 | Mogelijkheden verkrijgen: Tool | Worok implementeerde meerdere openbaar beschikbare tools op de gecompromitteerde machines. | |
T1583.001 | Infrastructuur verwerven: domeinen | Worok heeft domeinen geregistreerd om de communicatie en enscenering van C&C te vergemakkelijken. | |
T1588.005 | Mogelijkheden verkrijgen: Exploits | Worok heeft gebruik gemaakt van de ProxyShell-kwetsbaarheid. | |
T1587.001 | Ontwikkelmogelijkheden: Malware | Worok heeft zijn eigen malware ontwikkeld: CLRLoad, PNGLoad, PowHeartBeat. | |
T1587.003 | Ontwikkelmogelijkheden: digitale certificaten | Worok heeft Let's Encrypt SSL-certificaten gemaakt om wederzijdse TLS-authenticatie voor malware mogelijk te maken. | |
Uitvoering | T1059.001 | Opdracht- en scriptinterpreter: PowerShell | PowHeartBeat is geschreven in PowerShell. |
Volharding | T1505.003 | Serversoftwarecomponent: Web Shell | Worok gebruikt de webshell ReGeorg. |
verdediging ontduiking | T1140 | Deobfuscate/decodeer bestanden of informatie | Worok gebruikt verschillende aangepaste XOR-gebaseerde schema's om strings en logs in PowHeartBeat, PNGLoad en CLRLoad te versleutelen. |
T1036.005 | Maskerade: match legitieme naam of locatie | PNGLoad-voorbeelden worden geïmplementeerd in legitiem ogende VMWare-mappen. | |
Toegang tot inloggegevens | T1003.001 | Dumping van OS-referenties: LSASS-geheugen | Worok gebruikt Mimikatz om referenties uit het LSASS-geheugen te dumpen. |
De reis van mijn leven | T1082 | Ontdekking van systeeminformatie | PowHeartBeat verzamelt informatie over het besturingssysteem. |
T1083 | Bestands- en directorydetectie | PowHeartBeat kan bestanden en mappen weergeven. | |
T1046 | Ontdekking van netwerkservices | Worok gebruikt NbtScan om netwerkinformatie over gecompromitteerde machines te verkrijgen. | |
T1124 | Detectie van systeemtijd | PowHeartBeat verzamelt de tijdinformatie van het slachtoffer. | |
Collectie | T1005 | Gegevens van lokaal systeem | PowHeartBeat verzamelt gegevens van het lokale systeem. |
T1560.002 | Verzamelde gegevens archiveren: archiveren via bibliotheek | PowHeartBeat gzip comprimeert gegevens voordat deze naar de C&C-server worden verzonden. | |
Command and Control | T1071.001 | Applicatielaagprotocol: webprotocollen | Sommige PowHeartBeat-varianten gebruiken HTTP als communicatieprotocol met de C&C-server. |
T1090.001 | Proxy: Interne Proxy | PowHeartBeat verwerkt de proxyconfiguratie op de computer van het slachtoffer. | |
T1001.002 | Gegevensverduistering: Steganografie | PNGLoad haalt pixelwaarden uit . Png bestanden om payloads te reconstrueren. | |
T1573.002 | Versleuteld kanaal: asymmetrische cryptografie | PowHeartBeat verwerkt HTTPS-communicatie met de C&C-server. | |
T1095 | Niet-toepassingslaagprotocol | Sommige PowHeartBeat-varianten gebruiken ICMP als communicatieprotocol met de C&C-server. | |
T1132.001 | Gegevenscodering: standaardcodering | Worok gebruikt XOR-codering in PowHeartBeat en PNGLoad. | |
T1132.002 | Gegevenscodering: niet-standaardcodering | Worok gebruikt XOR-coderingsalgoritmen die gebruik maken van een extra zout. | |
exfiltratie | T1041 | Exfiltratie via C2-kanaal | PowHeartBeat gebruikt zijn C&C-communicatiekanaal om informatie te exfiltreren. |
- blockchain
- vindingrijk
- cryptocurrency wallets
- cryptoexchange
- internetveiligheid
- cybercriminelen
- Cybersecurity
- Department of Homeland Security
- digitale portefeuilles
- ESET-onderzoek
- firewall
- Kaspersky
- malware
- Mcafee
- NexBLOC
- Plato
- plato ai
- Plato gegevensintelligentie
- Plato-spel
- PlatoData
- platogamen
- VPN
- We leven veiligheid
- website veiligheid
- zephyrnet