Lopakodó sólyom, aki Deadglyph-al prédál a közel-keleti égbolton

Lopakodó sólyom, aki Deadglyph-al prédál a közel-keleti égbolton

Forrás csomópont: 2899203

A Közel-Kelet évek óta megőrizte hírnevét a fejlett tartós fenyegetések (APT) termékeny talajaként. A nagy horderejű ügyfelek rendszerein – néhányan ebben a régióban – a gyanús tevékenységek rutinszerű megfigyelése közepette az ESET Research egy nagyon kifinomult és ismeretlen hátsó ajtóra bukkant, amelyet Deadglyph-nak neveztünk el. A nevet a hátsó ajtóban talált tárgyakról kaptuk (pl 0xHALOTTB001-ban is látható REF _Ref111452440 h Táblázat 1
), egy homo jelenlétével párosulvaírásjel támadás. Legjobb tudomásunk szerint ez az első nyilvános elemzés erről a korábban nem dokumentált hátsó ajtóról, amelyet egy jelentős kifinomultságról és szakértelemről felmutató csoport használt. A célzás és a további bizonyítékok alapján a Deadglyph-ot nagy biztonsággal a Stealth Falcon APT csoportnak tulajdonítjuk.

A Deadglyph architektúrája szokatlan, mivel abból áll együttműködő komponensek – az egyik natív x64 bináris, a másik egy .NET összeállítás. Ez a kombináció szokatlan, mert a rosszindulatú programok jellemzően csak egy programozási nyelvet használnak összetevőihez. Ez a különbség jelezheti a két összetevő külön fejlesztését, miközben kihasználja az általuk használt különböző programozási nyelvek egyedi jellemzőit. Különböző nyelveket is fel lehet használni az elemzés akadályozására, mert a kevert kódban nehezebb navigálni és hibakeresni.

A hagyományos backdoor parancsok nincsenek implementálva a backdoor binárisban; ehelyett dinamikusan fogadja azokat a parancs- és vezérlőszervertől további modulok formájában. Ez a hátsó ajtó számos olyan képességgel is rendelkezik, hogy elkerülje az észlelést.

Ebben a blogbejegyzésben közelebbről megvizsgáljuk a Deadglyph-et, és technikai elemzést adunk erről a hátsó ajtóról, céljáról, és néhány további összetevőről, amit szereztünk. A Deadglyph-tal kapcsolatos eredményeinket is bemutatjuk a LABScon 2023 konferencián.

A blogbejegyzés legfontosabb pontjai:

  • Az ESET Research felfedezett egy szokatlan architektúrájú, kifinomult hátsó ajtót, amelyet Deadglyph-nak neveztünk el.
  • A fő összetevők egy gépspecifikus kulccsal vannak titkosítva.
  • A hagyományos backdoor parancsokat a C&C szervertől kapott további modulokon keresztül valósítják meg.
  • A sok modul közül hármat szereztünk be – folyamatkészítőt, fájlolvasót és információgyűjtőt.
  • A Deadglyph-ot a Stealth Falcon csoportnak tulajdonítjuk.
  • Ezenkívül találtunk egy kapcsolódó shellcode letöltőt; feltételezzük, hogy potenciálisan felhasználható a Deadglyph telepítésére.

Az elemzett beszivárgás áldozata egy közel-keleti kormányzati egység, amelyet kémkedési célból kompromittáltak. A VirusTotalon talált kapcsolódó minta is ebből a régióból, konkrétan Katarból került fel a fájlvizsgáló platformra. A megcélzott régiót a térképen ábrázoltuk REF _Ref143614671 h Ábra 1
.

Deadglyph ábra_01
1. ábra: Deadglyph viktimológia; a kapcsolódó mintát Katarból töltötték fel a VirusTotalra (sötétebb színben)

A Stealth Falcon (más néven Project Raven vagy FruityArmor) egy fenyegető csoport, amely az Egyesült Arab Emírségekhez kötődik. MITER szerint. A 2012 óta működő Stealth Falcon köztudottan politikai aktivisták, újságírók és másként gondolkodók célpontja a Közel-Keleten. Először fedezte fel és írta le Citizen Lab, amely egy elemzés egy 2016-os kémprogramok elleni kampányról.

2019 januárjában a Reuters közzétett egy vizsgálati jelentés a Project Ravenről, egy olyan kezdeményezésről, amely állítólag korábbi NSA-alkalmazottakat alkalmaz, és ugyanolyan típusú célpontokat céloz meg, mint a Stealth Falcon. E két jelentés alapján, amelyek azonos célpontokra és támadásokra utalnak, az Amnesty International arra a következtetésre jutott (bemutatott REF _Ref144978712 h Ábra 2
), hogy a Stealth Falcon és a Project Raven valójában ugyanaz a csoport.

Deadglyph 2. ábra
2. ábra. Claudio Guarnieri összekapcsolta a Stealth Falcont a Raven projekttel

