Stealth Falcon jakter over Midtøsten-himmelen med Deadglyph

Stealth Falcon jakter over Midtøsten-himmelen med Deadglyph

Kilde node: 2899203

I årevis har Midtøsten opprettholdt sitt rykte som en grobunn for avanserte vedvarende trusler (APTs). Midt i rutinemessig overvåking av mistenkelige aktiviteter på systemene til høyprofilerte kunder, noen basert i denne regionen, snublet ESET Research over en veldig sofistikert og ukjent bakdør som vi har kalt Deadglyph. Vi hentet navnet fra gjenstander funnet i bakdøren (som f.eks 0xDEADB001, vist også i REF _Ref111452440 h Bord 1
), kombinert med tilstedeværelsen av en homoglyph angrep. Så vidt vi vet, er dette den første offentlige analysen av denne tidligere udokumenterte bakdøren, brukt av en gruppe som viser en betydelig grad av raffinement og ekspertise. Basert på målrettingen og tilleggsbeviset tilskriver vi Stealth Falcon APT-gruppen med høy selvtillit Deadglyph.

Deadglyphs arkitektur er uvanlig som den består av samarbeidende komponenter – den ene en innebygd x64-binær, den andre en .NET-montering. Denne kombinasjonen er uvanlig fordi skadelig programvare vanligvis bare bruker ett programmeringsspråk for komponentene. Denne forskjellen kan indikere separat utvikling av disse to komponentene, samtidig som de drar nytte av unike funksjoner til de forskjellige programmeringsspråkene de bruker. Ulikt språk kan også brukes for å hindre analyse, fordi blandet kode er vanskeligere å navigere og feilsøke.

De tradisjonelle bakdørskommandoene er ikke implementert i bakdørsbinæren; i stedet mottas de dynamisk av den fra kommando- og kontrollserveren (C&C) i form av tilleggsmoduler. Denne bakdøren har også en rekke funksjoner for å unngå å bli oppdaget.

I dette blogginnlegget tar vi en nærmere titt på Deadglyph og gir en teknisk analyse av denne bakdøren, dens formål og noen av tilleggskomponentene vi fikk. Vi presenterer også funnene våre om Deadglyph på LABScon 2023 konferanse.

Hovedpunkter i blogginnlegget:

  • ESET Research oppdaget en sofistikert bakdør med uvanlig arkitektur som vi har kalt Deadglyph.
  • Hovedkomponentene er kryptert med en maskinspesifikk nøkkel.
  • Tradisjonelle bakdørskommandoer implementeres via tilleggsmoduler mottatt fra C&C-serveren.
  • Vi fikk tre av mange moduler – prosessskaper, filleser og infoinnsamler.
  • Vi tilskriver Deadglyph til Stealth Falcon-gruppen.
  • I tillegg fant vi en relatert shellcode-nedlaster; vi postulerer at det potensielt kan brukes til installasjon av Deadglyph.

Offeret for den analyserte infiltrasjonen er en statlig enhet i Midtøsten som ble kompromittert for spionasjeformål. En relatert prøve funnet på VirusTotal ble også lastet opp til filskanningsplattformen fra denne regionen, spesielt fra Qatar. Den målrettede regionen er avbildet på kartet i REF _Ref143614671 h Figur 1
.

Deadglyph Figure_01
Figur 1. Victimology of Deadglyph; den relaterte prøven ble lastet opp til VirusTotal fra Qatar (i mørkere farge)

Stealth Falcon (også kjent som Project Raven eller FruityArmor) er en trusselgruppe knyttet til De forente arabiske emirater ifølge MITER. Stealth Falcon, som har vært aktiv siden 2012, er kjent for å målrette mot politiske aktivister, journalister og dissidenter i Midtøsten. Den ble først oppdaget og beskrevet av Citizen Lab, som publiserte en analyse av en kampanje med spyware-angrep i 2016.

I januar 2019 publiserte Reuters en undersøkende rapport på Project Raven, et initiativ som angivelig ansetter tidligere NSA-operatører og sikter mot samme typer mål som Stealth Falcon. Basert på disse to rapportene som refererer til de samme målene og angrepene, Amnesty International har konkludert (vist inn REF _Ref144978712 h Figur 2
) at Stealth Falcon og Project Raven faktisk er samme gruppe.

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

I september 2019 har vi publisert forskning på en bakdør, tilskrevet Stealth Falcon, som brukte en uvanlig teknikk, Background Intelligent Transfer Service, for C&C-kommunikasjon. Vi avslører nå resultatet av vår dybdeanalyse av det som antagelig er det nyeste tilskuddet til Stealth Falcons spionasjeverktøysett.

