Stealth Falcon jagar över Mellanösterns himmel med Deadglyph

Stealth Falcon jagar över Mellanösterns himmel med Deadglyph

Källnod: 2899203

I flera år har Mellanöstern behållit sitt rykte som en bördig grund för avancerade ihållande hot (APT). Mitt under rutinmässig övervakning av misstänkta aktiviteter på system hos högprofilerade kunder, några baserade i denna region, snubblade ESET Research över en mycket sofistikerad och okänd bakdörr som vi har döpt till Deadglyph. Vi härledde namnet från artefakter som hittades i bakdörren (som t.ex 0xDÖDB001, visas också i REF _Ref111452440 h Bord 1
), tillsammans med närvaron av en homoglyf ge sig på. Så vitt vi vet är detta den första offentliga analysen av denna tidigare odokumenterade bakdörr, som används av en grupp som uppvisar en anmärkningsvärd grad av sofistikering och expertis. Baserat på inriktningen och ytterligare bevis tillskriver vi Stealth Falcon APT-gruppen med högt självförtroende Deadglyph.

Deadglyphs arkitektur är ovanlig som den består av samverkande komponenter – den ena en inbyggd x64-binär, den andra en .NET-sammansättning. Denna kombination är ovanlig eftersom skadlig programvara vanligtvis bara använder ett programmeringsspråk för sina komponenter. Denna skillnad kan indikera separat utveckling av dessa två komponenter samtidigt som de drar fördel av unika egenskaper hos de distinkta programmeringsspråken de använder. Olika språk kan också utnyttjas för att hindra analys, eftersom blandad kod är svårare att navigera och felsöka.

De traditionella bakdörrskommandona implementeras inte i bakdörrsbinären; istället tas de dynamiskt emot av den från kommando- och kontrollservern (C&C) i form av ytterligare moduler. Denna bakdörr har också ett antal funktioner för att undvika att bli upptäckt.

I det här blogginlägget tar vi en närmare titt på Deadglyph och ger en teknisk analys av denna bakdörr, dess syfte och några av de ytterligare komponenterna vi fick. Vi presenterar också våra resultat om Deadglyph på LABScon 2023 konferens.

Huvudpunkterna i blogginlägget:

  • ESET Research upptäckte en sofistikerad bakdörr med ovanlig arkitektur som vi har döpt till Deadglyph.
  • Huvudkomponenterna krypteras med en maskinspecifik nyckel.
  • Traditionella bakdörrskommandon implementeras via ytterligare moduler som tas emot från dess C&C-server.
  • Vi fick tre av många moduler – processskapare, filläsare och infosamlare.
  • Vi tillskriver Deadglyph till gruppen Stealth Falcon.
  • Dessutom hittade vi en relaterad shellcode-nedladdare; vi antar att det potentiellt kan användas för installation av Deadglyph.

Offret för den analyserade infiltrationen är en statlig enhet i Mellanöstern som äventyrades i spionagesyfte. Ett relaterat prov som hittades på VirusTotal laddades också upp till filskanningsplattformen från denna region, särskilt från Qatar. Den riktade regionen är avbildad på kartan i REF _Ref143614671 h Figur 1
.

Deadglyph Figure_01
Figur 1. Victimology of Deadglyph; det relaterade provet laddades upp till VirusTotal från Qatar (i mörkare färg)

Stealth Falcon (även känd som Project Raven eller FruityArmor) är en hotgrupp kopplad till Förenade Arabemiraten enligt MITER. Stealth Falcon har varit verksam sedan 2012 och är känd för att rikta sig mot politiska aktivister, journalister och dissidenter i Mellanöstern. Den upptäcktes och beskrevs först av medborgare Lab, som publicerade en analys av en kampanj med spionprogramsattacker 2016.

I januari 2019 publicerade Reuters en undersökande rapport på Project Raven, ett initiativ som påstås anställa före detta NSA-agenter och syfta till samma typer av mål som Stealth Falcon. Baserat på dessa två rapporter som hänvisar till samma mål och attacker, Amnesty International har kommit fram till (visas i REF _Ref144978712 h Figur 2
) att Stealth Falcon och Project Raven faktiskt är samma grupp.

Deadglyph Figur 2
Figur 2. Claudio Guarnieri har kopplat Stealth Falcon med Project Raven

I september 2019 har vi publicerad forskning på en bakdörr, tillskriven Stealth Falcon, som använde en ovanlig teknik, Background Intelligent Transfer Service, för C&C-kommunikation. Vi avslöjar nu resultatet av vår djupgående analys av vad som förmodligen är det senaste tillskottet till Stealth Falcons spionageverktyg.