2019 szeptemberében mi közzétett kutatás a Stealth Falconnak tulajdonított hátsó ajtón, amely szokatlan technikát használt, Háttérben futó intelligens átviteli szolgáltatás, a C&C kommunikációhoz. Most felfedjük a Stealth Falcon kémkedési eszközkészletének feltehetően legújabb kiegészítőjének mélyreható elemzésének eredményét.

Deadglyph hátsó ajtó

A Deadglyph betöltési lánca több összetevőből áll, amint az ábrán látható REF _Ref144978760 h Ábra 3
. A kezdeti összetevő egy rendszerleíró shellcode betöltő, amely a rendszerleíró adatbázisból tölti be a shellkódot. Ez a kivont shellkód pedig betölti a hátsó ajtó natív x64-es részét – az Executort. A végrehajtó ezt követően betölti a hátsó ajtó .NET részét – az Orchestratort. Figyelemre méltó, hogy a rendszer lemezén, mint fájl egyetlen összetevője a kezdeti komponens, amely Dynamic Link Library (DLL) formájában van. A fennmaradó összetevők titkosítva vannak, és egy bináris rendszerleíró értékben tárolódnak.

Deadglyph ábra_02
3. ábra: Deadglyph betöltő lánc összetevői

Bár a kezdeti kompromisszumos vektor pontos módszere még nincs meghatározva, az a gyanúnk, hogy egy telepítő komponens vesz részt a további komponensek telepítésében és a rendszeren belüli állandóság megteremtésében.

A szakasz további részében az egyes összetevőket elemezzük.

Registry shellcode betöltő

A Deadglyph kezdeti komponense egy apró DLL, egyetlen exporttal, név szerint 1. Ez a komponens továbbra is használatban van Windows Management Instrumentation (WMI) esemény-előfizetés és rendszerleíró shellkód betöltőként szolgál. A parancssoron keresztül hajtják végre rundll32 C:WINDOWSSystem32pbrtl.dll,#1.

A rendszerleíró shellkód betöltő a Windows rendszerleíró adatbázisában tárolt titkosított shellkód elérési útjának visszafejtésével kezdi meg működését az RC4 segítségével. Gyanítjuk, hogy az út minden áldozat számára egyedi; az itt elemzett esetben a rendszerleíró adatbázis elérési útja a következő volt:

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

A gyökér regisztrációs kulcs vagy hklm or HKCU, attól függően, hogy az aktuális folyamat emelt szintű jogosultságokkal fut-e vagy sem. Ugyanez a logika megtalálható a további komponensekben is.

Ezt követően a betöltő levezet egy gépspecifikus RC4 kulcsot a rendszer UUID azonosítójával, amelyet a nyers SMBIOS firmware táblázat. Ezzel a kulccsal betölti, visszafejti, majd végrehajtja a shellkódot. Fontos kiemelni, hogy ez a kulcs-levezetési megközelítés biztosítja, hogy a megfelelő visszafejtés ne történjen meg, ha a betöltőt egy másik számítógépen hajtják végre.

Érdekes módon a betöltő egy jelzővel is konfigurálható .adat szakaszban, hogy keménykódos kulcsot használjon a shellkód visszafejtéséhez a gépspecifikus kulcs helyett.

Egy homoglifa támadást észleltünk, amely utánozza a Microsoft Corporationt a VERZIÓ INFORMÁCIÓ ennek és más PE-komponenseknek az erőforrása. Ez a módszer különálló Unicode-karaktereket alkalmaz, amelyek vizuálisan hasonlónak tűnnek, de ebben az esetben nem azonosak az eredeti karakterekkel, különösen a görög nagybetűt San (U+03FA, Ϻ) és a cirill kisbetűt (U+043E, о) Ϻicrоsоft Corpоarányоn.

Registry shellkód

A két részből álló rendszerleíró shellkód egy visszafejtési rutinból és egy titkosított törzsből áll. Először is a visszafejtő rutin a titkosított törzs minden egyes bájtját eggyel balra forgatja (ROL 0x01). Ezt követően az irányítás átkerül erre a visszafejtett testre. A dekódolt törzs egy PE betöltőből és egy PE fájlból áll, ez utóbbi az Executor, amely a hátsó ajtó natív részét képviseli. Ez a betöltő felelős a kapcsolódó PE-fájl elemzéséért és betöltéséért.

végrehajtó

Az Executor a Deadglyph hátsó ajtó natív x64-es része, amely a következőket teszi:

  • betölti a konfigurációját,
  • inicializálja a .NET futási környezetet,
  • betölti a hátsó ajtó beágyazott .NET részét (az Orchestratort), és
  • az Orchestrator könyvtáraként működik.

Először is két alapértelmezett konfiguráció van beágyazva a .adat szakasz AES-vel dekódolt. A konfigurációk különféle paramétereket tartalmaznak, beleértve a titkosítási kulcsokat, a biztonsági és kijátszási beállításokat, valamint a következő összetevő belépési pontját.

A kezdeti végrehajtás során ez a két alapértelmezett konfiguráció a Windows rendszerleíró adatbázisában tárolódik, ahonnan a következő futtatások során betöltődik, lehetővé téve a frissítések végrehajtását. A rendszerleíró adatbázis elérési útja minden konfigurációhoz a következő formátumban jön létre:

{HKCU|HKLM}SoftwareClassesCLSID{ }(alapértelmezett)

egy generált GUID, amely minden áldozat számára egyedi.

Ezt követően a .NET futási környezet inicializálódik, majd az Executor RC4 visszafejti az Orchestrator néven ismert backdoor .NET részét. Az Orchestrator belül található .rsrc szakaszában a Végrehajtó. A konfiguráció az Orchestrator végrehajtási módját adja meg belépési pontként. Ezen túlmenően egy különálló struktúra is rendelkezésre áll, amely megkönnyíti a végrehajtó funkcióihoz való hozzáférést az Orchestrator számára.

Az Orchestrator elindítása után az Executor az Orchestrator támogató könyvtáraként működik. Az Executor számos érdekes funkciót tartalmaz; Ezek közül néhányat a következő részben ismertetünk, az Orchestrator általi felhasználásuk és a további betöltött modulok összefüggésében.

Orchestrator

A .NET-ben írt Orchestrator a Deadglyph hátsó ajtó fő összetevője. Ennek az összetevőnek az elsődleges szerepe a kommunikáció létrehozása a C&C szerverrel és a parancsok végrehajtása, amelyet gyakran a végrehajtó közvetítő szerepe tesz lehetővé. Az előző komponensekkel ellentétben az Orchestrator .NET Reactort alkalmazva homályos. Belsőleg a hátsó ajtót ún ügynök, amely a kliens rész általános elnevezése a különféle utókihasználási keretrendszerekben.

Inicializálás

Az Orchestrator először az erőforrásokból tölti be a konfigurációját és két beágyazott modulját, mindegyikhez saját konfigurációkészlet tartozik. Ezek a források Kienged tömörített és AES titkosítva. Olyan azonosító hivatkozik rájuk, amely az SHA-1 kivonatolt erőforrásnévvé. Ezekről a forrásokról áttekintést adunk REF _Ref111452440 h Táblázat 1
.

1. táblázat Orchestrator erőforrásai

 

Forrás neve

azonosító (tizedes)

ID (hex)

Leírás

43ed9a3ad74ed7ab74c345a876b6be19039d4c8c

2570286865

0x99337711

Orchestrator konfiguráció.

3a215912708eab6f56af953d748fbfc38e3bb468

3740250113

0xDEEFB001

Hálózati modul.

42fb165bc9cf614996027a9fcb261d65fd513527

3740250369

0xDEEFB101

Hálózati modul konfigurációja.

e204cdcf96d9f94f9c19dbe385e635d00caaf49d

3735924737

0xDEADB001

Időzítő modul.

abd2db754795272c21407efd5080c8a705a7d151

3735924993

0xDEADB101

Időzítő modul konfigurációja.

Az Orchestrator és a beágyazott modulok konfigurációja XML formátumban tárolódik. Az Orchestrator konfigurációjának példája látható REF _Ref111452611 h
Ábra 4
.

Deadglyph ábra_04
4. ábra Orchestrator konfigurációja

Az Orchestrator konfigurációs bejegyzéseinek leírása itt látható REF _Ref111452782 h Táblázat 2
.

2. táblázat: Orchestrator konfigurációs bejegyzései

Kulcs

Leírás

k


A folyamatos modulkonfigurációkhoz használt AES-kulcs.

a


A hálózati modul inicializálási módszerének neve.

b


Ismeretlen hálózati modullal kapcsolatos jelző.

c


Az időzítő modul inicializálási módszerének neve.

d


Jelző, amely lehetővé teszi a gépspecifikus AES-kulcs (rendszer-UUID) használatát az erőforrásokhoz.

p


Hálózati modul erőforrás-azonosítója.

t


Időzítő modul erőforrásazonosítója.

Az erőforrás-összetevők betöltése után több szál jön létre a különböző feladatok végrehajtásához. Ezen szálak egyike a környezeti ellenőrzések elvégzéséért felelős, ez a funkció az Executorban van megvalósítva. Egy másik szál a C&C szerverrel való időszakos kommunikáció létrehozására irányul, lehetővé téve a parancsok lekérését. Végül egy három szálból álló készletet használnak a vett parancsok végrehajtására, majd a generált kimenetek visszaküldésére a C&C szerverre.

A környezet-ellenőrző szál figyeli a futó folyamatokat, hogy azonosítsa a nem kívántakat. Ez a szál a folyamatnevek két különálló listájával működik. Ha a rendszer az első listán szereplő folyamatot észlel, a C&C kommunikáció és a parancsvégrehajtás szünetel mindaddig, amíg a nem kívánt folyamat megszűnik. Ha talál egyezést a második listán lévő bármely folyamatra, a hátsó ajtó azonnal kilép, és eltávolítja magát.

Egyik lista sem volt konfigurálva az elemzett példányban, így nem tudjuk, hogy jellemzően milyen folyamatokat lehet ellenőrizni; úgy gondoljuk, hogy valószínűleg az a célja, hogy elkerülje azokat az elemző eszközöket, amelyek észlelhetik a gyanús tevékenységeket, és a hátsó ajtó felfedezéséhez vezethetnek.