Deadglyph bakdør

Deadglyphs lastekjede består av flere komponenter, som illustrert i REF _Ref144978760 h Figur 3
. Den første komponenten er en registry shellcode loader, som laster shellcode fra registret. Denne ekstraherte skallkoden laster på sin side inn den opprinnelige x64-delen av bakdøren – Executor. Utføreren laster deretter inn .NET-delen av bakdøren – Orchestrator. Spesielt er den eneste komponenten på systemets disk som en fil den første komponenten, som er i form av et Dynamic Link Library (DLL). De resterende komponentene er kryptert og lagret i en binær registerverdi.

Deadglyph Figure_02
Figur 3. Deadglyph lastekjedekomponenter

Selv om den nøyaktige metoden for den innledende kompromissvektoren ennå ikke er bestemt, er vår mistanke om at en installasjonskomponent er involvert i å distribuere ytterligere komponenter og etablere utholdenhet i systemet.

I resten av denne delen analyserer vi hver komponent.

Registry shellcode loader

Deadglyphs første komponent er en liten DLL med en enkelt eksport, kalt 1. Denne komponenten fortsetter å bruke Windows Management Instrumentation (WMI) hendelsesabonnement og fungerer som en registerskallkodelaster. Det utføres via kommandolinjen rundll32 C:WINDOWSSystem32pbrtl.dll,#1.

Registerets shellcode-laster starter sin operasjon ved å dekryptere banen til den krypterte shellcode som er lagret i Windows-registeret, ved hjelp av RC4. Vi mistenker at veien er unik for hvert offer; i tilfellet som er analysert her, var registerbanen:

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

Rotregisternøkkelen er enten hklm or HKCU, avhengig av om den gjeldende prosessen kjører med forhøyede rettigheter eller ikke. Den samme logikken finnes i flere komponenter.

Etter dette utleder lasteren en maskinspesifikk RC4-nøkkel ved å bruke systemets UUID hentet fra rå SMBIOS-fastvaretabell. Ved å bruke denne nøkkelen laster den, dekrypterer og kjører deretter skallkoden. Det er viktig å fremheve at denne nøkkelavledningstilnærmingen sikrer at riktig dekryptering ikke vil skje hvis lasteren kjøres på en annen datamaskin.

Interessant nok kan lasteren også konfigureres av et flagg i sin .data for å bruke en hardkodet nøkkel for å dekryptere skallkoden, i stedet for den maskinspesifikke.

Vi så et homoglyfangrep som etterlignet Microsoft Corporation i VERSJONSINFO ressursen til denne og andre PE-komponenter. Denne metoden bruker distinkte Unicode-tegn som ser visuelt like ut, men i dette tilfellet ikke identiske, med originaltegnene, spesielt gresk stor bokstav San (U+03FA, Ϻ) og kyrillisk liten bokstav O (U+043E, о) i Ϻicrоsоft CorpоRatiоn.

Skallkode for registeret

Består av to deler, registerskallkoden består av en dekrypteringsrutine og en kryptert kropp. Først roterer dekrypteringsrutinen hver byte av den krypterte kroppen til venstre med én (ROL 0x01). Deretter overføres kontrollen til denne dekrypterte kroppen. Den dekrypterte kroppen består av en PE-laster og en PE-fil, sistnevnte er Executor, som representerer den opprinnelige delen av bakdøren. Denne lasteren er ansvarlig for å analysere og laste den tilknyttede PE-filen.

byrder

Executor er den opprinnelige x64-delen av Deadglyph-bakdøren, som gjør følgende:

  • laster inn konfigurasjonen,
  • initialiserer .NET runtime,
  • laster den innebygde .NET-delen av bakdøren (Orkestratoren), og
  • fungerer som et bibliotek for orkestermesteren.

Først to standardkonfigurasjoner innebygd i .data delen er AES-dekryptert. Konfigurasjonene omfatter ulike parametere, inkludert krypteringsnøkler, sikkerhets- og unnvikelsesinnstillinger, og inngangspunktet for den påfølgende komponenten.

Under den første kjøringen lagres disse to standardkonfigurasjonene i Windows-registret, hvorfra de lastes inn ved påfølgende kjøringer, noe som muliggjør implementering av oppdateringer. Registerbanen for hver konfigurasjon genereres med følgende format:

{HKCU|HKLM}Software ClassesCLSID{ }(Misligholde)

