ESET: nové schémy backdoor doručovania pre kybernetickú skupinu OceanLotus

V tomto príspevku vám povieme, ako kybernetická skupina OceanLotus (APT32 a APT-C-00) nedávno využila jeden z verejne dostupných exploitov na CVE-2017 11882,, zraniteľnosti týkajúce sa poškodenia pamäte v balíku Microsoft Office a ako malvér skupiny dosahuje vytrvalosť na ohrozených systémoch bez zanechania stopy. Ďalej si popíšeme, ako skupina od začiatku roka 2019 využíva na spúšťanie kódu samorozbaľovacie archívy.

OceanLotus sa špecializuje na kybernetickú špionáž, pričom prioritnými cieľmi sú krajiny juhovýchodnej Ázie. Útočníci falšujú dokumenty, ktoré priťahujú pozornosť potenciálnych obetí, aby ich presvedčili, aby vykonali zadné vrátka, a tiež pracujú na vývoji nástrojov. Metódy používané na vytváranie honeypotov sa v rôznych útokoch líšia, od súborov s dvojitým rozšírením, samorozbaľovacích archívov, dokumentov s makrami až po známe exploity.

ESET: nové schémy backdoor doručovania pre kybernetickú skupinu OceanLotus

Použitie exploitu v Microsoft Equation Editor

V polovici roka 2018 spoločnosť OceanLotus uskutočnila kampaň využívajúcu zraniteľnosť CVE-2017-11882. Jeden zo škodlivých dokumentov kybernetickej skupiny analyzovali špecialisti z 360 Threat Intelligence Center (výskum v čínštine), vrátane podrobného popisu exploitu. Príspevok nižšie obsahuje prehľad takéhoto škodlivého dokumentu.

prvá etapa

Dokument FW Report on demonstration of former CNRP in Republic of Korea.doc (SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3) je podobný tomu, ktorý je uvedený v štúdii vyššie. Je zaujímavý tým, že je zameraný na používateľov zaujímajúcich sa o kambodžskú politiku (CNRP – Cambodia National Rescue Party, rozpustená koncom roka 2017). Napriek prípone .doc je dokument vo formáte RTF (pozri obrázok nižšie), obsahuje odpadkový kód a navyše je skreslený.

ESET: nové schémy backdoor doručovania pre kybernetickú skupinu OceanLotus
Obrázok 1. „Odpad“ v RTF

Aj keď sú tam skomolené prvky, Word tento súbor RTF úspešne otvorí. Ako vidíte na obrázku 2, existuje štruktúra EQNOLEFILEHDR s posunom 0xC00, za ktorou nasleduje hlavička MTEF a potom položka MTEF (obrázok 3) pre písmo.

ESET: nové schémy backdoor doručovania pre kybernetickú skupinu OceanLotus
Obrázok 2. Hodnoty vstupu FONT

ESET: nové schémy backdoor doručovania pre kybernetickú skupinu OceanLotus
Obrázok 3. Formát záznamu FONT

Možný prepad v teréne názov, pretože jeho veľkosť sa pred kopírovaním nekontroluje. Príliš dlhý názov spúšťa chybu zabezpečenia. Ako môžete vidieť z obsahu súboru RTF (offset 0xC26 na obrázku 2), vyrovnávacia pamäť sa naplní kódom shell, po ktorom nasleduje fiktívny príkaz (0x90) a spiatočnú adresu 0x402114. Adresa je prvok dialógového okna EQNEDT32.exes uvedením pokynov RET. To spôsobí, že EIP ukáže na začiatok poľa názovobsahujúci shell kód.

ESET: nové schémy backdoor doručovania pre kybernetickú skupinu OceanLotus
Obrázok 4. Začiatok exploitu shell kódu

adresa 0x45BD3C ukladá premennú, ktorá je dereferencovaná, kým nedosiahne ukazovateľ na aktuálne načítanú štruktúru MTEFData. Zvyšok shell kódu je tu.

