ESET: új backdoor szállítási rendszerek az OceanLotus kibercsoport számára

Ebben a bejegyzésben elmeséljük, hogy az OceanLotus kibercsoport (APT32 és APT-C-00) miként használta a közelmúltban az egyik nyilvánosan elérhető kizsákmányolást CVE-2017 11882-, a Microsoft Office memóriasérülési sebezhetőségeiről, valamint arról, hogy a csoport rosszindulatú programjai hogyan érik el nyomtalanul fennmaradását a feltört rendszereken. Ezután leírjuk, hogy 2019 eleje óta a csoport hogyan használt önkicsomagoló archívumokat a kód futtatásához.

Az OceanLotus a kiberkémkedésre specializálódott, kiemelt célpontjai a délkelet-ázsiai országok. A támadók olyan dokumentumokat hamisítanak, amelyek felkeltik a potenciális áldozatok figyelmét, hogy meggyőzzék őket a hátsó ajtó végrehajtásáról, és eszközök fejlesztésén is dolgoznak. A honeypotok létrehozására használt módszerek támadásonként eltérőek, a „kettős kiterjesztésű” fájloktól, az önkicsomagoló archívumokon, a makrókat tartalmazó dokumentumokon át az ismert kihasználásokig.

ESET: új backdoor szállítási rendszerek az OceanLotus kibercsoport számára

Exploit használata a Microsoft Egyenletszerkesztőben

2018 közepén az OceanLotus kampányt folytatott a CVE-2017-11882 biztonsági rést kihasználva. A kibercsoport egyik rosszindulatú dokumentumát a 360 Threat Intelligence Center szakemberei elemezték (kutatás kínaiul), beleértve a kihasználás részletes leírását. Az alábbi bejegyzés egy ilyen rosszindulatú dokumentum áttekintését tartalmazza.

Az első szakasz

A dokumentum FW Report on demonstration of former CNRP in Republic of Korea.doc (SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3) hasonló a fenti tanulmányban említetthez. Érdekes, mert a kambodzsai politika (CNRP – Cambodia National Rescue Party, 2017 végén feloszlatott) iránt érdeklődő felhasználókat célozza meg. A .doc kiterjesztés ellenére a dokumentum RTF formátumú (lásd az alábbi képet), szemétkódot tartalmaz, és torz is.

ESET: új backdoor szállítási rendszerek az OceanLotus kibercsoport számára
1. ábra "Garbage" az RTF-ben

Annak ellenére, hogy vannak elrontott elemek, a Word sikeresen megnyitja ezt az RTF-fájlt. Amint a 2. ábrán látható, van egy EQNOLEFILEHDR struktúra 0xC00 eltolásnál, ezt követi egy MTEF fejléc, majd egy MTEF bejegyzés (3. ábra) a betűtípushoz.

ESET: új backdoor szállítási rendszerek az OceanLotus kibercsoport számára
2. ábra FONT beviteli értékek

ESET: új backdoor szállítási rendszerek az OceanLotus kibercsoport számára
Ábra 3. FONT felvételi formátum

Lehetséges túlcsordulás a terepen név, mert a méretét másolás előtt nem ellenőrzik. A túl hosszú név sebezhetőséget vált ki. Amint az RTF fájl tartalmából is látható (a 0. ábrán 26xC2 eltolás), a puffer meg van töltve shellkóddal, majd egy dummy paranccsal (0x90) és a visszaküldési címet 0x402114. A cím egy párbeszédpanel elem EQNEDT32.exe, utasításokat jelezve RET. Ez azt eredményezi, hogy az EIP a mező elejére mutat névtartalmazza a shellkódot.

ESET: új backdoor szállítási rendszerek az OceanLotus kibercsoport számára
4. ábra: Az exploit shellkód kezdete

cím 0x45BD3C tárol egy változót, amelyre hivatkozik, amíg el nem éri az aktuálisan betöltött struktúrára mutató mutatót MTEFData. A shellkód többi része itt található.