közlés

Az Orchestrator két beágyazott modult használ a C&C kommunikációhoz – az időzítőt és a hálózatot. Az Orchestratorhoz hasonlóan ezeket a modulokat is elhomályosítja a .NET Reactor. Mindkét modul konfigurációját az Orchestrator biztosítja. Az Orchestratoron belül a modulok előre beállított konfigurációja szerepel; opcionálisan az Orchestrator frissített konfigurációs verziót is betölthet a rendszerleíró adatbázisból:

{HKCU|HKLM}SoftwareClassesCLSID{ }

A hátsó ajtó egy érdekes biztonsági intézkedést tartalmaz a kommunikációhoz kapcsolódóan. Ha a hátsó ajtó nem tud kapcsolatot létesíteni a C&C szerverrel egy előre meghatározott küszöbértéket meghaladó ideig, amely az Executorban van konfigurálva, akkor az öneltávolító mechanizmus aktiválódik. Ez az időküszöb órában van megadva, és a vizsgált esetben egy órában került meghatározásra.

Ez a megközelítés kettős célt szolgál. Egyrészt megakadályozza a redundáns hálózati kérések generálását egy elérhetetlen szerver felé. Másrészt csökkenti a későbbi észlelés esélyét, ha a kezelők elveszítik az irányítást a hátsó ajtó felett.

Időzítő modul

Ez a kis modul végrehajtja a megadott visszahívást konfigurálható időközönként. Az Orchestrator a hálózati modullal együtt használja a C&C szerverrel való időszakos kommunikációhoz. A hálózati naplókban észlelhető minták létrehozásának megakadályozása érdekében a végrehajtási intervallumot véletlenszerűvé kell tenni, a konfigurációban megadott százalékos arány alapján. Az elemzett esetben az intervallumot 20 percre állítottuk be, a véletlenszerűség miatt ±XNUMX%-os variációt vezettünk be.

Egy másik módszer az észlelhető hálózati minták elkerülésére az időszakos kommunikáció során a C&C szervernek küldött kérések generálása. Ez az Executorban megvalósított mechanizmus magában foglalja a változó hosszúságú, véletlenszerű bájtokból álló kitöltést a kéréseken belül, ami különböző méretű kéréseket eredményez.

Hálózati modul

A hálózati modul kommunikációt valósít meg a konfigurációjában megadott C&C szerverekkel. Adatokat küldhet a C&C szervernek HTTP(S) POST kérések használatával. Nevezetesen, számos mechanizmust kínál a proxy konfigurációs részleteinek megszerzésére. Ez a funkció arra utal, hogy olyan környezetekre kell összpontosítani, ahol nem érhető el közvetlen internet-hozzáférés.

A visszafejtett (és megszépített) konfiguráció példája látható REF _Ref144978805 h Ábra 5
.

Deadglyph ábra_06
5. ábra Hálózati modul konfigurációja

A konfigurációs bejegyzések a hálózati kommunikációval kapcsolatos részleteket tartalmaznak – C&C URL-ek, HTTP User-Agent és opcionálisan egy proxykonfiguráció.

A C&C szerverrel való kommunikáció során a HTTPS alatt titkosított tartalommal rendelkező egyéni bináris protokollt használnak.

Parancsok

Az Orchestrator parancsokat kap a C&C szervertől feladatok formájában, amelyek végrehajtásra várnak. Háromféle feladatot dolgoznak fel:

  • Zenekari feladatok,
  • Végrehajtói feladatok, ill
  • Feladatok feltöltése.

Az első két típus a C&C szervertől érkezik, a harmadik pedig belsőleg jön létre a parancsok és hibák kimenetének feltöltéséhez.

Zenekari feladatok

Az Orchestrator feladatok lehetőséget kínálnak a Hálózati és Időzítő modulok konfigurációjának kezelésére, valamint a függőben lévő feladatok törlésére. Az Orchestrator feladatok áttekintése itt látható REF _Ref111101783 h Táblázat 3
.

3. táblázat Orchestrator feladatok

típus

Leírás

0x80


Állítsa be a hálózati és időzítő modulok konfigurációját.

0x81


Szerezze meg a hálózati és időzítő modulok konfigurációját.

0x82


Feladat megszakítása.

0x83


Töröljön minden feladatot.

Végrehajtói feladatok

A végrehajtói feladatok lehetőséget kínálnak a hátsó ajtó kezelésére és további modulok végrehajtására. Figyelemre méltó, hogy a hagyományos hátsó ajtó funkció önmagában nincs jelen a binárisban. Ehelyett ezeket a funkciókat a C&C szervertől kapja meg PE fájlok vagy shellkód formájában. A hátsó ajtóban rejlő lehetőségek teljes mértéke ismeretlen marad ezen kiegészítő modulok nélkül, amelyek hatékonyan felszabadítják valódi képességeit. A modulfeladatok áttekintése itt látható REF _Ref117677179 h Táblázat 4
, amely részleteket tartalmaz a néhány azonosított modulról. Hasonlóképpen, REF _Ref117677188 h Táblázat 5
áttekintést nyújt a Végrehajtóhoz kapcsolódó irányítási feladatokról.