er en generert GUID, som er unik for hvert offer.

Etter dette initialiseres .NET-kjøretiden, deretter dekrypterer Executor RC4 .NET-delen av bakdøren kjent som Orchestrator. The Orchestrator er lokalisert innenfor .rsrc delen av Eksekutoren. Konfigurasjonen spesifiserer Orchestrators utførelsesmetode som et inngangspunkt. Dessuten er det gitt en distinkt struktur for å lette tilgjengeligheten av utførendes funksjoner for orkesterlederen.

Etter lansering av Orchestrator, fungerer Executor som et støttebibliotek for Orchestrator. Utføreren inneholder mange interessante funksjoner; vi beskriver noen av dem i den følgende delen, i sammenheng med deres bruk av Orchestrator og ytterligere innlastede moduler.

Orchestrator

Orchestrator er skrevet i .NET og er hovedkomponenten i Deadglyph-bakdøren. Denne komponentens primære rolle involverer å etablere kommunikasjon med C&C-serveren og utføre kommandoer, ofte forenklet gjennom den formidlende rollen til utfører. I motsetning til de foregående komponentene, er Orchestrator tilslørt ved å bruke .NET Reactor. Internt omtales bakdøren som agenten, som er et vanlig navn for klientdelen i ulike rammeverk etter utnyttelse.

Initialisering

Orchestrator laster først inn konfigurasjonen og to innebygde moduler, hver akkompagnert av sitt eget sett med konfigurasjoner, fra ressurser. Disse ressursene er Tøm luft komprimert og AES kryptert. De refereres til av en ID som er SHA-1 hashed til et ressursnavn. En oversikt over disse ressursene er gitt i REF _Ref111452440 h Bord 1
.

Tabell 1. Orchestrator-ressurser

 

Ressursnavn

ID (desimal)

ID (hex)

Beskrivelse

43ed9a3ad74ed7ab74c345a876b6be19039d4c8c

2570286865

0x99337711

Orchestrator-konfigurasjon.

3a215912708eab6f56af953d748fbfc38e3bb468

3740250113

0xDEEFB001

Nettverksmodul.

42fb165bc9cf614996027a9fcb261d65fd513527

3740250369

0xDEEFB101

Nettverksmodulkonfigurasjon.

e204cdcf96d9f94f9c19dbe385e635d00caaf49d

3735924737

0xDEADB001

Timermodul.

abd2db754795272c21407efd5080c8a705a7d151

3735924993

0xDEADB101

Tidtakermodulkonfigurasjon.

Konfigurasjonen av Orchestrator og innebygde moduler lagres i XML-format. Et eksempel på en Orchestrator-konfigurasjon er vist i REF _Ref111452611 h
Figur 4
.

Deadglyph Figure_04
Figur 4. Orchestrator-konfigurasjon

Beskrivelsen av Orchestrator-konfigurasjonsoppføringer vises i REF _Ref111452782 h Bord 2
.

Tabell 2. Konfigurasjonsoppføringer for Orchestrator

nøkkel

Beskrivelse

k


AES-nøkkel brukes for vedvarende modulkonfigurasjoner.

a


Nettverksmodulinitieringsmetodenavn.

b


Ukjent nettverksmodulrelatert flagg.

c


Navn på initialiseringsmetode for timermodul.

d


Flagg som muliggjør bruk av maskinspesifikk AES-nøkkel (system-UUID) for ressurser.

p


Ressurs-ID for nettverksmodul.

t


Tidsurmodulressurs-ID.

Etter at ressurskomponentene er lastet, opprettes flere tråder for å utføre forskjellige oppgaver. En av disse trådene er ansvarlig for å utføre miljøsjekker, en funksjon implementert i Executor. En annen tråd er viet til å etablere periodisk kommunikasjon med C&C-serveren, som muliggjør henting av kommandoer. Til slutt brukes et sett med tre tråder for å utføre mottatte kommandoer og deretter overføre genererte utdata tilbake til C&C-serveren.

Tråden for miljøsjekking overvåker kjørende prosesser for å identifisere uønskede. Denne tråden opererer med to distinkte lister med prosessnavn. Hvis en prosess på den første listen oppdages, stoppes C&C-kommunikasjon og kommandoutførelse inntil den uønskede prosessen ikke lenger eksisterer. Hvis det er en match for en prosess på den andre listen, avsluttes bakdøren umiddelbart og avinstallerer seg selv.