Deadglyph bakdörr

Deadglyphs lastkedja består av flera komponenter, som illustreras i REF _Ref144978760 h Figur 3
. Den initiala komponenten är en registry shellcode loader, som laddar shellcode från registret. Denna extraherade skalkod laddar i sin tur den ursprungliga x64-delen av bakdörren – Executor. Executorn laddar därefter .NET-delen av bakdörren – Orchestrator. Noterbart är att den enda komponenten på systemets disk som en fil är den initiala komponenten, som är i form av ett Dynamic Link Library (DLL). De återstående komponenterna krypteras och lagras i ett binärt registervärde.

Deadglyph Figure_02
Figur 3. Deadglyph laddningskedjans komponenter

Även om den exakta metoden för den initiala kompromissvektorn ännu inte är fastställd, är vår misstanke att en installationskomponent är inblandad i att distribuera ytterligare komponenter och etablera beständighet i systemet.

I resten av det här avsnittet analyserar vi varje komponent.

Registry shellcode loader

Deadglyphs initiala komponent är en liten DLL med en enda export, som heter 1. Denna komponent används fortfarande Windows Management Instrumentation (WMI) händelseprenumeration och fungerar som en registry shellcode loader. Det exekveras via kommandoraden rundll32 C:WINDOWSSystem32pbrtl.dll,#1.

Registry shellcode loader börjar sin verksamhet genom att dekryptera sökvägen till den krypterade skalkoden som lagras i Windows-registret, med hjälp av RC4. Vi misstänker att vägen är unik för varje offer; i fallet som analyseras här var registersökvägen:

SoftwareClassesCLSID{5abc7f42-1112-5099-b082-ce8d65ba0c47}cAbRGHLg

Rotregisternyckeln är antingen hklm or HKCU, beroende på om den aktuella processen körs med förhöjda privilegier eller inte. Samma logik finns i ytterligare komponenter.

Efter detta härleder laddaren en maskinspecifik RC4-nyckel med hjälp av systemets UUID som hämtas från rå SMBIOS firmware tabell. Med den här nyckeln laddar den, dekrypterar och exekverar sedan skalkoden. Det är viktigt att betona att denna nyckelhärledningsmetod säkerställer att korrekt dekryptering inte kommer att ske om laddaren körs på en annan dator.

Intressant nog kan laddaren också konfigureras med en flagga i dess .data avsnitt för att använda en hårdkodad nyckel för att dekryptera skalkoden, istället för den maskinspecifika.

Vi såg en homoglyfattack som efterliknade Microsoft Corporation i INFORMATION OM VERSIONEN resurs för denna och andra PE-komponenter. Denna metod använder distinkta Unicode-tecken som ser ut att vara visuellt lika, men i det här fallet inte identiska, med originaltecken, särskilt grekisk versal San (U+03FA, Ϻ) och kyrillisk liten bokstav O (U+043E, о) i Ϻicrоsоft Corpоratiоn.

Registrets skalkod

Består av två delar, registrets skalkod består av en dekrypteringsrutin och en krypterad kropp. Först roterar dekrypteringsrutinen varje byte i den krypterade kroppen åt vänster med en (ROL 0x01). Därefter överförs kontrollen till denna dekrypterade kropp. Den dekrypterade kroppen består av en PE-laddare och en PE-fil, den senare är Executor, som representerar den ursprungliga delen av bakdörren. Den här laddaren ansvarar för att analysera och ladda den associerade PE-filen.

Testamentsexekutor

Executor är den ursprungliga x64-delen av Deadglyph-bakdörren, som gör följande:

  • laddar dess konfiguration,
  • initierar .NET runtime,
  • laddar den inbäddade .NET-delen av bakdörren (orkesteraren), och
  • fungerar som bibliotek åt orkesteraren.

Först två standardkonfigurationer inbäddade i .data sektionen är AES-dekrypterad. Konfigurationerna omfattar olika parametrar, inklusive krypteringsnycklar, säkerhets- och flyktinställningar och ingångspunkten för den efterföljande komponenten.

Under den initiala körningen lagras dessa två standardkonfigurationer i Windows-registret, varifrån de laddas vid efterföljande körningar, vilket möjliggör implementering av uppdateringar. Registersökvägen för varje konfiguration genereras med följande format:

{HKCU|HKLM}SoftwareClassesCLSID{ }(Standard)

