Vem simmar i sydkoreanska vatten? Möt ScarCrufts Dolphin PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Vem simmar i sydkoreanska vatten? Möt ScarCruft's Dolphin

ESET-forskare avslöjar Dolphin, en sofistikerad bakdörr som utökar arsenalen för ScarCruft APT-gruppen

ESET-forskare har analyserat en tidigare orapporterad bakdörr som används av ScarCruft APT-gruppen. Bakdörren, som vi kallade Dolphin, har ett brett utbud av spionfunktioner, inklusive övervakning av enheter och bärbara enheter och exfiltrering av filer av intresse, tangentloggning och skärmdumpar och stjäla referenser från webbläsare. Dess funktionalitet är reserverad för utvalda mål, till vilka bakdörren distribueras efter första kompromiss med mindre avancerad skadlig programvara. I linje med andra ScarCruft-verktyg, missbrukar Dolphin molnlagringstjänster – särskilt Google Drive – för C&C-kommunikation.

Under vår undersökning såg vi fortsatt utveckling av bakdörren och försök från skadlig programvara att undvika upptäckt. En anmärkningsvärd egenskap hos tidigare Dolphin-versioner som vi analyserade är möjligheten att ändra inställningarna för offrens inloggade Google- och Gmail-konton för att sänka deras säkerhet, med största sannolikhet för att behålla åtkomsten till offrens e-postkorgar.

I det här blogginlägget ger vi en teknisk analys av Dolphin-bakdörren och förklarar dess koppling till tidigare dokumenterad ScarCruft-aktivitet. Vi kommer att presentera våra resultat om detta nya tillägg till ScarCrufts verktygsuppsättning på AVAR 2022 konferens.

Huvudpunkter i detta blogginlägg:

  • ESET-forskare analyserade Dolphin, en tidigare orapporterad bakdörr som används av ScarCruft APT-gruppen.
  • Dolphin är endast utplacerad på utvalda mål; den söker igenom enheterna i komprometterade system efter intressanta filer och exfiltrerar dem till Google Drive.
  • Bakdörren användes som den sista nyttolasten av en flerstegsattack i början av 2021, som involverade en vattenhålsattack på en sydkoreansk nättidning, en Internet Explorer-exploatering och en annan ScarCruft-bakdörr, som heter BLUELIGHT.
  • Sedan den första upptäckten av Dolphin i april 2021 har ESET-forskare observerat flera versioner av bakdörren, där hotaktörerna förbättrade bakdörrens kapacitet och gjorde försök att undvika upptäckt.
  • En anmärkningsvärd egenskap hos tidigare Dolphin-versioner som vi analyserade är möjligheten att ändra inställningarna för offrens inloggade Google- och Gmail-konton för att sänka säkerheten.

ScarCruft-profil

ScarCruft, även känd som APT37 eller Reaper, är en spionagegrupp som har varit verksam sedan åtminstone 2012. Den fokuserar i första hand på Sydkorea, men även andra asiatiska länder har varit måltavlor. ScarCruft verkar främst vara intresserad av statliga och militära organisationer, och företag inom olika branscher kopplade till Nordkoreas intressen.

Delfin översikt

2021 genomförde ScarCruft en vattenhålsattack mot en sydkoreansk nättidning med fokus på Nordkorea. Attacken bestod av flera komponenter, inklusive en Internet Explorer-exploatering och skalkod som ledde till en bakdörr vid namn BLUELIGHT, rapporterad av Volexitet och kaspersky.

I dessa rapporter beskrevs BLUELIGHT-bakdörren som attackens sista nyttolast. Men när vi analyserade attacken upptäckte vi genom ESET-telemetri en andra, mer sofistikerad bakdörr, utplacerad på utvalda offer via BLUELIGHT. Vi döpte denna bakdörr Dolphin baserat på en PDB-sökväg som finns i den körbara filen.

Medan BLUELIGHT-bakdörren utför grundläggande spaning och utvärdering av den komprometterade maskinen efter exploatering, är Dolphin mer sofistikerad och manuellt utplacerad endast mot utvalda offer. Båda bakdörrarna kan exfiltrera filer från en sökväg som anges i ett kommando, men Dolphin söker också aktivt efter enheter och exfiltrerar automatiskt filer med tillägg av intresse för ScarCruft.