Ingen av listene ble konfigurert i den analyserte forekomsten, så vi vet ikke hvilke prosesser som vanligvis sjekkes for; vi tror det sannsynligvis er ment å unndra analyseverktøy som kan oppdage mistenkelig aktivitet og føre til oppdagelse av bakdøren.

Kommunikasjon

Orchestrator bruker to innebygde moduler for C&C-kommunikasjon – Timer og Network. I likhet med Orchestrator er disse modulene uklare med .NET Reactor. Konfigurasjonen for begge modulene er levert av Orchestrator. Innenfor Orchestrator er en forhåndsinnstilt konfigurasjon for modulene inkludert; valgfritt kan Orchestrator også laste en oppdatert konfigurasjonsversjon fra registeret:

{HKCU|HKLM}Software ClassesCLSID{ }

Bakdøren inneholder et interessant sikkerhetstiltak knyttet til kommunikasjon. Hvis bakdøren ikke er i stand til å etablere kommunikasjon med C&C-serveren i en varighet som overstiger en forhåndsdefinert terskel, konfigurert i Executor, utløses en selvavinstalleringsmekanisme. Denne tidsgrensen er angitt i timer og ble satt til én time i det undersøkte tilfellet.

Denne tilnærmingen tjener et todelt formål. På den ene siden forhindrer det generering av redundante nettverksforespørsler mot en utilgjengelig server. På den annen side reduserer det sjansene for etterfølgende deteksjon dersom operatørene mister kontrollen over bakdøren.

Timermodul

Denne lille modulen utfører spesifisert tilbakeringing med et konfigurerbart intervall. Den brukes av Orchestrator i kombinasjon med nettverksmodulen for å kommunisere med C&C-serveren med jevne mellomrom. For å forhindre oppretting av detekterbare mønstre i nettverkslogger, er utførelsesintervallet underlagt randomisering, basert på en prosentandel spesifisert i konfigurasjonen. I det analyserte tilfellet ble intervallet satt til fem minutter, med en variasjon på ±20 % introdusert for tilfeldighet.

En annen metode for å unngå detekterbare nettverksmønstre i periodisk kommunikasjon kan finnes i generering av forespørsler sendt til C&C-serveren. Denne mekanismen, implementert i Executor, involverer inkludering av utfylling av varierende lengde, bestående av tilfeldige byte, i forespørslene, noe som resulterer i forespørsler av forskjellige størrelser.

Nettverksmodul

Nettverksmodulen implementerer kommunikasjon med C&C-serverne spesifisert i konfigurasjonen. Den kan sende data til en C&C-server ved å bruke HTTP(S) POST-forespørsler. Spesielt tilbyr den flere mekanismer for å skaffe proxy-konfigurasjonsdetaljer. Denne funksjonen antyder et potensielt fokus på miljøer der direkte internettilgang ikke er tilgjengelig.

Et eksempel på en dekryptert (og forskjønnet) konfigurasjon er vist i REF _Ref144978805 h Figur 5
.

Deadglyph Figure_06
Figur 5. Nettverksmodulkonfigurasjon

Konfigurasjonsoppføringer inneholder detaljer relatert til nettverkskommunikasjon – C&C URL-er, HTTP User-Agent, og eventuelt en proxy-konfigurasjon.

Når du kommuniserer med C&C-serveren, brukes en tilpasset binær protokoll med kryptert innhold under HTTPS.

Kommandoer

Orchestrator mottar kommandoer fra C&C-serveren i form av oppgaver, som står i kø for utførelse. Det er tre typer oppgaver som behandles:

  • Orkesteroppgaver,
  • Utføreroppgaver, og
  • Last opp oppgaver.

De to første typene mottas fra C&C-serveren, og den tredje lages internt for å laste opp utdata av kommandoer og feil.

Orkesteroppgaver

Orchestrator-oppgaver tilbyr muligheten til å administrere konfigurasjonen av nettverks- og timermodulene, og også å kansellere ventende oppgaver. Oversikten over Orchestrator-oppgaver vises i REF _Ref111101783 h Bord 3
.

Tabell 3. Orkesteroppgaver

typen

Beskrivelse

0x80


Still inn konfigurasjon av nettverk og timermoduler.

0x81


Få konfigurering av nettverk og timermoduler.

0x82


Avbryt oppgaven.

0x83


Avbryt alle oppgaver.

Utføreroppgaver