är en genererad GUID, som är unik för varje offer.

Efter detta initieras .NET-körtiden, sedan dekrypterar Executor RC4 .NET-delen av bakdörren som kallas Orchestrator. The Orchestrator är belägen inom .rsrc sektion av exekutören. Konfigurationen anger Orchestrators exekveringsmetod som en ingångspunkt. Dessutom tillhandahålls en distinkt struktur för att underlätta åtkomsten av exekutorens funktioner för Orchestrator.

Efter att ha lanserat Orchestrator agerar Executor som ett stödbibliotek för Orchestrator. Executor innehåller många intressanta funktioner; vi beskriver några av dem i följande avsnitt, i samband med deras användning av Orchestrator och ytterligare laddade moduler.

Orchestrator

Orchestrator är skriven i .NET och är huvudkomponenten i Deadglyph-bakdörren. Denna komponents primära roll involverar att upprätta kommunikation med C&C-servern och utföra kommandon, ofta underlättat genom den förmedlande rollen som Executor. I motsats till de föregående komponenterna är Orchestrator fördunklad och använder .NET Reactor. Internt kallas bakdörren medlet, vilket är ett vanligt namn för klientdelen i olika ramverk efter exploatering.

Initieringen

Orchestrator laddar först sin konfiguration och två inbäddade moduler, var och en åtföljd av sin egen uppsättning konfigurationer, från resurser. Dessa resurser är Töm luft komprimerade och AES krypterad. De refereras av ett ID som är SHA-1 hashaat till ett resursnamn. En översikt över dessa resurser finns i REF _Ref111452440 h Bord 1
.

Tabell 1. Orchestrator-resurser

 

Resursnamn

ID (decimal)

ID (hex)

Beskrivning

43ed9a3ad74ed7ab74c345a876b6be19039d4c8c

2570286865

0x99337711

Orchestrator konfiguration.

3a215912708eab6f56af953d748fbfc38e3bb468

3740250113

0xDEEFB001

Nätverksmodul.

42fb165bc9cf614996027a9fcb261d65fd513527

3740250369

0xDEEFB101

Nätverksmodulkonfiguration.

e204cdcf96d9f94f9c19dbe385e635d00caaf49d

3735924737

0xDEADB001

Timermodul.

abd2db754795272c21407efd5080c8a705a7d151

3735924993

0xDEADB101

Timermodulkonfiguration.

Konfigurationen av Orchestrator och inbäddade moduler lagras i XML-format. Ett exempel på en Orchestrator-konfiguration visas i REF _Ref111452611 h
Figur 4
.

Deadglyph Figure_04
Figur 4. Orchestrator-konfiguration

Beskrivningen av Orchestrator-konfigurationsposter visas i REF _Ref111452782 h Bord 2
.

Tabell 2. Orchestrator-konfigurationsposter

Nyckel

Beskrivning

k


AES-nyckel som används för beständiga modulkonfigurationer.

a


Namn på nätverksmodulinitieringsmetod.

b


Okänd nätverksmodulrelaterad flagga.

c


Namn på timermodulens initialiseringsmetod.

d


Flagga som möjliggör användning av maskinspecifik AES-nyckel (system-UUID) för resurser.

p


Nätverksmodulens resurs-ID.

t


Timermodulens resurs-ID.

Efter att resurskomponenterna har laddats skapas flera trådar för att utföra distinkta uppgifter. En av dessa trådar är ansvarig för att utföra miljökontroller, en funktion implementerad inom Executor. En annan tråd ägnas åt att upprätta periodisk kommunikation med C&C-servern, vilket möjliggör hämtning av kommandon. Slutligen används en uppsättning av tre trådar i syfte att exekvera mottagna kommandon och därefter sända eventuella genererade utdata tillbaka till C&C-servern.

Tråden för miljökontroll övervakar pågående processer för att identifiera oönskade. Den här tråden fungerar med två distinkta listor med processnamn. Om en process på den första listan upptäcks, pausas C&C-kommunikation och kommandoexekvering tills den oönskade processen inte längre existerar. Om det finns en matchning för någon process på den andra listan, avslutas bakdörren omedelbart och avinstallerar sig själv.

Ingen av listan konfigurerades i den analyserade instansen, så vi vet inte vilka processer som vanligtvis kan kontrolleras för; vi tror att det förmodligen är avsett att undvika analysverktyg som kan upptäcka misstänkt aktivitet och leda till upptäckt av bakdörren.

Kommunikation