A shellcode célja a nyitott dokumentumba ágyazott shellkód második darabjának végrehajtása. Az eredeti shellkód először megpróbálja megtalálni a megnyitott dokumentum fájlleíróját az összes rendszerleíró iterációjával (NtQuerySystemInformation érvvel SystemExtendedHandleInformation), és ellenőrizze, hogy egyeznek-e PID leíró és PID folyamat WinWord és hogy a dokumentumot hozzáférési maszkkal nyitották-e meg - 0x12019F.

Annak ellenőrzésére, hogy a megfelelő kezelő található-e (és nem egy másik megnyitott dokumentum leírója), a fájl tartalma a függvény segítségével jelenik meg. CreateFileMapping, és a shellkód ellenőrzi, hogy a dokumentum utolsó négy bájtja egyezik-eyyyy"(Tojásvadászat módszere). Ha talál egyezést, a dokumentum egy ideiglenes mappába másolódik (GetTempPath) hogyan ole.dll. Ezután a dokumentum utolsó 12 bájtja kerül beolvasásra.

ESET: új backdoor szállítási rendszerek az OceanLotus kibercsoport számára
5. ábra: Dokumentumjelzők vége

32 bites érték a markerek között AABBCCDD и yyyy a következő shellkód eltolása. A függvény használatával hívják CreateThread. Ugyanazt a shellkódot bontotta ki, amelyet korábban az OceanLotus csoport használt. Python emulációs szkript, amelyet 2018 márciusában adtunk ki, továbbra is működik a második szakaszban.

A második szakasz

Alkatrészek eltávolítása

A fájl- és könyvtárnevek kiválasztása dinamikusan történik. A kód véletlenszerűen kiválasztja a végrehajtható vagy a DLL fájl nevét C:Windowssystem32. Ezután kérést intéz az erőforrásaihoz, és lekéri a mezőt FileDescription mappanévként való használathoz. Ha ez nem működik, a kód véletlenszerűen kiválaszt egy mappanevet a könyvtárakból %ProgramFiles% vagy C:Windows (a GetWindowsDirectoryW-ből). Elkerüli a meglévő fájlokkal ütköző név használatát, és biztosítja, hogy ne tartalmazza a következő szavakat: windows, Microsoft, desktop, system, system32 vagy syswow64. Ha a könyvtár már létezik, akkor a névhez "NLS_{6 karakter}" lesz hozzáfűzve.

forrás 0x102 elemzi, és a fájlokat kiírja %ProgramFiles% vagy %AppData%, egy véletlenszerűen kiválasztott mappába. A létrehozási idő megváltozott, hogy ugyanazok az értékek legyenek, mint kernel32.dll.

Például itt van a végrehajtható fájl kiválasztásával létrehozott fájlok mappája és listája C:Windowssystem32TCPSVCS.exe adatforrásként.

ESET: új backdoor szállítási rendszerek az OceanLotus kibercsoport számára
6. ábra Különféle komponensek kinyerése

Erőforrás szerkezet 0x102 egy cseppentőben meglehetősen összetett. Dióhéjban a következőket tartalmazza:
— Fájlnevek
— Fájl mérete és tartalma
– Tömörítési formátum (COMPRESSION_FORMAT_LZNT1, a függvény által használt RtlDecompressBuffer)

Az első fájl visszaállításra kerül mint TCPSVCS.exe, ami jogos AcroTranscoder.exe (alapján FileDescription, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).

Talán észrevette, hogy egyes DLL-fájlok 11 MB-nál nagyobbak. Ennek az az oka, hogy a futtatható fájlban egy nagy, összefüggő véletlenszerű adatok puffere található. Lehetséges, hogy ezzel elkerülhető bizonyos biztonsági termékek észlelése.

A kitartás biztosítása

forrás 0x101 a dropperben két 32 bites egész számot tartalmaz, amelyek meghatározzák, hogyan kell biztosítani a perzisztenciát. Az első értéke azt határozza meg, hogy a kártevő hogyan marad fenn rendszergazdai jogok nélkül.

ESET: új backdoor szállítási rendszerek az OceanLotus kibercsoport számára
1. táblázat: Perzisztencia mechanizmus rendszergazdai jogok nélkül