Utføreroppgaver tilbyr muligheten til å administrere bakdøren og utføre tilleggsmoduler. Det er bemerkelsesverdig at den tradisjonelle bakdørsfunksjonaliteten ikke er til stede i selve binæren. I stedet hentes disse funksjonene fra C&C-serveren i form av PE-filer eller shellcode. Det fulle omfanget av bakdørens potensial forblir ukjent uten disse tilleggsmodulene, som effektivt låser opp dens sanne muligheter. En oversikt over moduloppgaver vises i REF _Ref117677179 h Bord 4
, som inkluderer detaljer om de få identifiserte modulene. På samme måte, REF _Ref117677188 h Bord 5
gir en oversikt over lederoppgaver knyttet til Utfører.

Tabell 4. Utføreroppgaver – moduler

typen

Beskrivelse

0x??–0x63


Ukjent

0x64


Filleser

0x65


Ukjent

0x66


Ukjent

0x67


Ukjent

0x68


Ukjent

0x69


Prosessskaper

0x6A


Ukjent

0x6B


Ukjent

0x6C


Infosamler

0x6D


Ukjent

0x6E


Ukjent

Tabell 5. Utføreroppgaver – ledelse

typen

Beskrivelse

0x6F-0x76

Ikke implementert

0x77

Angi Executor-konfigurasjon

0x78

Få Executor-konfigurasjon

0x79-0x7C

Ikke implementert

0x7D

Oppdater

0x7E

Avslutt

0x7F

Avinstaller

Kommandoen som angir Executor-konfigurasjonen kan endre:

  • uønskede prosesslister,
  • tidsterskel for C&C kommunikasjonssvikt, og
  • frist for utførelse av tilleggsmoduler.
Moduler

Vi klarte å skaffe tre unike moduler fra C&C-serveren, som hver tilsvarer en forskjellig Executor-oppgavetype, som vist i REF _Ref117677179 h Bord 4 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200650066003100310037003600370037003100370039000000
. Basert på tilgjengelig informasjon anslår vi at det er ni til fjorten moduler totalt. Siden modulene faktisk er bakdørskommandoer, har de én grunnleggende operasjon å utføre og deretter eventuelt returnere utdataene. Modulene vi fikk er DLL-er med én navngitt eksport (ordinal 1), der de løser nødvendige API-funksjoner og kaller hovedfunksjonen.

Når de utføres, er modulene utstyrt med en API-oppløsningsfunksjon, som kan løse Windows APIer og tilpassede Executor APIer. Windows-API-ene refereres til av en DWORD-hash, beregnet fra navnet på APIen og dens DLL. Små hash-verdier (<41) behandles spesielt, med henvisning til Executor API-funksjonen. Executor API består av totalt 39 funksjoner som er tilgjengelige for modulene. Disse funksjonene gjelder en rekke operasjoner, inkludert:

  • filoperasjoner,
  • kryptering og hashing,
  • komprimering,
  • PE lasting,
  • tilgang til token-etterligning, og
  • nytte.

I resten av denne delen beskriver vi modulene vi fikk.

Prosessskaper

Moduler 0x69 utfører den angitte kommandolinjen som en ny prosess og gir den resulterende utdata tilbake til Orchestrator. Prosessen kan opprettes under en annen bruker, og utførelsestiden kan begrenses. Spesielt en uvanlig Job API brukes i denne modulens funksjonalitet.

Denne modulen ble servert med kommandolinjen cmd.exe /c oppgaveliste /v.

Vi antar at det fungerer som en inaktiv kommando som utstedes automatisk, mens operatørene venter på at noe interessant skal skje på den kompromitterte datamaskinen.

Infosamler

Moduler 0x6C samler inn omfattende informasjon om datamaskinen via WMI-spørringer og sender den tilbake til Orchestrator. Informasjon om følgende samles inn:

  • operativsystem,
  • nettverksadaptere,
  • installert programvare,
  • stasjoner,
  • tjenester,
  • drivere,
  • prosesser,
  • brukere,
  • miljøvariabler, og
  • sikkerhetsprogramvare.
Filleser

Moduler 0x64 leser den angitte filen og sender innholdet tilbake til Orchestrator. Eventuelt kan den slette filen etter lesing.

Vi så denne modulen brukes til å hente offerets Outlook-datafil

c: Brukere AppDataLocalMicrosoftOutlookoutlook.ost.

Kjede med shellcode-nedlaster

I prosessen med å undersøke Deadglyph, fant vi en tvilsom CPL-fil signert med et utløpt sertifikat og ingen motsignatur med tidsstempel, som var lastet opp til VirusTotal fra Qatar. Ved nærmere undersøkelse ble det tydelig at denne CPL-filen fungerte som en flertrinns shellcode-nedlaster, og delte visse kodelikheter med Deadglyph. Lastekjeden er illustrert i REF _Ref143693067 h Figur 6
.