Orchestratorn använder två inbyggda moduler för C&C-kommunikation – Timer och Network. Liksom Orchestrator är dessa moduler obfuscerade med .NET Reactor. Konfigurationen för båda modulerna tillhandahålls av Orchestrator. Inom Orchestrator ingår en förinställd konfiguration för modulerna; Alternativt kan Orchestrator också ladda en uppdaterad konfigurationsversion från registret:

{HKCU|HKLM}SoftwareClassesCLSID{ }

Bakdörren innehåller en intressant säkerhetsåtgärd relaterad till kommunikation. Om bakdörren inte kan upprätta kommunikation med C&C-servern under en tid som överstiger ett fördefinierat tröskelvärde, konfigurerat inom exekutorn, utlöses en självavinstallationsmekanism. Denna tidsgräns anges i timmar och sattes till en timme i det undersökta fallet.

Detta tillvägagångssätt tjänar ett dubbelt syfte. Å ena sidan förhindrar det generering av redundanta nätverksbegäranden mot en otillgänglig server. Å andra sidan minskar det chanserna för efterföljande upptäckt om operatörerna tappar kontrollen över bakdörren.

Timermodul

Denna lilla modul utför den angivna återuppringningen med ett konfigurerbart intervall. Den används av Orchestrator i kombination med nätverksmodulen för att regelbundet kommunicera med C&C-servern. För att förhindra skapandet av detekterbara mönster i nätverksloggar, är exekveringsintervallet föremål för randomisering, baserat på en procentandel som anges i konfigurationen. I det analyserade fallet sattes intervallet till fem minuter, med en ±20 % variation införd för slumpmässighet.

En annan metod för att undvika detekterbara nätverksmönster i periodisk kommunikation kan hittas i generering av förfrågningar som skickas till C&C-servern. Denna mekanism, implementerad i exekutorn, inbegriper inkluderingen av utfyllnad av varierande längd, bestående av slumpmässiga bytes, inom förfrågningarna, vilket resulterar i förfrågningar av olika storlekar.

Nätverksmodul

Nätverksmodulen implementerar kommunikation med de C&C-servrar som anges i dess konfiguration. Den kan skicka data till en C&C-server med hjälp av HTTP(S) POST-förfrågningar. Speciellt erbjuder den flera mekanismer för att få information om proxykonfiguration. Den här funktionen föreslår ett potentiellt fokus på miljöer där direkt internetåtkomst inte är tillgänglig.

Ett exempel på en dekrypterad (och förskönad) konfiguration visas i REF _Ref144978805 h Figur 5
.

Deadglyph Figure_06
Figur 5. Nätverksmodulens konfiguration

Konfigurationsposter innehåller information om nätverkskommunikation – C&C-URL:er, HTTP User-Agent och eventuellt en proxykonfiguration.

Vid kommunikation med C&C-servern används ett anpassat binärt protokoll med krypterat innehåll under HTTPS.

Kommandon

Orchestratorn tar emot kommandon från C&C-servern i form av uppgifter, som köas för exekvering. Det finns tre typer av uppgifter som behandlas:

  • Orkesteraruppgifter,
  • Exekutoruppgifter, och
  • Ladda upp uppgifter.

De två första typerna tas emot från C&C-servern och den tredje skapas internt för att ladda upp utdata av kommandon och fel.

Orkesteraruppgifter

Orchestrator-uppgifter erbjuder möjligheten att hantera konfigurationen av nätverks- och timermodulerna, och även att avbryta väntande uppgifter. Översikten över Orchestrator-uppgifter visas i REF _Ref111101783 h Bord 3
.

Tabell 3. Orkesteraruppgifter

Typ

Beskrivning

0x80


Ställ in konfiguration av nätverk och timermoduler.

0x81


Få konfiguration av nätverk och timermoduler.

0x82


Avbryt uppgift.

0x83


Avbryt alla uppgifter.

Utföraruppgifter

Exekutoruppgifter erbjuder möjligheten att hantera bakdörren och exekvera ytterligare moduler. Det är anmärkningsvärt att den traditionella bakdörrsfunktionen inte är inneboende närvarande i själva binären. Istället erhålls dessa funktioner från C&C-servern i form av PE-filer eller skalkod. Den fulla omfattningen av bakdörrens potential förblir okänd utan dessa ytterligare moduler, som effektivt låser upp dess verkliga möjligheter. En översikt över moduluppgifter visas i REF _Ref117677179 h Bord 4
, som innehåller detaljer om de få identifierade modulerna. Liknande, REF _Ref117677188 h Bord 5
ger en översikt över ledningsuppgifter kopplade till Executor.