Účelom shell kódu je spustiť druhú časť shell kódu vloženého do otvoreného dokumentu. Pôvodný shell kód sa najprv pokúsi nájsť deskriptor súboru otvoreného dokumentu iteráciou cez všetky systémové deskriptory (NtQuerySystemInformation s argumentom SystemExtendedHandleInformation) a skontrolujte, či sa zhodujú PID deskriptor a PID procesu WinWord a či bol dokument otvorený s prístupovou maskou - 0x12019F.

Na potvrdenie, že bol nájdený správny popisovač (a nie popisovač iného otvoreného dokumentu), sa obsah súboru zobrazí pomocou funkcie CreateFileMappinga shell kód skontroluje, či sa posledné štyri bajty dokumentu zhodujú "yyyy"(metóda lovu vajec). Po nájdení zhody sa dokument skopíruje do dočasného priečinka (GetTempPath) Ako ole.dll. Potom sa prečíta posledných 12 bajtov dokumentu.

ESET: nové schémy backdoor doručovania pre kybernetickú skupinu OceanLotus
Obrázok 5. Koniec značiek dokumentov

32-bitová hodnota medzi značkami AABBCCDD и yyyy je offset ďalšieho shell kódu. Volá sa pomocou funkcie CreateThread. Extrahoval sa rovnaký shell kód, ktorý predtým používala skupina OceanLotus. Skript emulácie Pythonu, ktorý sme vydali v marci 2018, stále funguje pre skládku druhej fázy.

Druhá etapa

Odstránenie komponentov

Názvy súborov a adresárov sa vyberajú dynamicky. Kód náhodne vyberie názov spustiteľného súboru alebo súboru DLL C:Windowssystem32. Potom odošle požiadavku na svoje zdroje a načíta pole FileDescription použiť ako názov priečinka. Ak to nefunguje, kód náhodne vyberie názov priečinka z adresárov %ProgramFiles% alebo C:Windows (z GetWindowsDirectoryW). Vyhýba sa používaniu názvu, ktorý by mohol byť v konflikte s existujúcimi súbormi, a zabezpečuje, že neobsahuje nasledujúce slová: windows, Microsoft, desktop, system, system32 alebo syswow64. Ak už adresár existuje, k názvu sa pridá "NLS_{6 znakov}".

prostriedky 0x102 sa analyzuje a súbory sa uložia do %ProgramFiles% alebo %AppData%, do náhodne vybraného priečinka. Zmenil sa čas vytvorenia, aby mal rovnaké hodnoty ako kernel32.dll.

Tu je napríklad priečinok a zoznam súborov vytvorených výberom spustiteľného súboru C:Windowssystem32TCPSVCS.exe ako zdroj údajov.

ESET: nové schémy backdoor doručovania pre kybernetickú skupinu OceanLotus
Obrázok 6. Extrahovanie rôznych komponentov

Štruktúra zdrojov 0x102 v kvapkadle je dosť zložité. Stručne povedané, obsahuje:
— Názvy súborov
— Veľkosť a obsah súboru
— Formát kompresie (COMPRESSION_FORMAT_LZNT1, ktorú funkcia používa RtlDecompressBuffer)

Prvý súbor sa resetuje ako TCPSVCS.exe, čo je legitímne AcroTranscoder.exe (podľa FileDescription, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).

Možno ste si všimli, že niektoré súbory DLL sú väčšie ako 11 MB. Je to preto, že vo vnútri spustiteľného súboru je umiestnená veľká súvislá vyrovnávacia pamäť náhodných údajov. Je možné, že je to spôsob, ako sa vyhnúť detekcii niektorými bezpečnostnými produktmi.

Zabezpečenie vytrvalosti

prostriedky 0x101 v kvapkadle obsahuje dve 32-bitové celé čísla, ktoré špecifikujú, ako by sa mala poskytovať perzistencia. Hodnota prvého určuje, ako bude malvér pretrvávať bez práv správcu.

ESET: nové schémy backdoor doručovania pre kybernetickú skupinu OceanLotus
Tabuľka 1. Mechanizmus pretrvávania bez administrátorských práv