Deadglyph Figure_03
Figur 6. Lastekjede for Shellcode-nedlasting

I sin opprinnelige form, som fungerer som det første trinnet, forventer denne filen å ha en . Cpl utvidelse (kontrollpanelfil) og er ment å utføres via en dobbeltklikkhandling. Ved utførelse på denne måten gjennomgår den innebygde skallkoden XOR-dekryptering, og de kjørende prosessene blir kontrollert for å identifisere en passende vertsprosess for påfølgende injeksjon.

If avp.exe (en Kaspersky-endepunktsikkerhetsprosess) kjører, %windir%system32UserAccountBroker.exe benyttes. Ellers brukes standardnettleseren. Deretter oppretter den vertsprosessen i suspendert tilstand, injiserer skallkoden ved å kapre hovedtråden, og gjenopptar tråden.

Det andre trinnet, shellcode, består av to deler. Den første delen av skallkoden løser API-hasher ved å bruke den samme unike hash-beregningsteknikken som brukes i Deadglyph, og dekrypterer strenger med prosessnavn. Den starter en selvslettingstråd som har i oppgave å overskrive og deretter slette førstefasefilen. Etter dette fortsetter shellcoden med å inspisere de aktive prosessene, rettet mot en sikkerhetsløsning.

Hvis noen av de spesifiserte prosessene oppdages, oppretter skallkoden en svilletråd med lavest prioritet (THREAD_PRIORITY_IDLE) og lar den forbli aktiv i en varighet på 60 sekunder før den avslutter driften. Dette intervallet er sannsynligvis implementert som et forholdsregler for å unngå visse deteksjonsmekanismer som brukes av sikkerhetsløsninger. Til slutt fortsetter skallkoden med å påkalle utførelsen av den andre delen av koden.

Den andre delen av skallkoden laster en innebygd PE-fil med trinn tre og kaller eksporten med ordensnummer 1.

Det tredje trinnet, en DLL, fungerer som en .NET-laster og inneholder nyttelasten i sin .rsrc seksjon.

For å laste nyttelasten initialiseres .NET-kjøretiden. Under .NET-initialiseringen utføres to spennende teknikker, tilsynelatende ment å unngå Windows Antimalware Scan Interface (AMSI) skanning:

  • .NET-lasteren kobler midlertidig til GetModuleHandleW import i den innlastede clr.dll, mens du ringer ICorRuntimeHost::Start. Kroken tukler med returverdien når GetModuleHandleW kalles med NULL. Den returnerer en peker til en dummy PE uten seksjoner.
  • Den lapper deretter subtilt AmsiInitialiser importer navnestreng i .rdata delen av den lastede clr.dll til amsiiinitialisere.

Det fjerde trinnet er en .NET-montering, skjult med ConfuserEx, som fungerer som en shellcode-nedlaster. Først XOR-dekrypterer den konfigurasjonen i XML-format fra ressursene. En forskjønnet versjon av den utpakkede konfigurasjonen er presentert i REF _Ref143695453 h Figur 7
. Konfigurasjonsoppføringene inneholder detaljer knyttet til nettverkskommunikasjon og blokklistede prosesser.

Deadglyph Figure_05
Figur 7. Konfigurasjon av Shellcode-nedlaster

Før du fortsetter, sjekker den de kjørende prosessene mot en liste over blokklistede prosesser fra konfigurasjonen. Hvis en kamp oppdages, stopper utførelsen. Det er viktig å merke seg at i det analyserte tilfellet ble denne blokkeringslisten ikke satt opp.

Deretter sender den en HTTP GET-forespørsel til C&C-serveren for å hente noen shellcode, ved å bruke parametere spesifisert i konfigurasjonen (URL, User-Agent og eventuelt proxy). Dessverre var vi ikke i stand til å skaffe noen shellcode fra C&C-serveren under vår undersøkelse. Ikke desto mindre antar vi at innholdet som hentes potensielt kan fungere som installasjonsprogrammet for Deadglyph.

Etter dette kjøres den hentede skallkoden i en nyopprettet tråd. Etter å ha ventet til shellcode-tråden er ferdig utført, fjerner shellcode-nedlasteren alle filene i katalogen %WINDIR%ServiceProfilesLocalServiceAppDataLocalTempTfsStoreTfs_DAV.

