Stealth Falcon jaagt boven de hemel van het Midden-Oosten met Deadglyph

Stealth Falcon jaagt boven de hemel van het Midden-Oosten met Deadglyph

Bronknooppunt: 2899203

Het Midden-Oosten heeft jarenlang zijn reputatie behouden als een vruchtbare voedingsbodem voor geavanceerde persistente bedreigingen (APT’s). Te midden van het routinematig monitoren van verdachte activiteiten op de systemen van spraakmakende klanten, waarvan sommige in deze regio gevestigd zijn, stuitte ESET Research op een zeer geavanceerde en onbekende achterdeur die we Deadglyph hebben genoemd. We hebben de naam afgeleid van artefacten die in de achterdeur zijn gevonden (zoals 0xDEADB001, ook weergegeven in REF _Ref111452440 u tafel 1
), gekoppeld aan de aanwezigheid van een homoglyph aanval. Voor zover wij weten is dit de eerste publieke analyse van deze voorheen ongedocumenteerde achterdeur, gebruikt door een groep die blijk geeft van een opmerkelijke mate van verfijning en expertise. Op basis van de targeting en aanvullend bewijsmateriaal schrijven we Deadglyph met veel vertrouwen toe aan de Stealth Falcon APT-groep.

De architectuur van Deadglyph is ongebruikelijk omdat deze bestaat uit samenwerkende componenten – de ene is een native x64-binair bestand, de andere een .NET-assembly. Deze combinatie is ongebruikelijk omdat malware doorgaans slechts één programmeertaal gebruikt voor zijn componenten. Dit verschil zou kunnen duiden op een afzonderlijke ontwikkeling van deze twee componenten, terwijl ook wordt geprofiteerd van de unieke kenmerken van de verschillende programmeertalen die ze gebruiken. Er kan ook gebruik worden gemaakt van verschillende talen om de analyse te belemmeren, omdat gemengde code moeilijker te navigeren en te debuggen is.

De traditionele achterdeuropdrachten zijn niet geïmplementeerd in het binaire achterdeurbestand; in plaats daarvan worden ze dynamisch ontvangen van de command and control (C&C)-server in de vorm van extra modules. Deze achterdeur beschikt ook over een aantal mogelijkheden om detectie te voorkomen.

In deze blogpost gaan we dieper in op Deadglyph en geven we een technische analyse van deze achterdeur, het doel ervan en enkele van de aanvullende componenten die we hebben verkregen. We presenteren ook onze bevindingen over Deadglyph op de LABScon 2023 conferentie.

Kernpunten van de blogpost:

  • ESET Research ontdekte een verfijnde achterdeur met ongebruikelijke architectuur die we Deadglyph hebben genoemd.
  • De hoofdcomponenten worden gecodeerd met een machinespecifieke sleutel.
  • Traditionele backdoor-opdrachten worden geïmplementeerd via extra modules die worden ontvangen van de C&C-server.
  • We hebben drie van de vele modules verkregen: procesmaker, bestandslezer en informatieverzamelaar.
  • We schrijven Deadglyph toe aan de Stealth Falcon-groep.
  • Bovendien hebben we een gerelateerde shellcode-downloader gevonden; we veronderstellen dat het mogelijk kan worden gebruikt voor de installatie van Deadglyph.

Het slachtoffer van de geanalyseerde infiltratie is een overheidsinstantie in het Midden-Oosten die is gecompromitteerd voor spionagedoeleinden. Een gerelateerd voorbeeld gevonden op VirusTotal werd ook vanuit deze regio, met name vanuit Qatar, geüpload naar het bestandsscanplatform. Het beoogde gebied wordt weergegeven op de kaart in REF _Ref143614671 u Figuur 1
.

Deadglyph-figuur_01
Figuur 1. Victimologie van Deadglyph; het gerelateerde voorbeeld is vanuit Qatar geüpload naar VirusTotal (in donkerdere kleur)

Stealth Falcon (ook bekend als Project Raven of FruityArmor) is een dreigingsgroep die banden heeft met de Verenigde Arabische Emiraten volgens MITER. Het is bekend dat Stealth Falcon actief is sinds 2012 en zich richt op politieke activisten, journalisten en dissidenten in het Midden-Oosten. Het werd voor het eerst ontdekt en beschreven door Citizen Lab, die een publiceerde analyse van een campagne van spyware-aanvallen in 2016.

In januari 2019 publiceerde Reuters een onderzoeksrapport over Project Raven, een initiatief dat naar verluidt voormalige NSA-agenten in dienst heeft en zich op hetzelfde soort doelen richt als Stealth Falcon. Op basis van deze twee rapporten die verwijzen naar dezelfde doelen en aanslagen, heeft Amnesty International heeft geconcludeerd (getoond in REF _Ref144978712 u Figuur 2
) dat Stealth Falcon en Project Raven eigenlijk dezelfde groep zijn.

Deadglief Figuur 2
Figuur 2. Claudio Guarnieri heeft Stealth Falcon verbonden met Project Raven