A második egész szám azt határozza meg, hogy a rosszindulatú program hogyan érje el a tartósságot rendszergazdai jogokkal való futás közben.

ESET: új backdoor szállítási rendszerek az OceanLotus kibercsoport számára
2. táblázat: Perzisztencia mechanizmus rendszergazdai jogokkal

A szolgáltatásnév a fájlnév kiterjesztés nélkül; a megjelenített név a mappa neve, de ha már létezik, akkor a „ karakterlánc hozzá van fűzveRevision 1” (a szám addig növekszik, amíg egy nem használt nevet talál). Az üzemeltetők gondoskodtak arról, hogy a szolgáltatáson keresztüli kitartás robusztus legyen - hiba esetén a szolgáltatást 1 másodperc múlva újra kell indítani. Aztán az érték WOW64 Az új szolgáltatás rendszerleíró kulcsa 4-re van állítva, ami azt jelzi, hogy 32 bites szolgáltatásról van szó.

Egy ütemezett feladat több COM interfészen keresztül jön létre: ITaskScheduler, ITask, ITaskTrigger, IPersistFile и ITaskScheduler. A rosszindulatú program lényegében egy rejtett feladatot hoz létre, beállítja a fiókinformációkat az aktuális felhasználói vagy rendszergazdai adatokkal együtt, majd beállítja a triggert.

Ez egy napi feladat, 24 órás időtartammal és két végrehajtás között 10 perces időközökkel, ami azt jelenti, hogy folyamatosan fut.

Rosszindulatú darab

Példánkban a végrehajtható fájl TCPSVCS.exe (AcroTranscoder.exe) egy legitim szoftver, amely betölti a vele együtt visszaállított DLL-eket. Ebben az esetben ez érdekes Flash Video Extension.dll.

A funkciója DLLMain csak egy másik függvényt hív meg. Néhány fuzzy predikátum jelen van:

ESET: új backdoor szállítási rendszerek az OceanLotus kibercsoport számára
7. ábra Fuzzy predikátumok

A félrevezető ellenőrzések után a kód egy szakaszt kap .text fájlt TCPSVCS.exe, megváltoztatja a védekezését PAGE_EXECUTE_READWRITE és álutasítások hozzáadásával átírja:

ESET: új backdoor szállítási rendszerek az OceanLotus kibercsoport számára
8. ábra Az utasítások sorrendje

A végén a függvény címére FLVCore::Uninitialize(void), exportált Flash Video Extension.dll, utasítást adunk hozzá CALL. Ez azt jelenti, hogy a rosszindulatú DLL betöltése után, amikor a futtatókörnyezet hív WinMain в TCPSVCS.exe, az utasításmutató a NOP-ra mutat, ami okozza FLVCore::Uninitialize(void), következő szint.

A függvény egyszerűen létrehoz egy mutexet, amely a következővel kezdődik {181C8480-A975-411C-AB0A-630DB8B0A221}utána az aktuális felhasználónév. Ezután beolvassa a kiírt *.db3 fájlt, amely pozíciófüggetlen kódot tartalmaz, és használja CreateThread a tartalom végrehajtásához.

A *.db3 fájl tartalma az OceanLotus csoport által általában használt shellkód. Az általunk közzétett emulátor szkript segítségével ismét sikeresen kicsomagoltuk a rakományt a GitHubon.

A szkript kibontja az utolsó szakaszt. Ez a komponens egy hátsó ajtó, amelyet már elemeztünk korábbi OceanLotus tanulmány. Ezt a GUID határozza meg {A96B020F-0000-466F-A96D-A91BBF8EAC96} bináris fájl. A rosszindulatú program konfigurációja továbbra is titkosítva van a PE-erőforrásban. Megközelítőleg azonos konfigurációval rendelkezik, de a C&C szerverek eltérnek az előzőektől:

- andreagahuvrauvin[.]com
- byronorenstein[.]com
- stienollmache[.]xyz