Til slutt gjør den et forsøk på å slette seg selv etter et 20-sekunders intervall, ved å bruke den påfølgende kommandoen, før den avslutter operasjonen og avslutter:

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

Denne selvslettingen gir ikke mening i denne kjeden. Dette skyldes det faktum at shellcode-nedlasteren kjøres i en nettleser eller systemprosess etter å ha blitt injisert, i stedet for å fungere som en uavhengig kjørbar. Dessuten var den første filen allerede slettet i det andre trinnet. Denne observasjonen antyder at shellcode-nedlasteren kanskje ikke er en eksklusiv nyttelast i denne kjeden og kan også brukes separat i andre operasjoner.

konklusjonen

Vi har oppdaget og analysert en sofistikert bakdør brukt av Stealth Falcon-gruppen som vi har kalt Deadglyph. Den har en uvanlig arkitektur, og bakdørsfunksjonene leveres av C&C i form av tilleggsmoduler. Vi klarte å få tak i tre av disse modulene, og avdekket en brøkdel av Deadglyphs fulle muligheter.

Spesielt kan Deadglyph skryte av en rekke motdeteksjonsmekanismer, inkludert kontinuerlig overvåking av systemprosesser og implementering av randomiserte nettverksmønstre. Videre er bakdøren i stand til å avinstallere seg selv for å minimere sannsynligheten for at den oppdages i visse tilfeller.

I tillegg førte undersøkelsen vår til oppdagelsen av en overbevisende flertrinns shellcode-nedlastingskjede på VirusTotal. Vi mistenker at denne nedlastingskjeden sannsynligvis er utnyttet i installasjonsprosessen til Deadglyph.

For eventuelle spørsmål om forskningen vår publisert på WeLiveSecurity, vennligst kontakt oss på threatintel@eset.com.
ESET Research tilbyr private APT-etterretningsrapporter og datafeeder. For eventuelle spørsmål om denne tjenesten, besøk ESET Threat Intelligence side.

IoCs

Filer

SHA-1

filnavn

Gjenkjenning

Beskrivelse

C40F1F46D230A85F702DAA38CFA18D60481EA6C2

pbrtl.dll

Win64/Deadglyph.A

Registry Shellcode Loader.

740D308565E215EB9B235CC5B720142428F540DB

N / A

Win64/Deadglyph.A

Deadglyph Backdoor – Utfører.

1805568D8362A379AF09FD70D3406C6B654F189F

N / A

MSIL/Deadglyph.A

Deadglyph Backdoor – Orkester.

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

Prosessskapermodul.

3D2ACCEA98DBDF95F0543B7C1E8A055020E74960

N / A

Win64/Deadglyph.A

Fillesermodul.

4E3018E4FD27587BD1C566930AE24442769D16F0

N / A

Win64/Deadglyph.A

Infosamlermodul.

7F728D490ED6EA64A7644049914A7F2A0E563969

N / A

Win64/Injector.MD

Første trinn i shellcode-nedlastingskjeden.

sertifikater

Serienummer

00F0FB1390F5340CD2572451D95DB1D92D

Tommelavtrykk

DB3614DAF58D041F96A5B916281EA0DC97AA0C29

Emne CN

RHM BEGRENSET

Emne O

RHM BEGRENSET

Emne L

St. Albans

Emne S

Hertfordshire

Emne C

GB

Epost

rhm@rhmlimited[.]co.uk

Gyldig fra

2021-03-16 00:00:00

Gyldig til

2022-03-16 23:59:59

C&C-servere

IP

Domene

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-nedlaster C&C-server.

MITRE ATT&CK-teknikker

Dette bordet ble bygget vha versjon 13 av MITRE ATT&CK-rammeverket.

taktikk

ID

Navn

Beskrivelse

Ressursutvikling

T1583.001

Anskaffe infrastruktur: domener

Stealth Falcon har registrert domener for C&C-servere og for å få et kodesigneringssertifikat.

T1583.003

Skaff infrastruktur: Virtual Private Server

Stealth Falcon har brukt VPS-vertsleverandører for C&C-servere.

T1587.001

Utvikle evner: Skadelig programvare

Stealth Falcon har utviklet tilpasset skadelig programvare, inkludert tilpassede lastere og Deadglyph-bakdøren.

T1588.003

Skaff evner: Kodesigneringssertifikater

Stealth Falcon har fått et kodesigneringssertifikat.

Gjennomføring

T1047

Windows Management Instrumentation

Deadglyph bruker WMI for å utføre lastekjeden.

T1059.003

Kommando- og skripttolk: Windows Command Shell