4. táblázat Végrehajtói feladatok – modulok

típus

Leírás

0x??–0x63


ismeretlen

0x64


Fájl olvasó

0x65


ismeretlen

0x66


ismeretlen

0x67


ismeretlen

0x68


ismeretlen

0x69


Folyamat létrehozója

0x6A


ismeretlen

0x6B


ismeretlen

0x6C


Infogyűjtő

0x6D


ismeretlen

0x6E


ismeretlen

5. táblázat Végrehajtói feladatok – menedzsment

típus

Leírás

0x6F-0x76

Nincs implementálva

0x77

Állítsa be a végrehajtó konfigurációját

0x78

Töltse le az Executor konfigurációját

0x79-0x7C

Nincs implementálva

0x7D

Frissítések

0x7E

Kilépés

0x7F

Uninstall

Az Executor konfigurációját beállító parancs megváltoztathatja a következőket:

  • nem kívánt folyamatok listája,
  • a C&C kommunikációs meghibásodás időküszöbe, és
  • határidő a további modulok végrehajtására.
Modulok

Sikerült három egyedi modult beszereznünk a C&C szerverről, amelyek mindegyike más Executor feladattípusnak felel meg, ahogy az a REF _Ref117677179 h Táblázat 4 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200650066003100310037003600370037003100370039000000
. A rendelkezésre álló információk alapján úgy becsüljük, hogy összesen kilenc-tizennégy modul létezik. Mivel a modulok valójában hátsó ajtó parancsok, egyetlen alapvető műveletet kell végrehajtani, majd opcionálisan visszaadni a kimenetüket. A kapott modulok DLL-ek, egyetlen névtelen exporttal (sorrendi 1), amelyben feloldják a szükséges API függvényeket, és meghívják a fő függvényt.

Végrehajtáskor a modulok API-feloldó funkcióval rendelkeznek, amely képes feloldani a Windows API-kat és az egyéni végrehajtó API-kat. A Windows API-kra egy duplaszó-kivonat hivatkozik, amelyet az API nevéből és a DLL-ből számítanak ki. A kis hash értékeket (<41) a program speciálisan kezeli, az Executor API függvényre hivatkozva. Az Executor API összesen 39 olyan funkciót tartalmaz, amelyek a modulok számára elérhetők. Ezek a funkciók számos műveletre vonatkoznak, beleértve:

  • fájlműveletek,
  • titkosítás és hash,
  • tömörítés,
  • PE töltés,
  • hozzáférés Token megszemélyesítéshez, és
  • hasznosság.

A szakasz további részében a kapott modulokat ismertetjük.

Folyamat létrehozója

Modulok 0x69 a megadott parancssort új folyamatként hajtja végre, és az eredményül kapott kimenetet visszaküldi az Orchestratornak. A folyamat egy másik felhasználó alatt is létrehozható, és a végrehajtási ideje korlátozható. Nevezetesen, szokatlan Job API a modul funkciójában használatos.

Ez a modul a parancssorral lett kiszolgálva cmd.exe /c feladatlista /v.

Feltételezzük, hogy ez egy automatikusan kiadott üresjárati parancsként szolgál, miközben az operátorok várnak valami érdekes eseményre a kompromittált számítógépen.

Infogyűjtő

Modulok 0x6C WMI-lekérdezéseken keresztül kiterjedt információkat gyűjt a számítógépről, és visszaküldi az Orchestratornak. A következőkről gyűjtenek információkat:

  • operációs rendszer,
  • hálózati adapterek,
  • telepített szoftver,
  • meghajtók,
  • szolgáltatások,
  • vezetők,
  • folyamatok,
  • felhasználók számára,
  • környezeti változók, és
  • biztonsági szoftver.
Fájl olvasó

Modulok 0x64 beolvassa a megadott fájlt, és visszaadja a tartalmat az Orchestratornak. Opcionálisan törölheti a fájlt az olvasás után.

Láttuk, hogy ezt a modult használják az áldozat Outlook-adatfájljának lekérésére

c: Felhasználók AppDataLocalMicrosoftOutlookoutlook.ost.

Lánc shellkód letöltővel

A Deadglyph vizsgálata során egy kétes, lejárt tanúsítvánnyal aláírt, időbélyegzős ellenjegyzés nélküli CPL fájlra bukkantunk, amelyet Katarból töltöttek fel a VirusTotalra. Közelebbről megvizsgálva nyilvánvalóvá vált, hogy ez a CPL-fájl többlépcsős shellkód-letöltőként működött, megosztva bizonyos kódhasonlításokat a Deadglyph-fel. A rakodási lánc az ábrán látható REF _Ref143693067 h Ábra 6
.

Deadglyph ábra_03
6. ábra Shellcode letöltő betöltési lánc