Hodnota druhého celého čísla určuje, ako by mal malvér dosiahnuť perzistenciu pri spustení s právami správcu.

ESET: nové schémy backdoor doručovania pre kybernetickú skupinu OceanLotus
Tabuľka 2. Mechanizmus pretrvávania s právami správcu

Názov služby je názov súboru bez prípony; zobrazovaný názov je názov priečinka, ale ak už existuje, pripojí sa k nemu reťazec „Revision 1” (číslo sa zvyšuje, kým sa nenájde nepoužité meno). Operátori zabezpečili robustnosť služby – v prípade zlyhania by sa mala služba reštartovať po 1 sekunde. Potom hodnota WOW64 Kľúč databázy Registry novej služby je nastavený na 4, čo znamená, že ide o 32-bitovú službu.

Naplánovaná úloha sa vytvára prostredníctvom niekoľkých rozhraní COM: ITaskScheduler, ITask, ITaskTrigger, IPersistFile и ITaskScheduler. Malvér v podstate vytvorí skrytú úlohu, nastaví informácie o účte spolu s informáciami o aktuálnom používateľovi alebo správcovi a potom nastaví spúšťač.

Ide o dennú úlohu s trvaním 24 hodín a intervalmi medzi dvoma vykonaniami 10 minút, čo znamená, že bude prebiehať nepretržite.

Škodlivý kúsok

V našom príklade je to spustiteľný súbor TCPSVCS.exe (AcroTranscoder.exe) je legitímny softvér, ktorý načítava knižnice DLL, ktoré sa spolu s ním resetujú. V tomto prípade je to zaujímavé Flash Video Extension.dll.

Jeho funkcia DLLMain len volá inú funkciu. Existujú niektoré fuzzy predikáty:

ESET: nové schémy backdoor doručovania pre kybernetickú skupinu OceanLotus
Obrázok 7. Fuzzy predikáty

Po týchto zavádzajúcich kontrolách dostane kód sekciu .text súbor TCPSVCS.exe, mení svoju obranu na PAGE_EXECUTE_READWRITE a prepíše ho pridaním fiktívnych pokynov:

ESET: nové schémy backdoor doručovania pre kybernetickú skupinu OceanLotus
Obrázok 8. Postupnosť pokynov

Na konci k adrese funkcie FLVCore::Uninitialize(void), vyvezené Flash Video Extension.dll, pridáva sa pokyn CALL. To znamená, že po načítaní záškodníckej knižnice DLL, keď zavolá runtime WinMain в TCPSVCS.exe, ukazovateľ inštrukcie ukáže na NOP, čo spôsobí FLVCore::Uninitialize(void), ďalšia etapa.

Funkcia jednoducho vytvorí mutex začínajúci na {181C8480-A975-411C-AB0A-630DB8B0A221}nasleduje aktuálne používateľské meno. Potom načíta uložený súbor *.db3, ktorý obsahuje kód nezávislý od polohy, a použije ho CreateThread spustiť obsah.

Obsah súboru *.db3 je shell kód, ktorý skupina OceanLotus zvyčajne používa. Opäť sme úspešne rozbalili jeho užitočné zaťaženie pomocou skriptu emulátora, ktorý sme zverejnili na GitHub.

Scenár extrahuje záverečnú fázu. Tento komponent je backdoor, ktorý sme už analyzovali predchádzajúca štúdia OceanLotus. Dá sa to určiť pomocou GUID {A96B020F-0000-466F-A96D-A91BBF8EAC96} binárny súbor. Konfigurácia škodlivého softvéru je stále zašifrovaná v prostriedku PE. Má približne rovnakú konfiguráciu, ale servery C&C sa líšia od predchádzajúcich:

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

Tím OceanLotus opäť demonštruje kombináciu rôznych techník, ako sa vyhnúť odhaleniu. Vrátili sa s „rafinovaným“ diagramom procesu infekcie. Výberom náhodných názvov a naplnením spustiteľných súborov náhodnými údajmi znižujú počet spoľahlivých IoC (na základe hashov a názvov súborov). Navyše, vďaka použitiu načítania DLL tretích strán, útočníkom stačí odstrániť legitímny binárny súbor AcroTranscoder.