Shellcode-nedlasteren bruker cmd.exe å slette seg selv.

T1106

Innfødt API

En Deadglyph-modul bruker CreateProcessW og CreateProcessAsUserW API-funksjoner for utførelse.

T1204.002

Brukerutførelse: Skadelig fil

Shellcode-nedlastingskjeden krever at brukeren dobbeltklikker og kjører den.

Utholdenhet

T1546.003

Hendelsesutløst kjøring: Windows Management Instrumentation Event-abonnement

Den første Deadglyph-lasteren fortsetter med WMI-hendelsesabonnement.

Forsvarsunndragelse

T1027

Uklare filer eller informasjon

Deadglyph-komponenter er kryptert. Deadglyph Orchestrator og innebygde moduler er skjult med .NET Reactor.

Skallkodenedlasteren er skjult med ConfuserEx.

T1070.004

Indikatorfjerning: Filsletting

Deadglyph kan avinstallere seg selv.

Shellcode-nedlastingskjeden sletter seg selv og sletter filer i WebDAV-cachen.

T1112

Endre registret

Deadglyph lagrer konfigurasjonen og kryptert nyttelast i registeret.

T1134

Access Token Manipulation

Deadglyph kan utgi seg for en annen bruker.

T1140

Deobfuscate / Decode filer eller informasjon

Deadglyph dekrypterer krypterte strenger.

Shellcode-nedlastingskjeden dekrypterer komponentene og konfigurasjonene.

T1218.011

System binær proxy-utførelse: Rundll32

Den første Deadglyph-lasteren utføres ved hjelp av rundll32.exe.

T1480.001

Utførelsesrekkverk: Miljønøkling

Deadglyph er kryptert med en maskinspesifikk nøkkel hentet fra systemets UUID.

T1562.001

Forringe forsvar: Deaktiver eller endre verktøy

Shellcode-nedlasteren unngår AMSI-skanning ved å lappe clr.dll i minne .

T1620

Reflekterende kodeinnlasting

Deadglyph laster reflekterende modulene sine ved hjelp av en tilpasset PE-laster.

Discovery

T1007

Systemtjenesteoppdagelse

A Deadglyph-modulen oppdager tjenester ved å bruke WMI-spørringen VELG * FRA Win32_Service.

T1012

Spørringsregister

Shellcode-nedlastingskjeden spør etter standardnettleseren i registeret.

T1016

Oppdagelse av systemnettverkskonfigurasjon

En Deadglyph-modul oppdager nettverkskort ved hjelp av WMI-spørringer VELG * FRA Win32_NetworkAdapter og VELG * FRA Win32_NetworkAdapterConfiguration hvor InterfaceIndex=%d.

T1033

Systemeier/brukeroppdagelse

En Deadglyph-modul oppdager brukere med WMI-spørringen VELG * FRA Win32_UserAccount.

T1057

Prosessoppdagelse

En Deadglyph-modul oppdager prosesser ved hjelp av WMI-spørring VELG * FRA Win32_Process.

T1082

Oppdagelse av systeminformasjon

En Deadglyph-modul oppdager systeminformasjon som OS-versjon, stasjoner, miljøvariabler og drivere ved hjelp av WMI-spørringer.

T1518

Oppdagelse av programvare

En Deadglyph-modul oppdager installert programvare ved hjelp av WMI-spørring VELG * FRA Win32_Product.

T1518.001

Software Discovery: Security Software Discovery

En Deadglyph-modul oppdager sikkerhetsprogramvare ved hjelp av WMI-spørringer VELG * FRA AntiVirusprodukt, VELG * FRA AntiSpywareProduct og VELG * FRA FirewallProduct.

Shellcode-nedlastingskjeden sjekker kjørende prosesser for en sikkerhetsløsning.

Samling

T1005

Data fra lokalt system

Deadglyph har en modul for å lese filer.

Command and Control

T1071.001

Application Layer Protocol: Webprotokoller

Deadglyph og shellcode-nedlasteren kommuniserer med C&C-serveren via HTTP-protokollen.

T1090

Proxy

Deadglyph og shellcode-nedlasteren kan bruke HTTP-proxy for C&C-kommunikasjon.

T1573.001

Kryptert kanal: symmetrisk kryptografi

Deadglyph bruker AES for å kryptere C&C-kommunikasjon.

exfiltration

T1041

Eksfiltrering over C2-kanal

Deadglyph bruker C&C-kanalen for eksfiltrering.

Tidstempel:

Mer fra Vi lever sikkerhet