In september 2019 hebben wij gepubliceerd onderzoek op een achterdeur, toegeschreven aan Stealth Falcon, die een ongebruikelijke techniek gebruikte, Background Intelligent Transfer Service, voor C&C-communicatie. We onthullen nu het resultaat van onze diepgaande analyse van wat vermoedelijk de nieuwste toevoeging is aan de spionagetoolset van Stealth Falcon.

Deadglyph-achterdeur

De laadketen van Deadglyph bestaat uit meerdere componenten, zoals geïllustreerd in REF _Ref144978760 u Figuur 3
. Het initiële onderdeel is een shellcode-lader voor het register, die shellcode uit het register laadt. Deze geëxtraheerde shellcode laadt op zijn beurt het oorspronkelijke x64-gedeelte van de achterdeur: de Executor. De Executor laadt vervolgens het .NET-gedeelte van de backdoor – de Orchestrator. Opvallend is dat de enige component op de systeemschijf als bestand de initiële component is, die de vorm heeft van een Dynamic Link Library (DLL). De overige componenten worden gecodeerd en opgeslagen in een binaire registerwaarde.

Deadglyph-figuur_02
Figuur 3. Onderdelen van de Deadglyph-laadketen

Hoewel de precieze methode van de aanvankelijke compromisvector nog niet is vastgesteld, vermoeden we dat een installatiecomponent betrokken is bij het inzetten van verdere componenten en het tot stand brengen van persistentie binnen het systeem.

In de rest van deze sectie analyseren we elk onderdeel.

Registershellcode-lader

Het oorspronkelijke onderdeel van Deadglyph is een kleine DLL met één enkele export, genaamd 1. Dit onderdeel wordt voortgezet met behulp van Gebeurtenisabonnement op Windows Management Instrumentation (WMI). en dient als een shellcode-lader voor het register. Het wordt uitgevoerd via de opdrachtregel rundll32 C:WINDOWSSystem32pbrtl.dll,#1.

De registershellcode-lader begint met het decoderen van het pad naar de gecodeerde shellcode die is opgeslagen in het Windows-register, met behulp van RC4. We vermoeden dat het pad voor elk slachtoffer uniek is; in het hier geanalyseerde geval was het registerpad:

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

De rootregistersleutel is een van beide hklm or HKCU, afhankelijk van of het huidige proces met verhoogde rechten wordt uitgevoerd of niet. Dezelfde logica is terug te vinden in andere componenten.

Hierna leidt de lader een machinespecifieke RC4-sleutel af met behulp van de systeem-UUID die is opgehaald uit de onbewerkte SMBIOS-firmwaretabel. Met behulp van deze sleutel wordt de shellcode geladen, gedecodeerd en vervolgens uitgevoerd. Het is belangrijk om te benadrukken dat deze sleutelafleidingsbenadering ervoor zorgt dat de juiste decodering niet plaatsvindt als de lader op een andere computer wordt uitgevoerd.

Interessant is dat de lader ook kan worden geconfigureerd met een vlag in zijn .gegevens sectie om een ​​hardgecodeerde sleutel te gebruiken om de shellcode te decoderen, in plaats van de machinespecifieke sleutel.

We hebben een homoglyph-aanval gezien die Microsoft Corporation nabootst in de VERSIE INFORMATIE bron van deze en andere PE-componenten. Deze methode maakt gebruik van verschillende Unicode-tekens die visueel lijken op, maar in dit geval niet identiek zijn aan de originele tekens, met name de Griekse hoofdletter San (U+03FA, Ϻ) en de Cyrillische kleine letter O (U+043E, о) in ϺICRоsоft Corpоratiоn.

Registershellcode

De registershellcode bestaat uit twee delen en bestaat uit een decoderingsroutine en een gecodeerde hoofdtekst. Ten eerste roteert de decoderingsroutine elke byte van het gecodeerde lichaam met één (ROL 0x01). Vervolgens wordt de controle overgedragen aan dit gedecodeerde lichaam. De gedecodeerde body bestaat uit een PE-lader en een PE-bestand, waarbij de laatste de Executor is, die het oorspronkelijke deel van de achterdeur vertegenwoordigt. Deze lader is verantwoordelijk voor het parseren en laden van het bijbehorende PE-bestand.

executeur

De Executor is het native x64-gedeelte van de Deadglyph-achterdeur, dat het volgende doet:

  • laadt de configuratie,
  • initialiseert de .NET-runtime,
  • laadt het ingebedde .NET-gedeelte van de achterdeur (de Orchestrator), en
  • fungeert als bibliotheek voor de Orchestrator.

Ten eerste zijn er twee standaardconfiguraties ingebed in het .gegevens sectie zijn AES-gedecodeerd. De configuraties omvatten verschillende parameters, waaronder coderingssleutels, veiligheids- en ontwijkingsinstellingen en het toegangspunt van het daaropvolgende onderdeel.

