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
.
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.
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.
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
.
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
.
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
.
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
- 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.
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 |
Anskaffe infrastruktur: domener |
Stealth Falcon har registrert domener for C&C-servere og for å få et kodesigneringssertifikat. |
|
Skaff infrastruktur: Virtual Private Server |
Stealth Falcon har brukt VPS-vertsleverandører for C&C-servere. |
||
Utvikle evner: Skadelig programvare |
Stealth Falcon har utviklet tilpasset skadelig programvare, inkludert tilpassede lastere og Deadglyph-bakdøren. |
||
Skaff evner: Kodesigneringssertifikater |
Stealth Falcon har fått et kodesigneringssertifikat. |
||
Gjennomføring |
Windows Management Instrumentation |
Deadglyph bruker WMI for å utføre lastekjeden. |
|
Kommando- og skripttolk: Windows Command Shell |
Shellcode-nedlasteren bruker cmd.exe å slette seg selv. |
||
Innfødt API |
En Deadglyph-modul bruker CreateProcessW og CreateProcessAsUserW API-funksjoner for utførelse. |
||
Brukerutførelse: Skadelig fil |
Shellcode-nedlastingskjeden krever at brukeren dobbeltklikker og kjører den. |
||
Utholdenhet |
Hendelsesutløst kjøring: Windows Management Instrumentation Event-abonnement |
Den første Deadglyph-lasteren fortsetter med WMI-hendelsesabonnement. |
|
Forsvarsunndragelse |
Uklare filer eller informasjon |
Deadglyph-komponenter er kryptert. Deadglyph Orchestrator og innebygde moduler er skjult med .NET Reactor. Skallkodenedlasteren er skjult med ConfuserEx. |
|
Indikatorfjerning: Filsletting |
Deadglyph kan avinstallere seg selv. Shellcode-nedlastingskjeden sletter seg selv og sletter filer i WebDAV-cachen. |
||
Endre registret |
Deadglyph lagrer konfigurasjonen og kryptert nyttelast i registeret. |
||
Access Token Manipulation |
Deadglyph kan utgi seg for en annen bruker. |
||
Deobfuscate / Decode filer eller informasjon |
Deadglyph dekrypterer krypterte strenger. Shellcode-nedlastingskjeden dekrypterer komponentene og konfigurasjonene. |
||
System binær proxy-utførelse: Rundll32 |
Den første Deadglyph-lasteren utføres ved hjelp av rundll32.exe. |
||
Utførelsesrekkverk: Miljønøkling |
Deadglyph er kryptert med en maskinspesifikk nøkkel hentet fra systemets UUID. |
||
Forringe forsvar: Deaktiver eller endre verktøy |
Shellcode-nedlasteren unngår AMSI-skanning ved å lappe clr.dll i minne . |
||
Reflekterende kodeinnlasting |
Deadglyph laster reflekterende modulene sine ved hjelp av en tilpasset PE-laster. |
||
Discovery |
Systemtjenesteoppdagelse |
A Deadglyph-modulen oppdager tjenester ved å bruke WMI-spørringen VELG * FRA Win32_Service. |
|
Spørringsregister |
Shellcode-nedlastingskjeden spør etter standardnettleseren i registeret. |
||
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. |
||
Systemeier/brukeroppdagelse |
En Deadglyph-modul oppdager brukere med WMI-spørringen VELG * FRA Win32_UserAccount. |
||
Prosessoppdagelse |
En Deadglyph-modul oppdager prosesser ved hjelp av WMI-spørring VELG * FRA Win32_Process. |
||
Oppdagelse av systeminformasjon |
En Deadglyph-modul oppdager systeminformasjon som OS-versjon, stasjoner, miljøvariabler og drivere ved hjelp av WMI-spørringer. |
||
Oppdagelse av programvare |
En Deadglyph-modul oppdager installert programvare ved hjelp av WMI-spørring VELG * FRA Win32_Product. |
||
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 |
Data fra lokalt system |
Deadglyph har en modul for å lese filer. |
|
Command and Control |
Application Layer Protocol: Webprotokoller |
Deadglyph og shellcode-nedlasteren kommuniserer med C&C-serveren via HTTP-protokollen. |
|
Proxy |
Deadglyph og shellcode-nedlasteren kan bruke HTTP-proxy for C&C-kommunikasjon. |
||
Kryptert kanal: symmetrisk kryptografi |
Deadglyph bruker AES for å kryptere C&C-kommunikasjon. |
||
exfiltration |
Eksfiltrering over C2-kanal |
Deadglyph bruker C&C-kanalen for eksfiltrering. |
- SEO-drevet innhold og PR-distribusjon. Bli forsterket i dag.
- PlatoData.Network Vertical Generative Ai. Styrk deg selv. Tilgang her.
- PlatoAiStream. Web3 Intelligence. Kunnskap forsterket. Tilgang her.
- PlatoESG. Karbon, CleanTech, Energi, Miljø, Solenergi, Avfallshåndtering. Tilgang her.
- PlatoHelse. Bioteknologisk og klinisk etterretning. Tilgang her.
- kilde: https://www.welivesecurity.com/en/eset-research/stealth-falcon-preying-middle-eastern-skies-deadglyph/
- : har
- :er
- :ikke
- :hvor
- $OPP
- 1
- 10
- 100
- 11
- 125
- 14
- 15%
- 179
- 180
- 20
- 2012
- 2016
- 2019
- 23
- 25
- 321
- 39
- 41
- 60
- 7
- 75
- 8
- 9
- 91
- a
- evne
- Om oss
- adgang
- tilgjengelighet
- tilgjengelig
- ledsaget
- erverve
- Handling
- aktiv
- aktivister
- Aktiviteter
- aktivitet
- handlinger
- faktisk
- tillegg
- Ytterligere
- avansert
- Fordel
- AES
- Etter
- mot
- Sikter
- Alle
- angivelig
- tillater
- allerede
- også
- an
- analyse
- analysere
- analysert
- og
- En annen
- forventer
- noen
- api
- APIer
- vises
- tilnærming
- APT
- Arab
- Arabiske Emirater
- arkitektur
- ER
- AS
- Montering
- assosiert
- anta
- At
- angripe
- Angrep
- automatisk
- tilgjengelig
- unngå
- tilbake
- backdoor
- basert
- grunnleggende
- BE
- ble
- fordi
- vært
- før du
- være
- tro
- BEST
- skryte
- kroppen
- både
- nett~~POS=TRUNC leseren~~POS=HEADCOMP
- bygget
- men
- by
- cache
- beregnet
- beregningen
- ring
- som heter
- ringer
- Samtaler
- Kampanje
- CAN
- evner
- stand
- hovedstad
- bære
- saken
- saker
- sentrum
- viss
- sertifikat
- kjede
- sjansene
- endring
- Kanal
- tegn
- sjekket
- Sjekker
- valg
- kunde
- nærmere
- kode
- oppsamler
- innsamler
- farge
- COM
- kombinasjon
- Felles
- kommunisere
- kommunisere
- Kommunikasjon
- kommunikasjon
- overbevisende
- komponent
- komponenter
- Omfattet
- består
- kompromiss
- kompromittert
- datamaskin
- gjennomføre
- Konferanse
- selvtillit
- Konfigurasjon
- konfigurert
- tilkoblet
- består
- kontakt
- inneholde
- inneholder
- innhold
- kontekst
- kontinuerlig
- kontrast
- kontroll
- kontrollpanelet
- SELSKAP
- Tilsvarende
- kunne
- kombinert
- opprettet
- skaper
- skaperverket
- skaperen
- Gjeldende
- I dag
- skikk
- Kunder
- mørkere
- dato
- dekryptere
- Misligholde
- Grad
- avhengig
- utplasserings
- Avledet
- beskrive
- beskrevet
- beskrivelse
- detaljer
- oppdaget
- Gjenkjenning
- bestemmes
- utviklet
- Utvikling
- forskjell
- forskjellig
- vanskelig
- direkte
- oppdaget
- oppdager
- Funnet
- distinkt
- diverse
- gjør
- domener
- ikke
- drivere
- stasjoner
- to
- varighet
- under
- dynamisk
- dynamisk
- hver enkelt
- øst
- østlige
- effektivt
- enten
- forhøyet
- innebygd
- emiratene
- ansatt
- anvender
- muliggjør
- omfatte
- kryptert
- kryptering
- Endpoint
- Endpoint sikkerhet
- sikrer
- enhet
- entry
- Miljø
- miljømessige
- miljøer
- feil
- ESET Research
- spionasje
- etablere
- etablere
- anslag
- Eter (ETH)
- Event
- bevis
- tydelig
- undersøkelse
- eksempel
- Eksklusiv
- henrette
- henrettet
- Utfører
- utførende
- gjennomføring
- eksfiltrering
- utstillinger
- finnes
- avslutter
- ekspertise
- eksportere
- forlengelse
- omfattende
- grad
- legge til rette
- tilrettelagt
- Faktisk
- Failure
- falk
- Trekk
- Egenskaper
- Noen få
- Figur
- filet
- Filer
- Endelig
- funn
- Først
- fem
- Fokus
- etter
- Til
- skjema
- format
- Tidligere
- funnet
- Fjerde
- brøkdel
- Rammeverk
- rammer
- fra
- fullt
- funksjon
- funksjonalitet
- funksjoner
- videre
- Dess
- generert
- generasjonen
- få
- statlig
- gresk
- Ground
- Gruppe
- HAD
- hånd
- skje
- hash
- hashet
- hashing
- Ha
- å ha
- her.
- HEX
- Høy
- høy profil
- Uthev
- hindre
- kroker
- vert
- Hosting
- time
- TIMER
- http
- HTTPS
- ID
- identiske
- identifisert
- identifisere
- Idle
- if
- bilde
- umiddelbart
- gjennomføring
- implementert
- redskaper
- importere
- viktig
- in
- I andre
- dyptgående
- utilgjengelige
- inkludert
- inkluderer
- Inkludert
- inkludering
- uavhengig
- indikerer
- info
- informasjon
- Infrastruktur
- iboende
- innledende
- Initiative
- forespørsler
- installasjon
- f.eks
- i stedet
- Intelligens
- Intelligent
- tiltenkt
- interessant
- Interface
- mellommann
- internt
- internasjonalt
- Internet
- Internettilgang
- inn
- fascinerende
- introdusert
- etterforskning
- involvert
- innebærer
- Utstedt
- IT
- DET ER
- selv
- Januar
- Journalister
- Kaspersky
- nøkkel
- nøkler
- Vet
- kunnskap
- kjent
- Språk
- språk
- lansere
- lag
- føre
- Led
- venstre
- Lengde
- brev
- utnyttet
- Bibliotek
- i likhet med
- sannsynligheten
- Sannsynlig
- BEGRENSE
- Begrenset
- linje
- LINK
- knyttet
- Liste
- lister
- laste
- loader
- lasting
- laster
- lokal
- ligger
- logikk
- lenger
- Se
- taper
- lavest
- Hoved
- gjøre
- GJØR AT
- malware
- administrer
- fikk til
- ledelse
- måte
- mange
- kart
- Match
- Kan..
- ment
- måle
- mekanisme
- mekanismer
- Minne
- metode
- Microsoft
- Middle
- Midtøsten
- kunne
- minutter
- blandet
- modifisere
- moduler
- Moduler
- overvåking
- skjermer
- mer
- Videre
- flere
- navn
- oppkalt
- navn
- innfødt
- Naviger
- nødvendig
- nett
- nettverk
- Ny
- Nyeste
- nylig
- Nei.
- bemerkelsesverdig
- spesielt
- note
- nå
- Antall
- få
- innhentet
- forekomme
- of
- tilby
- Tilbud
- ofte
- on
- ONE
- seg
- bare
- opererer
- drift
- drift
- Drift
- operatører
- or
- original
- OS
- Annen
- ellers
- vår
- ut
- Outlook
- produksjon
- enn
- oversikt
- egen
- P&E
- side
- panel
- parametere
- del
- deler
- passerer
- Patches
- patching
- banen
- mønstre
- påvente
- prosent
- utført
- periodisk
- utholdenhet
- plattform
- plato
- Platon Data Intelligence
- PlatonData
- vær så snill
- kontakt
- Point
- poeng
- politisk
- Post
- potensiell
- potensielt
- presis
- tilstedeværelse
- presentere
- presentert
- forebygge
- forhindrer
- tidligere
- primære
- prioritet
- privat
- privilegier
- sannsynligvis
- fortsetter
- prosess
- behandlet
- Prosesser
- Programmering
- programmerings språk
- prosjekt
- ordentlig
- protokollen
- gi
- forutsatt
- tilbydere
- gir
- proxy
- offentlig
- publisert
- formål
- formål
- qatar
- spørsmål
- tilfeldig
- randomisert
- tilfeldig
- område
- heller
- reaktor
- Reader
- Lesning
- mottatt
- mottar
- reduserer
- refererer
- referert
- region
- registrert
- registret
- i slekt
- forbli
- gjenværende
- forblir
- fjerning
- Rapporter
- representerer
- omdømme
- anmode
- forespørsler
- Krever
- forskning
- oppløsning
- ressurs
- Ressurser
- ansvarlig
- REST
- resultere
- resulterende
- retur
- avkastning
- Reuters
- avsløre
- Rolle
- root
- rutine
- rennende
- går
- s
- Sikkerhet
- samme
- San
- så
- skanne
- skanning
- Sekund
- sekunder
- Seksjon
- seksjoner
- sikkerhet
- Sikkerhetsprogramvare
- send
- sender
- forstand
- sendt
- separat
- September
- betjene
- server
- serverer
- tjeneste
- Tjenester
- sett
- sett
- innstillinger
- flere
- deling
- vist
- signert
- signering
- lignende
- på samme måte
- siden
- enkelt
- størrelser
- skies
- liten
- So
- Software
- løsning
- Solutions
- noen
- noe
- sofistikert
- raffinement
- spesielt
- spesielt
- spesifisert
- spyware
- Scene
- starter
- Tilstand
- Stealth
- lagret
- butikker
- String
- struktur
- emne
- abonnement
- senere
- I ettertid
- slik
- foreslår
- egnet
- medfølgende
- støtte
- overgår
- suspendert
- mistenkelig
- system
- Systemer
- bord
- Ta
- ta
- Target
- målrettet
- rettet mot
- mål
- Oppgave
- oppgaver
- Teknisk
- Teknisk analyse
- teknikker
- enn
- Det
- De
- deres
- Dem
- deretter
- Der.
- Disse
- de
- Tredje
- denne
- De
- trussel
- trusler
- tre
- terskel
- Gjennom
- tid
- tidsstempel
- Tittel
- til
- token
- verktøy
- Totalt
- mot
- tradisjonelle
- overføre
- overføres
- behandlet
- utløst
- sant
- SVING
- to
- typen
- typer
- typisk
- ute av stand
- etter
- undergår
- unicode
- unik
- unike egenskaper
- forent
- De forente arabiske emirater
- ukjent
- låse opp
- UNAVNT
- til
- uvanlig
- uønsket
- oppdatert
- oppdateringer
- lastet opp
- upon
- URL
- us
- bruk
- bruke
- brukt
- Bruker
- Brukere
- bruker
- ved hjelp av
- bruke
- bruker
- verdi
- Verdier
- variasjon
- ulike
- Varierende
- versjon
- veldig
- av
- Offer
- virtuelle
- Besøk
- visuelt
- vente
- venter
- var
- we
- web
- var
- Hva
- når
- om
- hvilken
- mens
- Wikipedia
- vinduer
- med
- innenfor
- uten
- XML
- år
- ja
- ennå
- zephyrnet