Figur 1 ger en översikt över attackkomponenterna som leder till utförandet av Dolphin-bakdörren.

Figur 1. Översikt över attackkomponenterna som leder till utförandet av Dolphin-bakdörren

Delfinanalys

Analys av Dolphins komponenter och deras kapacitet ges i följande avsnitt.

Analysen är baserad på den första versionen av bakdörren som vi hittade, 1.9 (baserat på en sträng som finns i koden) med ytterligare information om ändringar i nyare versioner. En sammanfattad beskrivning av versionsändringarna finns i Delfinernas evolution sektion.

Dolphin installationsprogram

De följande avsnitten beskriver installations- och lastarkomponenterna som ansvarar för utförandet av Dolphin-bakdörren i det analyserade attackscenariot.

Det är värt att notera att det här installationsprogrammet och den installerade laddaren inte är exklusiva för Dolphin, och har tidigare setts användas med annan ScarCruft-skadlig programvara.

Installatörens skalkod följer dessa huvudmål:

  • Ladda ner och distribuera en Python-tolk
  • Generera och distribuera en lastkedja med dess nyttolast
  • Se till att lastkedjan håller i sig

Installationsprogrammet laddar ner en CAB-fil från OneDrive, som innehåller en legitim Python 2.7-tolk. CAB packas upp till % AppData%, och beroende på arkitektur hamnar tolken i en av följande kataloger:

  • %appdata%Python27(32)
  • %appdata%Python27(64)

Installationsprogrammet genererar två filsökvägar för laddningskedjans komponenter, och , med formatet .

väljs slumpmässigt från

  • %PROGRAMDATA%
  • %OFFENTLIG%
  • %APPDATA%Microsoft
  • %APPDATA%MicrosoftWindows
  • % LOCALAPPDATA %
  • %LOCALAPPDATA%Microsoft
  • %LOCALAPPDATA%MicrosoftWindows

och är slumpmässigt valda från befintliga filnamn (utan filnamnstillägg) i %windir%inf*.inf och %windir%system32*.dll.

För att generera steg 1 av Loader använder den en skriptmall som är fylld med slumpmässigt genererade namn (variabler, funktion). Mallen med genererat exempel visas i figur 2.

Vem simmar i sydkoreanska vatten? Möt ScarCrufts Dolphin PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Figur 2. Steg 1 mall och genererat exempel

Manuset skrivs sedan till .

Steg 2 (inbäddat i installationsprogrammet) som innehåller resten av laddningskedjan, inklusive nyttolasten, krypteras med en XOR-nyckel på en byte härledd från den aktuella tiden och skrivs till .

För att fortsätta starten av laddningskedjan ställer installationsprogrammet in ett Kör-registervärde:

HKCUSoftwareMicrosoftWindowsCurrentVersionRun”%appdata%Python27({32|64})pythonw.exe” “” “”

Smakämnen väljs slumpmässigt från befintliga filnamn som matchar %WINDIR%inf*.inf, kassera Inf. förlängning.

För att starta laddningskedjan efter installationen skapas en engångsuppgift.

Delfinlastare

Dolphin loader består av ett Python-skript och skalkod.

Steg 1, Python-skriptet, läser en specificerad fil, XOR-dekrypterar dess innehåll och exekverar den resulterande skalkoden.

Steg 2, skalkod, skapar en värdprocess (slumpmässig CLI körbar från %WINDIR%System32*.exe), XOR-dekrypterar ytterligare skalkod som bärs inom sig själv och injicerar den i den skapade processen.

Steg 3, en annan skalkod, XOR-dekrypterar en inbäddad PE-fil – Dolphin-bakdörren – och laddar och kör den med en anpassad PE-lastare.

Delfin bakdörr

Dolphin är en bakdörr som samlar in information och utför kommandon som utfärdas av dess operatörer. Bakdörren är en vanlig Windows-körbar, skriven i C++. Den kommunicerar med Google Drive molnlagring, som används som dess C&C-server.