Tijdens de eerste uitvoering worden deze twee standaardconfiguraties opgeslagen in het Windows-register, van waaruit ze bij volgende uitvoeringen worden geladen, waardoor de implementatie van updates mogelijk wordt gemaakt. Het registerpad voor elke configuratie wordt gegenereerd met de volgende indeling:

{HKCU|HKLM}SoftwareClassesCLSID{ }(Standaard)

is een gegenereerde GUID, die uniek is voor elk slachtoffer.

Hierna wordt de .NET-runtime geïnitialiseerd, waarna de Executor RC4 het .NET-gedeelte van de achterdeur, bekend als de Orchestrator, decodeert. De Orchestrator bevindt zich in de .rsrc sectie van de executeur. De configuratie specificeert de uitvoeringsmethode van de Orchestrator als toegangspunt. Bovendien is er een aparte structuur voorzien om de toegankelijkheid van de functies van de Executor door de Orchestrator te vergemakkelijken.

Na het starten van de Orchestrator fungeert de Executor als ondersteuningsbibliotheek voor de Orchestrator. De Executor bevat veel interessante functies; we beschrijven er enkele in de volgende sectie, in de context van hun gebruik door de Orchestrator en verder geladen modules.

Orchestrator

De Orchestrator is geschreven in .NET en is het belangrijkste onderdeel van de Deadglyph-achterdeur. De primaire rol van dit onderdeel bestaat uit het tot stand brengen van communicatie met de C&C-server en het uitvoeren van opdrachten, vaak gefaciliteerd door de intermediaire rol van de uitvoerder. In tegenstelling tot de voorgaande componenten is de Orchestrator versluierd en wordt gebruik gemaakt van .NET Reactor. Intern wordt de achterdeur genoemd agent, wat een veel voorkomende naam is voor het clientgedeelte in verschillende post-exploitatieframeworks.

initialisatie

De Orchestrator laadt eerst de configuratie en twee ingebedde modules, elk vergezeld van een eigen set configuraties, uit bronnen. Deze middelen zijn Laat leeglopen gecomprimeerd en AES gecodeerd. Er wordt naar verwezen door een ID die SHA-1 is, gehasht in een resourcenaam. Een overzicht van deze bronnen vindt u in REF _Ref111452440 u tafel 1
.

Tabel 1. Orchestrator-bronnen

 

Naam van de bron

ID (decimaal)

ID (hexadecimaal)

Omschrijving

43ed9a3ad74ed7ab74c345a876b6be19039d4c8c

2570286865

0x99337711

Orchestrator-configuratie.

3a215912708eab6f56af953d748fbfc38e3bb468

3740250113

0xDEEFB001

Netwerkmodule.

42fb165bc9cf614996027a9fcb261d65fd513527

3740250369

0xDEEFB101

Configuratie van netwerkmodules.

e204cdcf96d9f94f9c19dbe385e635d00caaf49d

3735924737

0xDEADB001

Timermodule.

abd2db754795272c21407efd5080c8a705a7d151

3735924993

0xDEADB101

Configuratie van de timermodule.

De configuratie van de Orchestrator en embedded modules wordt opgeslagen in XML-formaat. Een voorbeeld van een Orchestrator-configuratie wordt weergegeven in REF _Ref111452611 u
Figuur 4
.

Deadglyph-figuur_04
Figuur 4. Orchestrator-configuratie

De beschrijving van Orchestrator-configuratiegegevens wordt weergegeven in REF _Ref111452782 u tafel 2
.

Tabel 2. Orchestrator-configuratiegegevens

sleutel

Omschrijving

k


AES-sleutel die wordt gebruikt voor het behouden van moduleconfiguraties.

a


Naam van de initialisatiemethode van de netwerkmodule.

b


Onbekende netwerkmodule-gerelateerde vlag.

c


Naam van de initialisatiemethode van de timermodule.

d


Vlag die het gebruik van machinespecifieke AES-sleutel (systeem-UUID) voor bronnen mogelijk maakt.

p


Resource-ID van netwerkmodule.

t


Resource-ID van timermodule.

Nadat de broncomponenten zijn geladen, worden meerdere threads gemaakt om verschillende taken uit te voeren. Eén van deze threads is verantwoordelijk voor het uitvoeren van omgevingscontroles, een functie die is geïmplementeerd binnen de Executor. Een andere draad is gewijd aan het tot stand brengen van periodieke communicatie met de C&C-server, waardoor het ophalen van opdrachten mogelijk wordt. Ten slotte wordt een set van drie threads gebruikt voor het uitvoeren van ontvangen opdrachten en het vervolgens terugsturen van gegenereerde uitvoer naar de C&C-server.

De omgevingscontrolethread controleert lopende processen om ongewenste processen te identificeren. Deze thread werkt met twee verschillende lijsten met procesnamen. Als een proces op de eerste lijst wordt gedetecteerd, wordt de C&C-communicatie en opdrachtuitvoering gepauzeerd totdat het ongewenste proces niet langer bestaat. Als er een match is voor een proces op de tweede lijst, wordt de achterdeur onmiddellijk afgesloten en wordt zichzelf verwijderd.