Samorozbaľovacie archívy

Po súboroch RTF sa skupina presunula do samorozbaľovacích (SFX) archívov s bežnými ikonami dokumentov, aby ešte viac zmiatla používateľa. O tom písal Threatbook (odkaz v čínštine). Po spustení sa vypustia samorozbaľovacie súbory RAR a spustia sa knižnice DLL s príponou .ocx, ktorých konečné užitočné zaťaženie bolo predtým zdokumentované {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. Od polovice januára 2019 OceanLotus opätovne používa túto techniku, ale postupom času mení niektoré konfigurácie. V tejto časti si povieme niečo o technike a zmenách.

Vytvorenie návnady

Dokument THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) bol prvýkrát nájdený v roku 2018. Tento súbor SFX bol vytvorený múdro - v popise (Informácie o verzii) hovorí, že toto je obrázok JPEG. Skript SFX vyzerá takto:

ESET: nové schémy backdoor doručovania pre kybernetickú skupinu OceanLotus
Obrázok 9. Príkazy SFX

Malvér sa resetuje {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC), ako aj obrázok 2018 thich thong lac.jpg.

Obrázok návnady vyzerá takto:

ESET: nové schémy backdoor doručovania pre kybernetickú skupinu OceanLotus
Obrázok 10. Obrázok návnady

Možno ste si všimli, že prvé dva riadky v skripte SFX volajú súbor OCX dvakrát, ale nejde o chybu.

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

Riadiaci tok súboru OCX je veľmi podobný ostatným komponentom OceanLotus – mnoho príkazových sekvencií JZ/JNZ и PUSH/RET, striedajúci sa s kódom odpadu.

ESET: nové schémy backdoor doručovania pre kybernetickú skupinu OceanLotus
Obrázok 11. Zahmlený kód

Po odfiltrovaní nevyžiadaného kódu exportujte DllRegisterServer, volal regsvr32.exe, nasledovne:

ESET: nové schémy backdoor doručovania pre kybernetickú skupinu OceanLotus
Obrázok 12. Základný inštalačný kód

V podstate pri prvom hovore DllRegisterServer export nastaví hodnotu registra HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model pre zašifrovaný offset v DLL (0x10001DE0).

Keď sa funkcia volá druhýkrát, načíta rovnakú hodnotu a vykoná sa na tejto adrese. Odtiaľ sa číta a vykonáva zdroj a mnoho akcií v pamäti RAM.

Shellcode je rovnaký PE loader, aký sa používal v minulých kampaniach OceanLotus. Dá sa napodobniť pomocou náš scenár. Nakoniec sa resetuje db293b825dcc419ba7dc2c49fa2757ee.dll, načíta ho do pamäte a vykoná DllEntry.

DLL extrahuje obsah svojho zdroja, dešifruje (AES-256-CBC) a dekomprimuje (LZMA). Zdroj má špecifický formát, ktorý sa dá ľahko dekompilovať.

ESET: nové schémy backdoor doručovania pre kybernetickú skupinu OceanLotus
Obrázok 13. Štruktúra konfigurácie inštalátora (KaitaiStruct Visualizer)

Konfigurácia je špecifikovaná explicitne - v závislosti od úrovne privilégií sa budú zapisovať binárne dáta %appdata%IntellogsBackgroundUploadTask.cpl alebo %windir%System32BackgroundUploadTask.cpl (Alebo SysWOW64 pre 64-bitové systémy).

Ďalšie pretrvávanie je zabezpečené vytvorením úlohy s názvom BackgroundUploadTask[junk].jobKde [junk] predstavuje množinu bajtov 0x9D и 0xA0.

Názov aplikácie úlohy %windir%System32control.exea hodnota parametra je cesta k stiahnutému binárnemu súboru. Skrytá úloha beží každý deň.