Az OceanLotus csapata ismét különböző technikák kombinációját mutatja be az észlelés elkerülése érdekében. A fertőzési folyamat „finomított” diagramjával tértek vissza. A véletlenszerű nevek kiválasztásával és a végrehajtható fájlok véletlenszerű adatokkal való kitöltésével csökkentik a megbízható IoC-k számát (hash-ek és fájlnevek alapján). Ezenkívül a harmadik féltől származó DLL-betöltésnek köszönhetően a támadóknak csak a legitim bináris fájlt kell eltávolítaniuk. AcroTranscoder.

Önkicsomagoló archívumok

Az RTF-fájlok után a csoport az önkicsomagoló (SFX) archívumokhoz költözött, közös dokumentumikonokkal, hogy tovább zavarják a felhasználót. A Threatbook írt erről (link kínaiul). Indításkor a rendszer eldobja az önkicsomagoló RAR fájlokat, és végrehajtja az .ocx kiterjesztésű DLL-eket, amelyek végső hasznos terhelését korábban dokumentálták. {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. 2019. január közepe óta az OceanLotus újrahasznosítja ezt a technikát, de idővel módosított bizonyos konfigurációkon. Ebben a részben a technikáról és a változtatásokról lesz szó.

Csali létrehozása

A dokumentum THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) először 2018-ban találták meg. Ez az SFX fájl bölcsen jött létre - a leírásban (Verzió információ) azt írja, hogy ez egy JPEG kép. Az SFX szkript így néz ki:

ESET: új backdoor szállítási rendszerek az OceanLotus kibercsoport számára
9. ábra: SFX parancsok

A rosszindulatú program visszaáll {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC), valamint egy képet 2018 thich thong lac.jpg.

A csali kép így néz ki:

ESET: új backdoor szállítási rendszerek az OceanLotus kibercsoport számára
10. ábra Csalikép

Talán észrevette, hogy az SFX szkript első két sora kétszer hívja meg az OCX fájlt, de ez nem hiba.