Geen van beide lijsten is geconfigureerd in het geanalyseerde exemplaar, dus we weten niet op welke processen doorgaans wordt gecontroleerd; wij denken dat het waarschijnlijk bedoeld is om analysetools te omzeilen die verdachte activiteiten kunnen detecteren en tot de ontdekking van de achterdeur kunnen leiden.

Communicatie

De Orchestrator maakt gebruik van twee ingebouwde modules voor C&C-communicatie: Timer en Netwerk. Net als de Orchestrator zijn deze modules versluierd met .NET Reactor. De configuratie voor beide modules wordt geleverd door de Orchestrator. Binnen de Orchestrator is een vooraf ingestelde configuratie voor de modules opgenomen; optioneel kan de Orchestrator ook een bijgewerkte configuratieversie uit het register laden:

{HKCU|HKLM}SoftwareClassesCLSID{ }

De achterdeur bevat een interessante veiligheidsmaatregel op het gebied van communicatie. Als de achterdeur geen communicatie tot stand kan brengen met de C&C-server gedurende een tijdsduur die een vooraf gedefinieerde drempel overschrijdt, geconfigureerd in de Executor, wordt een mechanisme voor automatische verwijdering geactiveerd. Deze tijdsdrempel is gespecificeerd in uren en is in het onderzochte geval vastgesteld op één uur.

Deze aanpak dient een tweeledig doel. Aan de ene kant voorkomt het het genereren van redundante netwerkverzoeken naar een ontoegankelijke server. Aan de andere kant verkleint het de kans op latere detectie als de operators de controle over de achterdeur verliezen.

Timermodule

Deze kleine module voert de gespecificeerde callback uit met een configureerbaar interval. Het wordt door de Orchestrator gebruikt in combinatie met de Netwerkmodule om periodiek met de C&C-server te communiceren. Om te voorkomen dat er detecteerbare patronen in netwerklogboeken worden aangemaakt, is het uitvoeringsinterval onderhevig aan randomisatie, op basis van een percentage dat is opgegeven in de configuratie. In het geanalyseerde geval werd het interval ingesteld op vijf minuten, waarbij een variatie van ± 20% werd geïntroduceerd vanwege willekeur.

Een andere methode om detecteerbare netwerkpatronen in periodieke communicatie te vermijden, kan worden gevonden in het genereren van verzoeken die naar de C&C-server worden verzonden. Dit mechanisme, geïmplementeerd in de Executor, omvat het opnemen van opvulling van verschillende lengte, bestaande uit willekeurige bytes, binnen de verzoeken, wat resulteert in verzoeken van verschillende groottes.

Netwerkmodule

De netwerkmodule implementeert de communicatie met de C&C-servers die in de configuratie zijn gespecificeerd. Het kan gegevens naar een C&C-server sturen met behulp van HTTP(S) POST-verzoeken. Het biedt met name verschillende mechanismen om proxyconfiguratiegegevens te verkrijgen. Deze functie suggereert een potentiële focus op omgevingen waar directe internettoegang niet beschikbaar is.

Een voorbeeld van een gedecodeerde (en verfraaide) configuratie wordt getoond in REF _Ref144978805 u Figuur 5
.

Deadglyph-figuur_06
Figuur 5. Configuratie van netwerkmodule

Configuratie-items bevatten details met betrekking tot netwerkcommunicatie – C&C-URL's, HTTP User-Agent en optioneel een proxyconfiguratie.

Bij communicatie met de C&C-server wordt onder HTTPS een aangepast binair protocol met gecodeerde inhoud gebruikt.

commando's

De Orchestrator ontvangt opdrachten van de C&C-server in de vorm van taken, die in de wachtrij worden geplaatst voor uitvoering. Er worden drie soorten taken verwerkt:

  • Orchestrator-taken,
  • Taken van de uitvoerder, en
  • Taken uploaden.

De eerste twee soorten worden ontvangen van de C&C-server en de derde wordt intern aangemaakt om de uitvoer van opdrachten en fouten te uploaden.

Orchestrator-taken

Orchestrator-taken bieden de mogelijkheid om de configuratie van de netwerk- en timermodules te beheren en ook om lopende taken te annuleren. Het overzicht van Orchestrator-taken wordt weergegeven in REF _Ref111101783 u tafel 3
.

Tabel 3. Orchestrator-taken

Type

Omschrijving

0x80


Configuratie van netwerk- en timermodules instellen.

0x81


Configuratie van netwerk- en timermodules verkrijgen.

0x82


Taak annuleren.

0x83


Annuleer alle taken.

Uitvoerder taken