Tabell 4. Utföraruppgifter – moduler

Typ

Beskrivning

0x??–0x63


Okänd

0x64


Filläsare

0x65


Okänd

0x66


Okänd

0x67


Okänd

0x68


Okänd

0x69


Processskapare

0x6A


Okänd

0x6B


Okänd

0x6C


Infosamlare

0x6D


Okänd

0x6E


Okänd

Tabell 5. Utföraruppgifter – ledning

Typ

Beskrivning

0x6F-0x76

Ej implementerad

0x77

Ställ in Executor-konfiguration

0x78

Hämta Executor-konfiguration

0x79-0x7C

Ej implementerad

0x7D

Uppdatering

0x7E

Avsluta

0x7F

Avinstallera

Kommandot som ställer in Executor-konfigurationen kan ändra:

  • oönskade processlistor,
  • tidsgräns för C&C-kommunikationsfel, och
  • tidsfrist för genomförande av ytterligare moduler.
Moduler

Vi lyckades erhålla tre unika moduler från C&C-servern, som var och en motsvarar en annan exekutoruppgiftstyp, som visas i REF _Ref117677179 h Bord 4 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200650066003100310037003600370037003100370039000000
. Baserat på tillgänglig information uppskattar vi att det finns nio till fjorton moduler totalt. Eftersom modulerna i själva verket är bakdörrskommandon har de en grundläggande operation att utföra och sedan valfritt returnera sin utdata. Modulerna vi fick är DLL-filer med en namnlös export (ordinal 1), där de löser nödvändiga API-funktioner och anropar huvudfunktionen.

När de körs förses modulerna med en API-upplösningsfunktion, som kan lösa Windows API:er och anpassade Executor API:er. Windows API:er refereras av en DWORD-hash, beräknad från namnet på API:et och dess DLL. Små hashvärden (<41) behandlas speciellt, med hänvisning till Executor API-funktionen. Executor API omfattar totalt 39 funktioner som är tillgängliga för modulerna. Dessa funktioner hänför sig till en mängd olika operationer, inklusive:

  • filoperationer,
  • kryptering och hash,
  • kompression,
  • PE laddning,
  • komma åt Token Impersonation, och
  • verktyg.

I resten av det här avsnittet beskriver vi de moduler som vi fick.

Processskapare

Modulerna 0x69 exekverar den angivna kommandoraden som en ny process och ger den resulterande utdata tillbaka till Orchestrator. Processen kan skapas under en annan användare och dess utförandetid kan begränsas. Särskilt en ovanlig Job API används i denna moduls funktionalitet.

Den här modulen serverades med kommandoraden cmd.exe /c uppgiftslista /v.

Vi antar att det fungerar som ett tomgångskommando som utfärdas automatiskt, medan operatörerna väntar på att något intressant ska hända på den komprometterade datorn.

Infosamlare

Modulerna 0x6C samlar in omfattande information om datorn via WMI-frågor och skickar tillbaka den till Orchestrator. Information om följande samlas in:

  • operativ system,
  • nätverkskort,
  • installerad programvara,
  • enheter,
  • tjänster,
  • förare,
  • processer,
  • användare,
  • miljövariabler och
  • säkerhetsprogramvara.
Filläsare

Modulerna 0x64 läser den angivna filen och skickar innehållet tillbaka till Orchestrator. Alternativt kan den radera filen efter att ha läst den.

Vi såg den här modulen användas för att hämta offrets Outlook-datafil

c:Användare AppDataLocalMicrosoftOutlookoutlook.ost.

Kedja med shellcode-nedladdare

I processen med att undersöka Deadglyph stötte vi på en tvivelaktig CPL-fil signerad med ett utgånget certifikat och ingen motsignatur med en tidsstämpel, som hade laddats upp till VirusTotal från Qatar. Vid närmare granskning blev det uppenbart att denna CPL-fil fungerade som en flerstegs shellcode-nedladdare, och delade vissa kodlikheter med Deadglyph. Lastkedjan illustreras i REF _Ref143693067 h Figur 6
.

Deadglyph Figure_03
Figur 6. Laddningskedja för Shellcode-nedladdning

I sin ursprungliga form, som fungerar som det första steget, förväntar sig denna fil att ha en . Cpl förlängning (kontrollpanelsfil) och är avsedd att köras via en dubbelklicksåtgärd. Vid exekvering på detta sätt genomgår den inbäddade skalkoden XOR-dekryptering, och de pågående processerna kontrolleras för att identifiera en lämplig värdprocess för efterföljande injektion.