Vi döpte bakdörren Dolphin baserat på en PDB-sökväg som finns i den körbara filen:

D:DevelopmentBACKDOORDolphinx64ReleaseDolphin.pdb

Persistens

Bakdörren kontrollerar regelbundet och skapar sin egen beständighet genom att se till att steg 1 av laddaren körs varje gång systemet startas, via ett registerkörningsvärde, på samma sätt som i installationsprogrammet:

HKCUSoftwareMicrosoftWindowsCurrentVersionRun”%appdata%Python27({32|64})pythonw.exe” “” “”

Capabilities

Följande grundläggande information om datorn och bakdörren samlas in:

  • Aktuell bakdörrskonfiguration
  • Användarnamn
  • datornamn
  • Lokal och extern IP-adress
  • Lista över installerade säkerhetsprodukter
  • RAM-storlek och användning
  • Resultat av kontroll av debugger och andra inspektionsverktyg (som Wireshark)
  • OS version
  • Aktuell tid
  • Skadlig programvara version

Dolphin laddar ner kommandon, utfärdade av dess operatörer, från Google Drive-lagring och kör dem. Efter exekvering laddas utdata av kommandon upp. De flesta av Dolphins möjligheter styrs genom kommandon.

De mest relevanta funktionerna beskrivs nedan.

Filexfiltrering

Som standard söker Dolphin alla icke-fixerade enheter (USB), skapar kataloglistor och exfiltrerar filer i förlängning. Denna sökning kan utökas till fasta enheter (HDD), via dedikerade kommandon.

Följande filtillägg av intresse, specifika för media, dokument, e-postmeddelanden och certifikat, anges i standardkonfigurationen:

jpg, doc, xls, ppt, hwp, url, csv, pdf, show, cell, eml, odt, rtf, nxl, amr, 3gp, m4a, txt, msg, key, der, cer, docx, xlsx, pptx, pfx, mp3

Förutom denna automatiska sökning kan specifika filer exfiltreras.

I de nyare versionerna utökades standardsökningen till fasta enheter. Kommandot för att hämta specifika filer förbättrades genom att cachelagra/lagra det i konfigurationen tills det är klart.

Bärbara enheter

Bland vanliga enheter söker Dolphin också efter bärbara enheter som smartphones med hjälp av Windows Portable Device (WPD) API. Det skapar kataloglistor och exfiltrerar filer. Denna funktion verkade vara under utveckling i den första versionen vi hittade, av flera anledningar:

  • Att förlita sig på en hårdkodad sökväg med ett användarnamn som sannolikt inte finns på offrets dator
  • Variabelinitiering saknas – vissa variabler antas vara nollinitierade, eller dereferenserade som pekare utan initiering
  • Tilläggsfiltrering saknas

Koden är starkt baserad på Microsofts Portable Devices COM API kodprov.

Förutom automatisk sökning kan operatörerna ange enskilda filer som ska exfiltreras från bärbara enheter.

I nyare versioner färdigställdes och förbättrades denna funktion genom att lägga till tilläggsfiltrering. Av okända anledningar togs kommandot för att hämta specifika filer från bärbara enheter bort.

Keylogging och skärmdumpar

Dolphin loggar tangenttryckningar för fönster med titlar som innehåller delsträngar som anges i dess konfiguration. Standardinställningarna är krom och internet utforska (sic). Detta görs via GetAsyncKeyState API, med tangenttryckningar som loggas tillsammans med fönsternamnet och aktuell tid. Skärmdumpar tas också med ett konfigurerbart intervall; standard är en gång var 30:e sekund.

Skärmdumpar och tangentloggning är aktiverade som standard och kan växlas via ett kommando.

Skalkod

Dolphin kan ta emot skalkod för exekvering. Skalkoden lagras i registret, under en av följande nycklar:

  • HKCUSoftwareMicrosoftWindowsCurrentVersionThemesClassic
  • HKCUSoftwareMicrosoftOneDriveUpdate
  • HKCUSoftwareMicrosoftWindowsCurrentVersionInternetinställningarHttpsSoftwareMicrosoftInternet ExplorerZone (två undernycklar som en, troligen ett kodningsfel)