Uitvoerdertaken bieden de mogelijkheid om de achterdeur te beheren en extra modules uit te voeren. Het is opmerkelijk dat de traditionele achterdeurfunctionaliteit niet inherent aanwezig is in het binaire bestand zelf. In plaats daarvan worden deze functies van de C&C-server verkregen in de vorm van PE-bestanden of shellcode. De volledige omvang van het potentieel van de achterdeur blijft onbekend zonder deze aanvullende modules, die effectief de ware mogelijkheden ervan ontsluiten. Een overzicht van de moduletaken vindt u in REF _Ref117677179 u tafel 4
, dat details bevat over de weinige geïdentificeerde modules. Op dezelfde manier, REF _Ref117677188 u tafel 5
geeft een overzicht van de beheertaken die bij de Executeur horen.

Tabel 4. Taken van de uitvoerder – modules

Type

Omschrijving

0x??–0x63


Onbekend

0x64


Bestandslezer

0x65


Onbekend

0x66


Onbekend

0x67


Onbekend

0x68


Onbekend

0x69


Procesmaker

0x6A


Onbekend

0x6B


Onbekend

0x6C


Info-verzamelaar

0x6D


Onbekend

0x6E


Onbekend

Tabel 5. Taken van de uitvoerder – management

Type

Omschrijving

0x6F-0x76

Niet geïmplementeerd

0x77

Stel de Executor-configuratie in

0x78

Executor-configuratie ophalen

0x79-0x7C

Niet geïmplementeerd

0x7D

bijwerken

0x7E

Verlaten

0x7F

Installatie ongedaan maken

De opdracht die de Executor-configuratie instelt, kan het volgende wijzigen:

  • ongewenste proceslijsten,
  • tijdsdrempel van C&C-communicatiefout, en
  • tijdslimiet voor de uitvoering van aanvullende modules.
Modules

We zijn erin geslaagd om drie unieke modules van de C&C-server te verkrijgen, die elk overeenkomen met een ander Executor-taaktype, zoals weergegeven in REF _Ref117677179 u tafel 4 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200650066003100310037003600370037003100370039000000
. Op basis van de beschikbare informatie schatten we dat er in totaal negen tot veertien modules zijn. Omdat de modules in feite achterdeuropdrachten zijn, moeten ze één basisbewerking uitvoeren en vervolgens optioneel hun uitvoer retourneren. De modules die we hebben verkregen zijn DLL's met één naamloze export (ordinal 1), waarin ze de noodzakelijke API-functies oplossen en de hoofdfunctie aanroepen.

Wanneer ze worden uitgevoerd, worden de modules voorzien van een API-resolutiefunctie, die Windows API's en aangepaste Executor API's kan omzetten. Er wordt naar de Windows API's verwezen door een DWORD-hash, berekend op basis van de naam van de API en de bijbehorende DLL. Kleine hashwaarden (<41) worden speciaal behandeld, waarbij wordt verwezen naar de Executor API-functie. De Executor API omvat in totaal 39 functies die toegankelijk zijn voor de modules. Deze functies hebben betrekking op een verscheidenheid aan operaties, waaronder:

  • bestandsbewerkingen,
  • encryptie en hashing,
  • compressie,
  • PE-belasting,
  • toegang tot tokenimitatie, en
  • utility.

In de rest van deze sectie beschrijven we de modules die we hebben verkregen.

Procesmaker

Module 0x69 voert de opgegeven opdrachtregel uit als een nieuw proces en levert de resulterende uitvoer terug aan de Orchestrator. Het proces kan onder een andere gebruiker worden aangemaakt en de uitvoeringstijd ervan kan beperkt zijn. Opmerkelijk, een ongebruikelijke Taak-API wordt gebruikt in de functionaliteit van deze module.

Deze module werd bediend via de opdrachtregel cmd.exe /c takenlijst /v.

We gaan ervan uit dat het dient als een inactief commando dat automatisch wordt uitgegeven, terwijl de operators wachten tot er iets interessants gebeurt op de aangetaste computer.

Info-verzamelaar

Module 0x6C verzamelt uitgebreide informatie over de computer via WMI-query's en geeft deze terug aan de Orchestrator. Er wordt informatie verzameld over het volgende:

  • besturingssysteem,
  • Netwerkadapters,
  • geïnstalleerde software,
  • schijven,
  • diensten
  • drivers,
  • processen,
  • gebruikers,
  • omgevingsvariabelen, en
  • beveiligingssoftware.
Bestandslezer

Module 0x64 leest het opgegeven bestand en geeft de inhoud terug aan de Orchestrator. Optioneel kan het bestand na het lezen worden verwijderd.

We zagen dat deze module werd gebruikt om het Outlook-gegevensbestand van het slachtoffer op te halen

c:Gebruikers AppDataLocalMicrosoftOutlookoutlook.ost.

Keten met shellcode-downloader

Tijdens het onderzoek naar Deadglyph kwamen we een dubieus CPL-bestand tegen, ondertekend met een verlopen certificaat en zonder medeondertekening met een tijdstempel, dat vanuit Qatar naar VirusTotal was geüpload. Bij nader onderzoek werd het duidelijk dat dit CPL-bestand functioneerde als een meertraps shellcode-downloader, waarbij bepaalde code-overeenkomsten met Deadglyph werden gedeeld. De laadketen wordt geïllustreerd in REF _Ref143693067 u Figuur 6
.