If avp.exe (en Kaspersky-slutpunktssäkerhetsprocess) körs, %windir%system32UserAccountBroker.exe är använd. Annars används standardwebbläsaren. Sedan skapar den värdprocessen i ett avstängt tillstånd, injicerar skalkoden genom att kapa dess huvudtråd och återupptar tråden.

Det andra steget, skalkoden, består av två delar. Den första delen av skalkoden löser API-hashar, med samma unika hashberäkningsteknik som används i Deadglyph, och dekrypterar strängar med processnamn. Den startar en självraderingstråd som har till uppgift att skriva över och därefter radera filen i första steget. Efter detta fortsätter skalkoden för att inspektera de för närvarande aktiva processerna, med inriktning på en säkerhetslösning.

Om någon av de angivna processerna upptäcks skapar skalkoden en sliper-tråd med lägst prioritet (THREAD_PRIORITY_IDLE) och låter den förbli aktiv i 60 sekunder innan den avslutas. Detta intervall är sannolikt implementerat som en försiktighetsåtgärd för att undvika vissa detekteringsmekanismer som används av säkerhetslösningar. Slutligen fortsätter skalkoden med att anropa exekveringen av den andra delen av sin kod.

Den andra delen av skalkoden laddar en inbäddad PE-fil med steg tre och anropar dess export med ordningsnummer 1.

Det tredje steget, en DLL, fungerar som en .NET-lastare och innehåller nyttolasten i dess .rsrc sektion.

För att ladda nyttolasten initieras .NET-körtiden. Under .NET-initieringen utförs två spännande tekniker, till synes avsedda att undvika Windows Antimalware Scan Interface (AMSI) skanning:

  • .NET-lastaren kopplar tillfälligt till GetModuleHandleW importera i den laddade clr.dll, medan du ringer ICorRuntimeHost::Start. Kroken manipulerar returvärdet när GetModuleHandleW kallas med NULL. Den returnerar en pekare till en dummy PE utan sektioner.
  • Det lappar sedan subtilt till AmsiInitialisera importera namnsträngen i .rdata sektion av den laddade clr.dll till amsiiinitialisera.

Det fjärde steget är en .NET-sammansättning, obfuskerad med ConfuserEx, som fungerar som en skalkodsnedladdning. Först XOR-dekrypterar den sin konfiguration i XML-format från sina resurser. En förskönad version av den extraherade konfigurationen presenteras i REF _Ref143695453 h Figur 7
. Konfigurationsposterna innehåller detaljer relaterade till nätverkskommunikation och blockerade processer.

Deadglyph Figure_05
Figur 7. Shellcode-nedladdningskonfiguration

Innan du fortsätter kontrollerar den de pågående processerna mot en lista över blockerade processer från konfigurationen. Om en matchning upptäcks avbryts utförandet. Det är viktigt att notera att den här blockeringslistan inte konfigurerades i det analyserade fallet.

Därefter skickar den en HTTP GET-begäran till C&C-servern för att hämta viss skalkod, med hjälp av parametrar som anges i konfigurationen (URL, User-Agent och eventuellt proxy). Under vår undersökning kunde vi tyvärr inte hämta någon skalkod från C&C-servern. Icke desto mindre antar vi att innehållet som hämtas potentiellt kan fungera som installationsprogrammet för Deadglyph.

Efter detta exekveras den hämtade skalkoden i en nyskapad tråd. Efter att ha väntat tills skalkodstråden avslutas körningen, tar nedladdningsprogrammet bort alla filer som finns i katalogen %WINDIR%ServiceProfilesLocalServiceAppDataLocalTempTfsStoreTfs_DAV.

Slutligen gör den ett försök att ta bort sig själv efter ett 20-sekundersintervall, med hjälp av det efterföljande kommandot, innan den avslutar sin operation och avslutar:

cmd.exe val /CY /N /DY /T 20 & Del /f /q

Denna självradering är inte meningsfull i den här kedjan. Detta beror på det faktum att shellcode-nedladdaren exekveras i en webbläsare eller systemprocess efter att ha injicerats, snarare än att fungera som en oberoende körbar fil. Dessutom var den ursprungliga filen redan raderad i det andra steget. Denna observation antyder att nedladdningsprogrammet för shellcode kanske inte är en exklusiv nyttolast i denna kedja och kan även användas separat i andra operationer.