Det kan exekveras antingen lokalt eller i en specificerad separat process som skapas och injiceras.

I de nyare versionerna lagras skalkoden i filer istället för registret, och den lagrade skalkoden laddas och exekveras vid Dolphins uppstart, vilket inte var fallet i version 1.9 (originalversionen vi analyserade).

Shell-kommandon

Dolphin kan utföra skalkommandon; detta görs via dyker upp API och deras utdata hämtas.

Att stjäla referenser

Dolphin kan hämta inloggningsuppgifter från webbläsare i form av sparade lösenord och cookies. Följande webbläsare stöds:

  • krom
  • kant
  • Internet Explorer

I version 2.2 togs denna funktion bort, förmodligen för att undvika upptäckt. Den återställdes senare i version 3.0, men i en annan form. Den tas nu dynamiskt emot från C&C i form av skalkod.

Google-konto

Ett annat av Dolphins kommandon ändrar inställningarna för det för närvarande inloggade Google-kontot, vilket sänker dess säkerhet i förhållande till standardinställningarna. Den stjäl den befintliga cookien för det inloggade kontot från webbläsaren och skapar förfrågningar som ändrar inställningarna.

För det första möjliggör den åtkomst till Gmail via IMAP-protokollet genom att skicka en HTTP POST-begäran till:

  • https://mail.google.com/mail/u/0/?ik=&at=&view=up&act=prefs

Sedan möjliggör den "mindre säker appåtkomst" genom att skicka en odokumenterad RPC-begäran via en HTTP POST till:

  • https://myaccount.google.com/_/AccountSettingsUi/data/batchexecute

Dessa ändringar hänvisas till som "thunder access" i bakdörren, troligen en referens till Thunderbirds e-postklient. Att komma åt sina offers inkorgar med en tredjepartsklient via IMAP hjälper förmodligen ScarCruft-operatörer att behålla tillgången till offrens e-postmeddelanden efter att ha stulit autentiseringsuppgifter, vilket kanske inte räcker på egen hand, på grund av Googles upptäckt av misstänkta inloggningsförsök.

Denna funktion hittades i version 1.9 och 2.0 av bakdörren; det finns inte i version 2.2 eller 3.0.

Datastaging

Dolphin exfiltrerar data till Google Drive-lagring och placerar data i krypterade ZIP-arkiv före uppladdning. Bakdörren upprätthåller också en lista över filer i form av MD5-hashar, för att undvika att ladda upp samma fil flera gånger. Denna lista kan återställas via ett dedikerat kommando.

konfiguration

Bakdörren innehåller en initial standardkonfiguration som kvarstår vid första körningen och laddas vid efterföljande körningar. Det lagras i filen %ProgramData%.infDär väljs slumpmässigt från befintliga filnamn som matchar %windir%inf*.inf. Innehållet krypteras med AES CBC med slumpmässiga 16-byte nycklar och IV:er, som lagras i filens början. Konfigurationen använder JSON-format, med hashliknande nycklar. Ett exempel på en dekrypterad konfiguration visas i figur 3.

Vem simmar i sydkoreanska vatten? Möt ScarCrufts Dolphin PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Figur 3. Dolphin-bakdörrskonfiguration

Konfigurationen kan ändras genom kommandon. Den innehåller bland annat följande:

  • Krypteringsnycklar
  • Autentiseringsuppgifter för Google Drive API-åtkomst
  • Fönstertitlar till tangentlogg
  • Lista över filtillägg att exfiltrera

Delfinernas evolution

Sedan den första upptäckten av Dolphin i april 2021 har vi observerat flera versioner av bakdörren, där hotaktörerna förbättrade bakdörrens kapacitet och gjorde försök att undvika upptäckt. Figur 4 sammanfattar de visade versionerna; en mer detaljerad beskrivning av versionsändringarna finns nedan.

Vem simmar i sydkoreanska vatten? Möt ScarCrufts Dolphin PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Figur 4. Tidslinje för delfinutveckling

November 2021 – version 2.0