Deadglyph-figuur_03
Figuur 6. Laadketen van de Shellcode-downloader

In zijn oorspronkelijke vorm, die als eerste fase dient, verwacht dit bestand een CPL extensie (Configuratieschermbestand) en is bedoeld om te worden uitgevoerd via een dubbelklikactie. Bij uitvoering op deze manier ondergaat de ingebedde shellcode XOR-decodering en worden de lopende processen gecontroleerd om een ​​geschikt hostproces te identificeren voor daaropvolgende injectie.

If avp.exe (een Kaspersky-eindpuntbeveiligingsproces) is actief, %windir%system32UserAccountBroker.exe is gebruikt. Anders wordt de standaardbrowser gebruikt. Vervolgens creëert het het hostproces in een onderbroken toestand, injecteert het de shellcode door de hoofdthread te kapen, en hervat de thread.

De tweede fase, de shellcode, bestaat uit twee delen. Het eerste deel van de shellcode lost API-hashes op, met behulp van dezelfde unieke hash-berekeningstechniek die wordt gebruikt in Deadglyph, en decodeert strings met procesnamen. Het start een zelfverwijderende thread die belast is met het overschrijven en vervolgens wissen van het bestand uit de eerste fase. Hierna gaat de shellcode verder met het inspecteren van de momenteel actieve processen, gericht op een beveiligingsoplossing.

Als een van de gespecificeerde processen wordt gedetecteerd, creëert de shellcode een sleeper-thread met de laagste prioriteit (THREAD_PRIORITY_IDLE) en zorgt ervoor dat deze 60 seconden actief kan blijven voordat de werking wordt beëindigd. Dit interval wordt waarschijnlijk geïmplementeerd als voorzorgsmaatregel om bepaalde detectiemechanismen te omzeilen die door beveiligingsoplossingen worden gebruikt. Ten slotte gaat de shellcode verder met het aanroepen van de uitvoering van het tweede deel van zijn code.

Het tweede deel van de shellcode laadt een ingebed PE-bestand met fase drie en roept de export ervan met volgnummer aan 1.

De derde fase, een DLL, fungeert als een .NET-lader en bevat de payload in zijn .rsrc pagina.

Om de payload te laden, wordt de .NET-runtime geïnitialiseerd. Tijdens de .NET-initialisatie worden twee intrigerende technieken uitgevoerd, schijnbaar bedoeld om Windows te omzeilen Antimalware Scan Interface (AMSI) scannen:

  • De .NET-lader haakt tijdelijk het .NET-bestand vast GetModuleHandleW importeer in het geladen clr.dll, terwijl u belt ICorRuntimeHost::Start. De haak knoeit met de geretourneerde waarde wanneer GetModuleHandleW wordt genoemd met NULL. Het retourneert een verwijzing naar een dummy-PE zonder secties.
  • Vervolgens wordt het subtiel gepatcht AmsiInitialiseren naamreeks importeren in het .rdata gedeelte van de geladen clr.dll naar amsiinitialiseren.

De vierde fase is een .NET-assembly, versluierd door ConfuserEx, die dient als shellcode-downloader. Ten eerste decodeert het zijn configuratie in XML-formaat met XOR uit zijn bronnen. Een verfraaide versie van de geëxtraheerde configuratie wordt gepresenteerd in REF _Ref143695453 u Figuur 7
. De configuratie-items bevatten details met betrekking tot netwerkcommunicatie en processen op de blokkeerlijst.

Deadglyph-figuur_05
Figuur 7. Configuratie van de Shellcode-downloader

Voordat verder wordt gegaan, worden de actieve processen gecontroleerd aan de hand van een lijst met geblokkeerde processen uit de configuratie. Als er een match wordt gedetecteerd, stopt de uitvoering. Het is belangrijk op te merken dat in het geanalyseerde exemplaar deze blokkeerlijst niet was ingesteld.

Vervolgens stuurt het een HTTP GET-verzoek naar de C&C-server om wat shellcode op te halen, met behulp van parameters die zijn opgegeven in de configuratie (URL, User-Agent en optioneel Proxy). Helaas hebben we tijdens ons onderzoek geen shellcode van de C&C-server kunnen verkrijgen. Niettemin veronderstellen we dat de opgehaalde inhoud mogelijk zou kunnen dienen als installatieprogramma voor Deadglyph.

Hierna wordt de opgehaalde shellcode uitgevoerd binnen een nieuw gemaakte thread. Na te hebben gewacht totdat de shellcode-thread is uitgevoerd, verwijdert de shellcode-downloader alle bestanden in de map %WINDIR%ServiceProfilesLocalServiceAppDataLocalTempTfsStoreTfs_DAV.

Ten slotte probeert het zichzelf na een interval van 20 seconden te verwijderen, met behulp van het volgende commando, voordat het de werking beëindigt en afsluit:

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

