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.
- 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.
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.
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.
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.
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.
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. |
- blockchain
- coingenius
- cryptocurrency plånböcker
- kryptoväxling
- Cybersäkerhet
- nätbrottslingar
- Cybersäkerhet
- säkerhetstjänsten
- digitala plånböcker
- ESET Research
- brandvägg
- kaspersky
- malware
- Mcafee
- NexBLOC
- plato
- plato ai
- Platon Data Intelligence
- Platon spel
- PlatonData
- platogaming
- VPN
- Vi lever säkerhet
- webbplats säkerhet
- zephyrnet