Version 2.0 införde följande ändringar i versionen som hittades i april 2021:

  • Dynamisk upplösning av misstänkta API:er istället för statiska importer (till exempel GetAsyncKeyState) Lagt till
  • Shellcode-kapaciteten är klar och förbättrad
    • Behållen skalkod lagrad i filer istället för i registret
    • Behållen skalkod laddas och körs vid start av Dolphin (tidigare saknas)
  • Filexfiltreringsförmåga för bärbar enhet är klar och förbättrad
    • Exfiltrering av förlängningar tillagda
    • Igenkänning av internminne och SD-kort (från enhets-ID) har lagts till
    • Kommando för att hämta filer från bärbara enheter effektivt en NOP
  • Detektering av enhet/enhet och filexfiltrering förbättrades
    • Dolphin skapar nu ovillkorligen kataloglistor och exfiltrerar filer i förlängning var 30:e minut för alla enheter och enheter (fasta enheter, flyttbara enheter, bärbara enheter). Tidigare var det bara för flyttbara enheter; Fasta enheter var inaktiverade som standard och koden som användes för att komma åt bärbara enheter var buggig och trasig.

December 2021 – version 2.2

Ändringar som infördes i version 2.2 fokuserade främst på upptäcktsflykt. Möjligheten att stjäla autentiseringsuppgifter och kommandon relaterade till den – kommandona för att stjäla autentiseringsuppgifter och Google-konton – togs bort. De flesta strängar i denna version är base64-kodade.

Januari 2022 – version 3.0