{9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (ShLd.dll)

Az OCX-fájlok vezérlési folyamata nagyon hasonló a többi OceanLotus-összetevőhöz – sok parancssorozat JZ/JNZ и PUSH/RET, váltakozva a szemétkóddal.

ESET: új backdoor szállítási rendszerek az OceanLotus kibercsoport számára
11. ábra: Obfuszkált kód

A kéretlen kód kiszűrése után exportálja DllRegisterServer, hívott regsvr32.exe, alábbiak szerint:

ESET: új backdoor szállítási rendszerek az OceanLotus kibercsoport számára
12. ábra: Alapvető telepítői kód

Lényegében az első híváskor DllRegisterServer az export beállítási értéket állít be HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model titkosított eltoláshoz a DLL-ben (0x10001DE0).

A függvény másodszori meghívásakor ugyanazt az értéket olvassa be, és azon a címen fut le. Innentől a RAM-ban lévő erőforrás és számos művelet beolvasásra és végrehajtásra kerül.

A shellkód ugyanaz a PE betöltő, amelyet a korábbi OceanLotus kampányokban használtak. segítségével emulálható forgatókönyvünk. A végén visszaállítja db293b825dcc419ba7dc2c49fa2757ee.dll, betölti a memóriába és végrehajtja DllEntry.

A DLL kibontja az erőforrás tartalmát, visszafejti (AES-256-CBC) és kicsomagolja (LZMA). Az erőforrásnak van egy speciális formátuma, amely könnyen visszafordítható.

ESET: új backdoor szállítási rendszerek az OceanLotus kibercsoport számára
13. ábra: Telepítő konfigurációs szerkezete (KaitaiStruct Visualizer)

A konfiguráció kifejezetten meg van adva - a jogosultsági szinttől függően a rendszer a bináris adatokat írja %appdata%IntellogsBackgroundUploadTask.cpl vagy %windir%System32BackgroundUploadTask.cpl (vagy SysWOW64 64 bites rendszerekhez).

A további kitartást a névvel ellátott feladat létrehozása biztosítja BackgroundUploadTask[junk].jobAhol [junk] bájtok halmazát jelöli 0x9D и 0xA0.

Feladat Alkalmazás neve %windir%System32control.exe, és a paraméter értéke a letöltött bináris fájl elérési útja. A rejtett feladat minden nap fut.

Szerkezetileg a CPL fájl egy belső névvel rendelkező DLL ac8e06de0a6c4483af9837d96504127e.dll, amely egy függvényt exportál CPlApplet. Ez a fájl dekódolja az egyetlen erőforrást {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, majd betölti ezt a DLL-t, és meghívja az egyetlen exportálást DllEntry.

Backdoor konfigurációs fájl

A hátsó ajtó konfigurációja titkosítva van, és be van ágyazva az erőforrásaiba. A konfigurációs fájl szerkezete nagyon hasonló az előzőhöz.

ESET: új backdoor szállítási rendszerek az OceanLotus kibercsoport számára
14. ábra: A hátsó ajtó konfigurációs struktúrája (KaitaiStruct Visualizer)

Bár a szerkezet hasonló, sok mezőértéket frissítettünk a képen látható értékekhez képest régi beszámolónk.

A bináris tömb első eleme egy DLL-t (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), Tencent azonosította. De mivel az export nevét eltávolították a binárisból, a hash-ek nem egyeznek.

További kutatások

A mintagyűjtés során észrevettünk néhány jellemzőt. Az imént leírt példány 2018 júliusa körül jelent meg, a többi hasonló pedig 2019. január közepétől február elejéig. Az SFX archívumot fertőzési vektorként használták, és eldobtak egy legitim csalidokumentumot és egy rosszindulatú OSX-fájlt.

Annak ellenére, hogy az OceanLotus hamis időbélyegeket használ, észrevettük, hogy az SFX és OCX fájlok időbélyegei mindig ugyanazok (0x57B0C36A (08. 14. 2016. 7:15 UTC) és 0x498BE80F (02. 06. 2009. 7:34 UTC). Ez valószínűleg azt jelzi, hogy a szerzőknek van valamilyen „designerje”, amely ugyanazokat a sablonokat használja, és egyszerűen megváltoztat néhány jellemzőt.

Az általunk 2018 eleje óta tanulmányozott dokumentumok között különböző nevek találhatók, amelyek jelzik a támadók érdeklődésére számot tartó országokat:

— A Cambodia Media(New).xls.exe új elérhetőségei
— 李建香 (个人简历).exe (egy önéletrajz hamis pdf-dokumentuma)
— visszajelzés, rally az USA-ban 28. július 29-2018.exe

Mióta felfedezték a hátsó ajtót {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll és elemzésének több kutató általi publikálása után némi változást figyeltünk meg a malware konfigurációs adatokban.

Először a szerzők elkezdték eltávolítani a neveket a segítő DLL-ekből (DNSprov.dll és két változat HttpProv.dll). Az üzemeltetők ezután leállították a harmadik DLL (a második verzió) csomagolását HttpProv.dll), csak egy beágyazását választja.

Másodszor, sok hátsó ajtó konfigurációs mezőt megváltoztattak, valószínűleg elkerülve az észlelést, mivel sok IoC vált elérhetővé. A szerzők által módosított fontos mezők a következők:

  • Az AppX rendszerleíró kulcs megváltozott (lásd az IoC-ket)
  • mutex kódoló karakterlánc ("def", "abc", "ghi")
  • portszám

Végül, minden elemzett új verzió új C&C-t tartalmaz a IoC-k szakaszban.

Álláspontja

Az OceanLotus tovább fejlődik. A kibercsoport az eszközök és csalétek finomítására és bővítésére összpontosít. A szerzők a rosszindulatú rakományokat olyan figyelemfelkeltő dokumentumok segítségével leplezik le, amelyek témája releváns a szándékolt áldozatok számára. Új sémákat fejlesztenek ki, és nyilvánosan elérhető eszközöket is használnak, mint például az Egyenletszerkesztő exploit. Ezen túlmenően olyan eszközöket fejlesztenek, amelyek csökkentik az áldozatok gépein maradó műtermékek számát, ezáltal csökkentve a víruskereső szoftver általi észlelés esélyét.

A kompromisszum jelzői

A kompromisszum indikátorai, valamint a MITER ATT&CK attribútumok elérhetők a Welifesecurity-n и a GitHubon.

Forrás: will.com

Hozzászólás