Deze zelfverwijdering heeft geen zin in deze keten. Dit komt door het feit dat de shellcode-downloader wordt uitgevoerd binnen een browser of systeemproces nadat hij is geïnjecteerd, in plaats van te werken als een onafhankelijk uitvoerbaar bestand. Bovendien werd het oorspronkelijke bestand al in de tweede fase verwijderd. Deze observatie suggereert dat de shellcode-downloader mogelijk geen exclusieve payload van deze keten is en ook afzonderlijk in andere bewerkingen kan worden gebruikt.

Conclusie

We hebben een geavanceerde achterdeur ontdekt en geanalyseerd die wordt gebruikt door de Stealth Falcon-groep en die we Deadglyph hebben genoemd. Het heeft een ongebruikelijke architectuur en de backdoor-mogelijkheden worden geleverd door C&C in de vorm van extra modules. We zijn erin geslaagd drie van deze modules te bemachtigen, waarmee we een fractie van de volledige mogelijkheden van Deadglyph blootlegden.

Opvallend is dat Deadglyph beschikt over een reeks tegendetectiemechanismen, waaronder continue monitoring van systeemprocessen en de implementatie van gerandomiseerde netwerkpatronen. Bovendien kan de achterdeur zichzelf verwijderen om de kans op detectie in bepaalde gevallen te minimaliseren.

Bovendien heeft ons onderzoek ons ​​geleid tot de ontdekking van een aantrekkelijke meerfasige shellcode-downloaderketen op VirusTotal. We vermoeden dat deze downloaderketen waarschijnlijk wordt gebruikt in het installatieproces van Deadglyph.

Neem voor vragen over ons onderzoek gepubliceerd op WeLiveSecurity contact met ons op via: bedreigingintel@eset.com.
ESET Research biedt privé APT-inlichtingenrapporten en datafeeds. Voor vragen over deze service kunt u terecht op de ESET-bedreigingsinformatie pagina.

IoC's

Bestanden

SHA-1

Bestandsnaam

Opsporing

Omschrijving

C40F1F46D230A85F702DAA38CFA18D60481EA6C2

pbrtl.dll

Win64/Deadglyph.A

Register Shellcode Loader.

740D308565E215EB9B235CC5B720142428F540DB

NB

Win64/Deadglyph.A

Deadglyph Backdoor – Uitvoerder.

1805568D8362A379AF09FD70D3406C6B654F189F

NB

MSIL/Deadglyph.A

Deadglyph Backdoor – Orchestrator.

9CB373B2643C2B7F93862D2682A0D2150C7AEC7E

NB

MSIL/Deadglyph.A

Orchestrator Netwerkmodule.

F47CB40F6C2B303308D9D705F8CAD707B9C39FA5

NB

MSIL/Deadglyph.A

Orchestrator-timermodule.

3D4D9C9F2A5ACEFF9E45538F5EBE723ACAF83E32

NB

Win64/Deadglyph.A.gen

Module voor het maken van processen.

3D2ACCEA98DBDF95F0543B7C1E8A055020E74960

NB

Win64/Deadglyph.A

Module voor het lezen van bestanden.

4E3018E4FD27587BD1C566930AE24442769D16F0

NB

Win64/Deadglyph.A

Infocollectormodule.

7F728D490ED6EA64A7644049914A7F2A0E563969

NB

Win64/Injector.MD

Eerste fase van de shellcode-downloaderketen.

Certificaten

Serienummer

00F0FB1390F5340CD2572451D95DB1D92D

Vingerafdruk

DB3614DAF58D041F96A5B916281EA0DC97AA0C29

Onderwerp CN

RHM BEPERKT

Onderwerp O

RHM BEPERKT

Onderwerp L

St. Albans

Onderwerp S

Hertfordshire

Onderwerp C

GB

E-mail

rhm@rhmlimited[.]co.uk

Geldig vanaf

2021-03-16 00:00:00

Geldig tot

2022-03-16 23:59:59

C&C-servers

IP

Domein

Eerst gezien

Opmerking

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.

MITRE ATT&CK-technieken

Deze tafel is gemaakt met behulp van versie 13 van het MITRE ATT&CK-raamwerk.

Tactiek

ID

Naam

Omschrijving

Ontwikkeling van hulpbronnen

T1583.001

Infrastructuur verwerven: domeinen

Stealth Falcon heeft domeinen geregistreerd voor C&C-servers en om een ​​code-signing-certificaat te verkrijgen.

T1583.003

Infrastructuur verwerven: Virtual Private Server

Stealth Falcon heeft VPS-hostingproviders gebruikt voor C&C-servers.

T1587.001

Ontwikkelmogelijkheden: Malware

Stealth Falcon heeft aangepaste malware ontwikkeld, waaronder aangepaste laders en de Deadglyph-achterdeur.

T1588.003

Mogelijkheden verkrijgen: Code Signing-certificaten