I version 3.0 omorganiserades koden och klasserna bytte namn, med funktionerna oförändrade. De base64-kodade strängarna var klartext igen i den här versionen. Vi har observerat följande ytterligare ändringar:

  • Kommando för att stjäla referenser som återställts i en annan form; den kör nu skalkod från C&C
  • Kommando för att få filer från bärbara enheter helt borttagna
  • Kommandot för att hämta filer från enheter cachas/lagras nu i konfigurationen tills det är klart. Om det avbryts (till exempel genom att datorn stängs av) görs det vid nästa körning. Detta är också användbart i fallet med flyttbara enheter som kanske inte är anslutna när kommandot utfärdas.
  • Internetanslutningskontroll har lagts till (https://www.microsoft.com); ingen skadlig kod körs om den är offline

Skillnaderna mellan version 2.2 och 3.0, särskilt skillnaden i strängkodning, tyder på möjligheten att versionerna utvecklades parallellt av olika personer.

Slutsats

Dolphin är ytterligare ett tillägg till ScarCrufts omfattande arsenal av bakdörrar som missbrukar molnlagringstjänster. Efter att ha distribuerats på utvalda mål söker den igenom enheterna i komprometterade system efter intressanta filer och exfiltrerar dem till Google Drive. En ovanlig förmåga som finns i tidigare versioner av bakdörren är möjligheten att ändra inställningarna för offrens Google- och Gmail-konton för att sänka deras säkerhet, förmodligen för att bibehålla kontoåtkomst för hotaktörerna. Under vår analys av flera versioner av Dolphin-bakdörren såg vi fortsatt utveckling och försök att undvika upptäckt.

För eventuella frågor om vår forskning publicerad på WeLiveSecurity, vänligen kontakta oss på hotintel@eset.com.

ESET Research erbjuder även privata APT-underrättelserapporter och dataflöden. För eventuella frågor om denna tjänst, besök ESET Threat Intelligence sida.

IOCS

SHA-1 Filnamn ESET-detekteringsnamn Beskrivning
F9F6C0184CEE9C1E4E15C2A73E56D7B927EA685B N / A Win64/Agent.MS Dolphin bakdörr version 1.9 (x64)
5B70453AB58824A65ED0B6175C903AA022A87D6A N / A Win32/Spy.Agent.QET Dolphin bakdörr version 2.0 (x86)
21CA0287EC5EAEE8FB2F5D0542E378267D6CA0A6 N / A Win64/Agent.MS Dolphin bakdörr version 2.0 (x64)
D9A369E328EA4F1B8304B6E11B50275F798E9D6B N / A Win32/Agent.UYO Dolphin bakdörr version 3.0 (x86)
2C6CC71B7E7E4B28C2C176B504BC5BDB687C4D41 N / A Win64/Agent.MS Dolphin bakdörr version 3.0 (x64)

MITER ATT & CK tekniker

Detta bord byggdes med hjälp av version 12 av MITER ATT & CK -ramverket.

Taktik ID Namn Beskrivning
Initial åtkomst T1189 Drive-by-kompromiss ScarCruft använder vattenhålsattacker för att kompromissa med offer.
Utförande T1059.006 Kommando- och skripttolk: Python Dolphin loader a använder Python-skript.
T1059.007 Kommando- och skripttolk: JavaScript ScarCruft använde skadlig JavaScript för en vattenhålsattack.
T1203 Exploatering för klientexekvering ScarCruft utnyttjar CVE-2020-1380 för att kompromissa med offer.
T1106 Native API Dolphin använder Windows API-funktioner för att exekvera filer och injicera processer.
Persistens T1053.005 Schemalagd uppgift/jobb: Schemalagd uppgift Dolphin använder en tillfällig schemalagd uppgift för att starta efter installationen.
T1547.001 Starta eller logga in Autostartexekvering: Registry Run Keys / Startup Folder Dolphin använder Run-nycklar för beständighet av sin lastare.
Försvarsflykt T1055.002 Processinjektion: Bärbar körbar injektion Dolphin kan injicera i andra processer.
T1027 Fördubblade filer eller information Dolphin har krypterade komponenter.
Legitimationsåtkomst T1555.003 Inloggningsuppgifter från lösenordsbutiker: Inloggningsuppgifter från webbläsare Dolphin kan hämta sparade lösenord från webbläsare.
T1539 Stjäla webbsessionskaka Dolphin kan hämta cookies från webbläsare.
Discovery T1010 Application Window Discovery Dolphin fångar titeln på det aktiva fönstret.
T1083 Arkiv- och katalogupptäckt Dolphin kan få fil- och kataloglistor.
T1518.001 Software Discovery: Security Software Discovery Dolphin får en lista över installerad säkerhetsprogramvara.
T1082 Systeminformation upptäckt Dolphin får olika systeminformation inklusive OS-version, datornamn och RAM-storlek.
T1016 System Network Configuration Discovery Dolphin hämtar enhetens lokala och externa IP-adress.
T1016.001 System Network Configuration Discovery: Internet Connection Discovery Dolphin kontrollerar internetanslutningen.
T1033 Systemägare/användarupptäckt Dolphin får offrets användarnamn.
T1124 Systemtid upptäckt Dolphin får offrets aktuella tid.
Samling T1056.001 Input Capture: Keylogging Dolphin kan logga tangenttryckningar.
T1560.002 Arkivera insamlade data: Arkivera via bibliotek Med hjälp av Zipper-biblioteket komprimerar och krypterar Dolphin insamlad data innan exfiltrering.
T1119 Automatiserad samling Dolphin samlar med jämna mellanrum in filer med vissa tillägg från enheter.
T1005 Data från lokalt system Dolphin kan samla in filer från lokala enheter.
T1025 Data från flyttbara media Dolphin kan samla in filer från flyttbara enheter.
T1074.001 Data iscensatt: Local Data Staging Dolphin stages samlade in data i en katalog innan exfiltrering.
T1113 Screen Capture Dolphin kan ta skärmdumpar.
Command and Control T1071.001 Application Layer Protocol: webbprotokoll Dolphin använder HTTPS för att kommunicera med Google Drive.
T1102.002 Webbtjänst: Dubbelriktad kommunikation Dolphin kommunicerar med Google Drive för att ladda ner kommandon och exfiltrera data.
exfiltration T1020 Automatiserad exfiltrering Dolphin exfiltrerar med jämna mellanrum insamlad data.
T1567.002 Exfiltration Over Web Service: Exfiltration till molnlagring Dolphin exfiltrerar data till Google Drive.

Vem simmar i sydkoreanska vatten? Möt ScarCrufts Dolphin PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Tidsstämpel:

Mer från Vi lever säkerhet