Kezdeti formájában, amely az első szakaszként szolgál, ez a fájl azt feltételezi, hogy a .cpl kiterjesztésű (Vezérlőpult-fájl), és dupla kattintással kell végrehajtani. Az ilyen módon történő végrehajtáskor a beágyazott shellkód XOR dekódoláson esik át, és a futó folyamatokat ellenőrzik, hogy azonosítsák a megfelelő hosztfolyamatot a későbbi befecskendezéshez.

If avp.exe (a Kaspersky végpont biztonsági folyamata) fut, %windir%system32UserAccountBroker.exe használt. Ellenkező esetben az alapértelmezett böngésző kerül felhasználásra. Ezután felfüggesztett állapotban hozza létre a gazdagép folyamatot, beadja a shellkódot a fő szál eltérítésével, és folytatja a szálat.

A második szakasz, a shellkód két részből áll. A shellkód első része feloldja az API-kivonatokat a Deadglyph-ban használt egyedi hash-számítási technikával, és visszafejti a folyamatnevekkel rendelkező karakterláncokat. Elindít egy öntörlő szálat, amelynek feladata az első szakasz fájljának felülírása, majd törlése. Ezt követően a shellkód megvizsgálja az éppen aktív folyamatokat, megcélozva egy biztonsági megoldást.

Ha a megadott folyamatok bármelyike ​​észlelhető, a shellkód létrehoz egy alvó szálat a legalacsonyabb prioritású (THREAD_PRIORITY_IDLE), és lehetővé teszi, hogy 60 másodpercig aktív maradjon, mielőtt leállítaná a működését. Ezt az intervallumot valószínűleg elővigyázatossági intézkedésként alkalmazzák a biztonsági megoldások által használt bizonyos észlelési mechanizmusok elkerülése érdekében. Végül a shellkód elindítja kódja második részének végrehajtását.

A shellkód második része betölt egy beágyazott PE fájlt a harmadik fokozattal, és meghívja az exportálást sorszámmal 1.

A harmadik szakasz, a DLL, .NET-betöltőként szolgál, és tartalmazza a hasznos terhet .rsrc szakasz.

A hasznos teher betöltéséhez a .NET futási környezet inicializálva van. A .NET inicializálása során két érdekes technikát hajtanak végre, amelyek látszólag a Windows elkerülésére szolgálnak Antimalware Scan Interface (AMSI) vizsgálat:

  • A .NET betöltő ideiglenesen beköti a GetModuleHandleW import a betöltött clr.dll, hívás közben ICorRuntimeHost::Start. A horog megváltoztatja a visszatérési értéket, amikor GetModuleHandleW -val hívják NULL. Egy mutatót ad vissza egy üres PE-re, szakaszok nélkül.
  • Ezután finoman foltozza a AmsiInitialize import név karakterláncot a .rdata szakasza a betöltött clr.dll nak nek amsiiinicializálni.

A negyedik szakasz egy .NET-szerelvény, amelyet ConfuserEx-el homályosítanak, és amely shellkód letöltőként szolgál. Először is XOR-dekódolja a konfigurációját XML formátumban az erőforrásaiból. A kibontott konfiguráció megszépített változatát mutatjuk be REF _Ref143695453 h Ábra 7
. A konfigurációs bejegyzések a hálózati kommunikációval és a blokkolt folyamatokkal kapcsolatos részleteket tartalmaznak.

Deadglyph ábra_05
7. ábra Shellcode letöltő konfigurációja

A folytatás előtt ellenőrzi a futó folyamatokat a konfigurációban szereplő blokkolt folyamatok listájával. Ha egyezést észlel, a végrehajtás leáll. Fontos megjegyezni, hogy az elemzett példányban ez a tiltólista nem volt beállítva.

Ezután HTTP GET kérést küld a C&C szervernek, hogy lekérjen néhány shellkódot a konfigurációban megadott paraméterek (URL, User-Agent és opcionálisan Proxy) használatával. Sajnálatos módon a vizsgálatunk során semmilyen shellkódot nem tudtunk megszerezni a C&C szerverről. Mindazonáltal feltételezzük, hogy a letöltött tartalom potenciálisan a Deadglyph telepítőjeként szolgálhat.

Ezt követően a letöltött shellkód egy újonnan létrehozott szálon belül fut le. Miután megvárta, amíg a shellcode szál befejezi a végrehajtást, a shellcode letöltő eltávolítja a könyvtárban található összes fájlt %WINDIR%ServiceProfilesLocalServiceAppDataLocalTempTfsStoreTfs_DAV.

Végül megpróbálja törölni magát 20 másodperc elteltével a következő paranccsal, mielőtt befejezi a műveletet és kilép:

cmd.exe választás /CY /N /DY /T 20 & Del /f /q

Ennek az öntörlésnek nincs értelme ebben a láncban. Ez annak a ténynek köszönhető, hogy a shellkód letöltő a böngészőben vagy a rendszerfolyamatban fut le a beadás után, nem pedig független végrehajtható fájlként. Sőt, a kezdeti fájlt a második szakasz már törölte. Ez a megfigyelés azt sugallja, hogy a shellkód-letöltő nem feltétlenül a lánc kizárólagos hasznos terhelése, hanem külön-külön is használható más műveletekben.