Slutsats

Vi har upptäckt och analyserat en sofistikerad bakdörr som används av Stealth Falcon-gruppen som vi har döpt till Deadglyph. Den har en ovanlig arkitektur och dess bakdörrsfunktioner tillhandahålls av dess C&C i form av ytterligare moduler. Vi lyckades skaffa tre av dessa moduler och avslöjade en bråkdel av Deadglyphs fulla kapacitet.

Noterbart, Deadglyph har en rad motdetekteringsmekanismer, inklusive kontinuerlig övervakning av systemprocesser och implementering av randomiserade nätverksmönster. Dessutom kan bakdörren avinstallera sig själv för att minimera sannolikheten för att den upptäcks i vissa fall.

Dessutom ledde vår undersökning oss till upptäckten av en övertygande flerstegs shellcode-nedladdningskedja på VirusTotal. Vi misstänker att den här nedladdningskedjan troligen utnyttjas i installationsprocessen av Deadglyph.

För eventuella frågor om vår forskning publicerad på WeLiveSecurity, vänligen kontakta oss på hotintel@eset.com.
ESET Research erbjuder privata APT-underrättelserapporter och dataflöden. För eventuella frågor om denna tjänst, besök ESET Threat Intelligence sida.

IOCS

Filer

SHA-1

Filnamn

Detektering

Beskrivning

C40F1F46D230A85F702DAA38CFA18D60481EA6C2

pbrtl.dll

Win64/Deadglyph.A

Registry Shellcode Loader.

740D308565E215EB9B235CC5B720142428F540DB

N / A

Win64/Deadglyph.A

Deadglyph Backdoor – Executor.

1805568D8362A379AF09FD70D3406C6B654F189F

N / A

MSIL/Deadglyph.A

Deadglyph Backdoor – Orchestrator.

9CB373B2643C2B7F93862D2682A0D2150C7AEC7E

N / A

MSIL/Deadglyph.A

Orchestrator Network-modul.

F47CB40F6C2B303308D9D705F8CAD707B9C39FA5

N / A

MSIL/Deadglyph.A

Orchestrator Timer-modul.

3D4D9C9F2A5ACEFF9E45538F5EBE723ACAF83E32

N / A

Win64/Deadglyph.A.gen

Processskapare modul.

3D2ACCEA98DBDF95F0543B7C1E8A055020E74960

N / A

Win64/Deadglyph.A

Filläsarmodul.

4E3018E4FD27587BD1C566930AE24442769D16F0

N / A

Win64/Deadglyph.A

Infosamlarmodul.

7F728D490ED6EA64A7644049914A7F2A0E563969

N / A

Win64/Injector.MD

Första steget av shellcode-nedladdningskedjan.

Certifikat

Serienummer

00F0FB1390F5340CD2572451D95DB1D92D

Tumavtryck

DB3614DAF58D041F96A5B916281EA0DC97AA0C29

Ämne CN

RHM LIMITED

Ämne O

RHM LIMITED

Ämne L

St. Albans

Ämne S

Hertfordshire

Ämne C

GB

E-postadress

rhm@rhmlimited[.]co.uk

Giltig från

2021-03-16 00:00:00

Giltig till

2022-03-16 23:59:59

C&C-servrar

IP

Domän

Först sett

Kommentar

185.25.50[.]60

chessandlinkss[.]com

2021-08-25

Deadglyph C&C-server.

135.125.78[.]187

easymathpath[.]com

2021-09-11

Deadglyph C&C-server.

45.14.227[.]55

joinushealth[.]com

2022-05-29

Shellcode downloader C&C server.

MITER ATT & CK tekniker

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

Taktik

ID

Namn

Beskrivning

Resursutveckling

T1583.001

Skaffa infrastruktur: domäner

Stealth Falcon har registrerat domäner för C&C-servrar och för att få ett kodsigneringscertifikat.

T1583.003

Skaffa infrastruktur: Virtual Private Server

Stealth Falcon har använt VPS-värdleverantörer för C&C-servrar.

T1587.001

Utveckla förmågor: Malware

Stealth Falcon har utvecklat anpassad skadlig programvara, inklusive anpassade laddare och Deadglyph-bakdörren.

T1588.003

Skaffa funktioner: Certifikat för kodsignering

Stealth Falcon har fått ett kodsigneringscertifikat.

Utförande

T1047

Windows Management Instrumentation

Deadglyph använder WMI för att utföra sin laddningskedja.