Stealth Falcon heeft een code-signing-certificaat verkregen.

Uitvoering

T1047

Windows Management Instrumentation

Deadglyph gebruikt WMI om zijn laadketen uit te voeren.

T1059.003

Opdracht- en scriptinterpreter: Windows Command Shell

Shellcode-downloader gebruikt cmd.exe zichzelf te verwijderen.

T1106

Native API

Een Deadglyph-module gebruikt CreateProcesW en AanmakenProcesAlsGebruikerW API-functies voor uitvoering.

T1204.002

Uitvoering door gebruiker: kwaadaardig bestand

De shellcode-downloaderketen vereist dat de gebruiker dubbelklikt en deze uitvoert.

Volharding

T1546.003

Door gebeurtenissen geactiveerde uitvoering: gebeurtenisabonnement op Windows Management Instrumentation

De initiële Deadglyph-lader wordt gehandhaafd met behulp van een WMI-gebeurtenisabonnement.

verdediging ontduiking

T1027

Verduisterde bestanden of informatie

Deadglyph-componenten zijn gecodeerd. Deadglyph Orchestrator en ingebedde modules zijn versluierd met .NET Reactor.

De shellcode-downloader is versluierd met ConfuserEx.

T1070.004

Indicator verwijderen: verwijderen van bestanden

Deadglyph kan zichzelf verwijderen.

De shellcode-downloaderketen verwijdert zichzelf en verwijdert bestanden in de WebDAV-cache.

T1112

Wijzig register

Deadglyph slaat de configuratie en gecodeerde payload op in het register.

T1134

Toegang tokenmanipulatie

Deadglyph kan zich voordoen als een andere gebruiker.

T1140

Deobfuscate/decodeer bestanden of informatie

Deadglyph decodeert gecodeerde tekenreeksen.

De shellcode-downloaderketen decodeert de componenten en configuraties ervan.

T1218.011

Uitvoering van binaire proxy van systeem: Rundll32

De initiële Deadglyph-lader wordt uitgevoerd met behulp van rundll32.exe.

T1480.001

Uitvoering Vangrails: omgevingssleutels

Deadglyph wordt gecodeerd met behulp van een machinespecifieke sleutel die is afgeleid van de systeem-UUID.

T1562.001

Afweer tegengaan: Tools uitschakelen of wijzigen

De shellcode-downloader vermijdt AMSI-scannen door te patchen clr.dll ter herinnering.

T1620

Reflecterende code laden

Deadglyph laadt zijn modules reflecterend met behulp van een aangepaste PE-lader.

De reis van mijn leven

T1007

Systeemservice detectie

A Deadglyph-module ontdekt services met behulp van de WMI-query SELECTEER * UIT Win32_Service.

T1012

Query register

De shellcode-downloaderketen vraagt ​​het register naar de standaardbrowser.

T1016

Detectie van systeemnetwerkconfiguratie

Een Deadglyph-module ontdekt netwerkadapters met behulp van WMI-query's SELECTEER * UIT Win32_NetworkAdapter en SELECTEER * UIT Win32_NetworkAdapterConfiguration waarbij InterfaceIndex=%d.

T1033

Systeemeigenaar/gebruiker detectie

Een Deadglyph-module ontdekt gebruikers met de WMI-query SELECTEER * UIT Win32_UserAccount.

T1057

Procesopsporing

Een Deadglyph-module ontdekt processen met behulp van WMI-query SELECTEER * UIT Win32_Process.

T1082

Ontdekking van systeeminformatie

Een Deadglyph-module ontdekt systeeminformatie zoals de versie van het besturingssysteem, schijven, omgevingsvariabelen en stuurprogramma's met behulp van WMI-query's.

T1518

Software ontdekken

Een Deadglyph-module ontdekt geïnstalleerde software met behulp van WMI-query SELECTEER * UIT Win32_Product.

T1518.001

Softwaredetectie: detectie van beveiligingssoftware

Een Deadglyph-module ontdekt beveiligingssoftware met behulp van WMI-query's SELECTEER * UIT AntiVirusProduct, SELECTEER * UIT AntiSpywareProduct en SELECTEER * UIT FirewallProduct.

De shellcode-downloaderketen controleert lopende processen op een beveiligingsoplossing.

Collectie

T1005

Gegevens van lokaal systeem

Deadglyph heeft een module voor het lezen van bestanden.

Command and Control

T1071.001

Applicatielaagprotocol: webprotocollen

Deadglyph en de shellcode-downloader communiceren met de C&C-server via het HTTP-protocol.

T1090

volmacht

Deadglyph en de shellcode-downloader kunnen HTTP-proxy gebruiken voor C&C-communicatie.

T1573.001

Versleuteld kanaal: symmetrische cryptografie

Deadglyph gebruikt AES om C&C-communicatie te coderen.

exfiltratie

T1041

Exfiltratie via C2-kanaal

Deadglyph gebruikt het C&C-kanaal voor exfiltratie.

Tijdstempel:

Meer van We leven veiligheid