Következtetés

Felfedeztük és elemeztük a Stealth Falcon csoport által használt kifinomult hátsó ajtót, amelyet Deadglyph-nak neveztünk el. Szokatlan architektúrájú, hátsó ajtó képességeit pedig a C&C biztosítja további modulok formájában. Ebből a modulból hármat sikerült megszereznünk, feltárva a Deadglyph teljes képességeinek töredékét.

Nevezetesen, a Deadglyph számos ellenérzékelési mechanizmussal büszkélkedhet, beleértve a rendszerfolyamatok folyamatos figyelését és a véletlenszerű hálózati minták megvalósítását. Ezenkívül a hátsó ajtó képes önmagát eltávolítani, hogy bizonyos esetekben minimálisra csökkentse az észlelésének valószínűségét.

Ezenkívül a vizsgálatunk egy lenyűgöző többlépcsős shellkód-letöltő lánc felfedezéséhez vezetett a VirusTotalon. Azt gyanítjuk, hogy ez a letöltőlánc valószínűleg a Deadglyph telepítési folyamatában hasznosul.

Ha bármilyen kérdése van a WeLiveSecurity-n közzétett kutatásunkkal kapcsolatban, forduljon hozzánk a következő címen veszélyintel@eset.com.
Az ESET Research privát APT intelligenciajelentéseket és adatfolyamokat kínál. Ha bármilyen kérdése van a szolgáltatással kapcsolatban, keresse fel a ESET Threat Intelligence cimre.

IoCs

Fájlok

SHA-1

Filename

Érzékelés

Leírás

C40F1F46D230A85F702DAA38CFA18D60481EA6C2

pbrtl.dll

Win64/Deadglyph.A

Registry Shellcode Loader.

740D308565E215EB9B235CC5B720142428F540DB

N / A

Win64/Deadglyph.A

Deadglyph Backdoor – Végrehajtó.

1805568D8362A379AF09FD70D3406C6B654F189F

N / A

MSIL/Deadglyph.A

Deadglyph Backdoor – Orchestrator.

9CB373B2643C2B7F93862D2682A0D2150C7AEC7E

N / A

MSIL/Deadglyph.A

Orchestrator hálózati modul.

F47CB40F6C2B303308D9D705F8CAD707B9C39FA5

N / A

MSIL/Deadglyph.A

Orchestrator Timer modul.

3D4D9C9F2A5ACEFF9E45538F5EBE723ACAF83E32

N / A

Win64/Deadglyph.A.gen

Folyamat létrehozó modul.

3D2ACCEA98DBDF95F0543B7C1E8A055020E74960

N / A

Win64/Deadglyph.A

Fájlolvasó modul.

4E3018E4FD27587BD1C566930AE24442769D16F0

N / A

Win64/Deadglyph.A

Infogyűjtő modul.

7F728D490ED6EA64A7644049914A7F2A0E563969

N / A

Win64/Injector.MD

A shellkód letöltő lánc első szakasza.

tanúsítványok

Sorozatszám

00F0FB1390F5340CD2572451D95DB1D92D

Hüvelykujj

DB3614DAF58D041F96A5B916281EA0DC97AA0C29

Tárgy CN

RHM LIMITED

Tárgy O

RHM LIMITED

Alany L

St. Albans

Alany S

Hertfordshire

Tárgy C

GB

E-mail

rhm@rhmlimited[.]co.uk

Től érvényes

2021-03-16 00:00:00

Érvényes

2022-03-16 23:59:59

C&C szerverek

IP

Domén

Először látott

Megjegyzés

185.25.50[.]60

chessandlinkss[.]com

2021-08-25

Deadglyph C&C szerver.

135.125.78[.]187

easymathpath[.]com

2021-09-11

Deadglyph C&C szerver.

45.14.227[.]55

joinushealth[.]com

2022-05-29

Shellcode letöltő C&C szerver.

MITER ATT&CK technikák

Ez a táblázat felhasználásával készült 13 verzió a MITER ATT&CK keretrendszer.

taktika

ID

Név

Leírás

Erőforrás-fejlesztés

T1583.001

Infrastruktúra megszerzése: Domain

A Stealth Falcon domaineket regisztrált a C&C szerverekhez és kód-aláíró tanúsítvány beszerzéséhez.

T1583.003

Infrastruktúra beszerzése: Virtuális privát szerver

A Stealth Falcon VPS tárhelyszolgáltatókat használt a C&C szerverekhez.

T1587.001

Fejlesztési képességek: Malware

A Stealth Falcon egyedi kártevőket fejlesztett ki, beleértve az egyéni betöltőket és a Deadglyph hátsó ajtót.

T1588.003

Képességek beszerzése: Kód-aláíró tanúsítványok

A Stealth Falcon kód-aláíró tanúsítványt kapott.

Végrehajtás

T1047

Windows Management Instrumentation

A Deadglyph WMI-t használ a betöltési lánc végrehajtásához.

T1059.003

Parancs- és parancsfájl értelmező: Windows Command Shell