Štrukturálne je súbor CPL DLL s interným názvom ac8e06de0a6c4483af9837d96504127e.dll, ktorý exportuje funkciu CPlApplet. Tento súbor dešifruje svoj jediný zdroj {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, potom načíta túto knižnicu DLL a zavolá jej jediný export DllEntry.

Konfiguračný súbor zadného vrátka

Konfigurácia zadných vrátok je zašifrovaná a vložená do jej zdrojov. Štruktúra konfiguračného súboru je veľmi podobná predchádzajúcemu.

ESET: nové schémy backdoor doručovania pre kybernetickú skupinu OceanLotus
Obrázok 14. Štruktúra konfigurácie zadných dvierok (KaitaiStruct Visualizer)

Aj keď je štruktúra podobná, mnohé hodnoty polí boli aktualizované oproti hodnotám zobrazeným v naša stará správa.

Prvý prvok binárneho poľa obsahuje DLL (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), identifikoval Tencent. Ale keďže bol názov exportu odstránený z binárneho súboru, hash sa nezhoduje.

Dodatočný výskum

Pri zbere vzoriek sme si všimli niektoré charakteristiky. Práve opísaný exemplár sa objavil okolo júla 2018 a ďalšie podobné sa objavili až od polovice januára do začiatku februára 2019. Archív SFX bol použitý ako vektor infekcie, ktorý odstránil legitímny návnadový dokument a škodlivý súbor OSX.

Aj keď OceanLotus používa falošné časové pečiatky, všimli sme si, že časové pečiatky súborov SFX a OCX sú vždy rovnaké (0x57B0C36A (08. 14. 2016 o 7:15 UTC) a 0x498BE80F (02/06/2009, 7:34 UTC)). Pravdepodobne to naznačuje, že autori majú nejakého „dizajnéra“, ktorý používa rovnaké šablóny a jednoducho mení niektoré vlastnosti.

Medzi dokumentmi, ktoré sme študovali od začiatku roka 2018, sú rôzne názvy označujúce krajiny, o ktoré majú útočníci záujem:

— Nové kontaktné informácie spoločnosti Cambodia Media (New).xls.exe
— 李建香 (个人简历).exe (falošný pdf dokument životopisu)
— spätná väzba, Rally v USA od 28. do 29. júla 2018.exe

Odkedy boli objavené zadné vrátka {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll a zverejnení jeho analýzy niekoľkými výskumníkmi sme zaznamenali určité zmeny v konfiguračných údajoch škodlivého softvéru.

Najprv autori začali odstraňovať názvy z pomocných knižníc DLL (DNSprov.dll a dve verzie HttpProv.dll). Operátori potom prestali baliť tretiu knižnicu DLL (druhá verzia HttpProv.dll), pričom sa rozhodnete vložiť iba jeden.

Po druhé, mnoho polí konfigurácie zadných dvierok sa zmenilo, pravdepodobne sa vyhli detekcii, pretože bolo dostupných veľa IoC. Medzi dôležité polia upravené autormi patria:

  • Kľúč databázy Registry AppX sa zmenil (pozri IoC)
  • reťazec kódovania mutex ("def", "abc", "ghi")
  • číslo portu

Nakoniec, všetky nové analyzované verzie majú nové C&C uvedené v sekcii IoC.

Závery

OceanLotus pokračuje vo vývoji. Kybernetická skupina sa zameriava na zdokonaľovanie a rozširovanie nástrojov a návnad. Autori maskujú škodlivý obsah pomocou dokumentov, ktoré upútajú pozornosť a ktorých téma je relevantná pre zamýšľané obete. Vyvíjajú nové schémy a využívajú aj verejne dostupné nástroje, ako napríklad exploit Editor rovníc. Okrem toho zdokonaľujú nástroje na zníženie počtu zostávajúcich artefaktov na počítačoch obetí, čím sa znižuje pravdepodobnosť detekcie antivírusovým softvérom.

Ukazovatele kompromisu

K dispozícii sú indikátory kompromisu, ako aj atribúty MITER ATT&CK o Welivesecurity и na GitHub.

Zdroj: hab.com

Pridať komentár