T1059.003

Kommando- och skripttolk: Windows Command Shell

Shellcode downloader använder cmd.exe att radera sig själv.

T1106

Native API

En Deadglyph-modul använder CreateProcessW och CreateProcessAsUserW API-funktioner för exekvering.

T1204.002

Användarutförande: Skadlig fil

Shellcode-nedladdningskedjan kräver att användaren dubbelklickar och kör den.

Persistens

T1546.003

Händelseutlöst exekvering: Windows Management Instrumentation Event Prenumeration

Den initiala Deadglyph-laddaren fortsätter med WMI-händelseprenumeration.

Försvarsflykt

T1027

Fördubblade filer eller information

Deadglyph-komponenter är krypterade. Deadglyph Orchestrator och inbyggda moduler är obfuscerade med .NET Reactor.

Skalkodsnedladdaren är obfuskerad med ConfuserEx.

T1070.004

Indikatorborttagning: Filradering

Deadglyph kan avinstallera sig själv.

Shellcode-nedladdningskedjan tar bort sig själv och tar bort filer i WebDAV-cachen.

T1112

Ändra registret

Deadglyph lagrar dess konfiguration och krypterade nyttolast i registret.

T1134

Access Token Manipulation

Deadglyph kan imitera en annan användare.

T1140

Deobfuskera/avkoda filer eller information

Deadglyph dekrypterar krypterade strängar.

Shellcode-nedladdningskedjan dekrypterar dess komponenter och konfigurationer.

T1218.011

System binär proxyexekvering: Rundll32

Den initiala Deadglyph-laddaren exekveras med rundll32.exe.

T1480.001

Utförande skyddsräcken: Miljönyckel

Deadglyph krypteras med en maskinspecifik nyckel härledd från systemets UUID.

T1562.001

Försämra försvar: Inaktivera eller ändra verktyg

Shellcode-nedladdaren undviker AMSI-skanning genom att patcha clr.dll i minne .

T1620

Reflekterande kodladdning

Deadglyph laddar sina moduler reflekterande med en anpassad PE-lastare.

Discovery

T1007

Systemtjänst upptäckt

A Deadglyph-modulen upptäcker tjänster med hjälp av WMI-frågan VÄLJ * FRÅN Win32_Service.

T1012

Fråga registret

Shellcode-nedladdningskedjan frågar efter standardwebbläsaren i registret.

T1016

System Network Configuration Discovery

En Deadglyph-modul upptäcker nätverkskort med hjälp av WMI-frågor VÄLJ * FRÅN Win32_NetworkAdapter och VÄLJ * FRÅN Win32_NetworkAdapterConfiguration där InterfaceIndex=%d.

T1033

Systemägare/användarupptäckt

En Deadglyph-modul upptäcker användare med WMI-frågan VÄLJ * FRÅN Win32_UserAccount.

T1057

Processupptäckt

En Deadglyph-modul upptäcker processer med hjälp av WMI-fråga VÄLJ * FRÅN Win32_Process.

T1082

Systeminformation upptäckt

En Deadglyph-modul upptäcker systeminformation som OS-version, enheter, miljövariabler och drivrutiner med hjälp av WMI-frågor.

T1518

Software Discovery

En Deadglyph-modul upptäcker installerad programvara med hjälp av WMI-fråga VÄLJ * FRÅN Win32_Product.

T1518.001

Software Discovery: Security Software Discovery

En Deadglyph-modul upptäcker säkerhetsprogramvara med hjälp av WMI-frågor VÄLJ * FRÅN AntiVirusprodukt, VÄLJ * FRÅN AntiSpywareProduct och VÄLJ * FRÅN FirewallProduct.

Shellcode-nedladdningskedjan kontrollerar pågående processer för en säkerhetslösning.

Samling

T1005

Data från lokalt system

Deadglyph har en modul för att läsa filer.

Command and Control

T1071.001

Application Layer Protocol: webbprotokoll

Deadglyph och shellcode-nedladdaren kommunicerar med C&C-servern via HTTP-protokollet.

T1090

Proxy

Deadglyph och shellcode-nedladdaren kan använda HTTP-proxy för C&C-kommunikation.

T1573.001

Krypterad kanal: Symmetrisk kryptografi

Deadglyph använder AES för att kryptera C&C-kommunikation.

exfiltration

T1041

Exfiltrering över C2 -kanal

Deadglyph använder C&C-kanalen för exfiltrering.

Tidsstämpel:

Mer från Vi lever säkerhet