Shellcode letöltő használja cmd.exe hogy törölje magát.

T1106

Natív API

Deadglyph modult használ CreateProcessW és a CreateProcessAsUserW API-funkciók a végrehajtáshoz.

T1204.002

Felhasználói végrehajtás: rosszindulatú fájl

A shellkód letöltő lánc megköveteli a felhasználótól, hogy duplán kattintsa, és végrehajtsa.

Kitartás

T1546.003

Esemény által kiváltott végrehajtás: Windows Management Instrumentation esemény-előfizetés

A kezdeti Deadglyph betöltő WMI-esemény-előfizetés használatával megmarad.

Védelmi kijátszás

T1027

Elhomályosított fájlok vagy információk

A Deadglyph összetevői titkosítva vannak. A Deadglyph Orchestratort és a beágyazott modulokat a .NET Reactor elhomályosítja.

A shellkód-letöltőt a ConfuserEx zavarja.

T1070.004

Jelző eltávolítása: Fájl törlése

A Deadglyph képes eltávolítani magát.

A shellkód letöltő lánc törli magát, és törli a WebDAV gyorsítótárban lévő fájlokat.

T1112

Módosítsa a nyilvántartást

A Deadglyph a beállításjegyzékben tárolja a konfigurációját és a titkosított rakományt.

T1134

Access Token Manipulation

A Deadglyph kiadhatja magát egy másik felhasználónak.

T1140

Fájlok vagy információk deobfuszkálása/dekódolása

A Deadglyph visszafejti a titkosított karakterláncokat.

A shellkód letöltő lánc visszafejti összetevőit és konfigurációit.

T1218.011

Rendszer bináris proxy végrehajtása: Rundll32

A kezdeti Deadglyph betöltő a következővel kerül végrehajtásra rundll32.exe.

T1480.001

Végrehajtási korlátok: Környezetvédelmi kulcsok

A Deadglyph titkosítása a rendszer UUID-ből származó, gépspecifikus kulccsal történik.

T1562.001

Csökkentse a védelmet: tiltsa le vagy módosítsa az eszközöket

A shellcode letöltő elkerüli a javítással végzett AMSI-vizsgálatot clr.dll emlékül .

T1620

Fényvisszaverő kód betöltése

A Deadglyph reflektíven betölti moduljait egyéni PE betöltő segítségével.

Felfedezés

T1007

Rendszerszolgáltatás felderítése

A A Deadglyph modul a WMI-lekérdezés segítségével fedezi fel a szolgáltatásokat SELECT * FROM Win32_Service.

T1012

Regiszter lekérdezése

A shellkód letöltő lánc lekérdezi az alapértelmezett böngésző beállításjegyzékét.

T1016

A rendszer hálózati konfigurációjának felderítése

A Deadglyph modul WMI-lekérdezések segítségével fedezi fel a hálózati adaptereket SELECT * FROM Win32_NetworkAdapter és a SELECT * FROM Win32_NetworkAdapterConfiguration ahol InterfaceIndex=%d.

T1033

Rendszertulajdonos/felhasználó felfedezése

A Deadglyph modul a WMI-lekérdezéssel fedezi fel a felhasználókat SELECT * FROM Win32_UserAccount.

T1057

Felfedezés

A Deadglyph modul WMI-lekérdezés segítségével fedezi fel a folyamatokat SELECT * FROM Win32_Process.

T1082

Rendszerinformációk felfedezése

A Deadglyph modul WMI-lekérdezések segítségével fedezi fel a rendszerinformációkat, például az operációs rendszer verzióját, a meghajtókat, a környezeti változókat és az illesztőprogramokat.

T1518

Szoftver felfedezés

A Deadglyph modul WMI-lekérdezés segítségével fedezi fel a telepített szoftvert SELECT * FROM Win32_Product.

T1518.001

Szoftverfelderítés: Biztonsági szoftverek felfedezése

A Deadglyph modul WMI-lekérdezések segítségével fedezi fel a biztonsági szoftvereket SELECT * FROM AntiVirusProduct, SELECT * FROM AntiSpywareProduct és a SELECT * FROM FirewallProduct.

A shellkód letöltő lánc ellenőrzi a futó folyamatokat a biztonsági megoldás érdekében.

Gyűjtemény

T1005

Adatok a helyi rendszerből

A Deadglyph rendelkezik egy modullal a fájlok olvasására.

Vezetési és Irányítási

T1071.001

Alkalmazási réteg protokoll: Web Protocols

A Deadglyph és a shellcode letöltő HTTP protokollon keresztül kommunikál a C&C szerverrel.

T1090

meghatalmazott

A Deadglyph és a shellcode letöltő HTTP-proxyt használhat a C&C kommunikációhoz.

T1573.001

Titkosított csatorna: Szimmetrikus kriptográfia

A Deadglyph AES-t használ a C&C kommunikáció titkosításához.

Kiszűrés

T1041

Exfiltration Over C2 Channel

A Deadglyph a C&C csatornát használja a kiszűréshez.

Időbélyeg:

Még több Biztonságban élünk