ESET: nové způsoby doručení zadního vchodu kyber skupiny OceanLotus

V příspěvku se dozvíte, jak kybernetická skupina OceanLotus (APT32 a APT-C-00) nedávno využila jeden z veřejně dostupných exploitů pro CVE-2017-11882, zranitelnost poškození paměti v Microsoft Office, a jak malware této skupiny zajišťuje perzistenci v kompromitovaných systémech, aniž by zanechal stopy. Dále popíšeme, jak od začátku roku 2019 skupina využívá samorozbalovací archivy k spuštění kódu.

OceanLotus se specializuje na kyberšpionáž, prioritní cíle jsou země jihovýchodní Asie. Útočníci falšují dokumenty, které přitahují pozornost potenciálních obětí, aby je přesvědčili k instalaci zadních vrátek, a také pracují na vývoji nástrojů. Metody použité k vytvoření pastí se liší v různých útocích – od souborů s „dvojitým rozšířením“, samorozbalovacích archivů, dokumentů s makry až po známé exploity.

ESET: nové způsoby doručení zadního vchodu kyber skupiny OceanLotus

Využití exploitu v Microsoft Equation Editor

V polovině roku 2018 provedl OceanLotus kampaň s využitím zranitelnosti CVE-2017-11882. Jeden z nebezpečných dokumentů kybernetické skupiny byl analyzován specialisty 360 Threat Intelligence Center (výzkum v čínštině), jehož součástí je podrobný popis exploitu. V následujícím příspěvku je přehled podobného nebezpečného dokumentu.

První etapa

Dokument FW Report on demonstration of former CNRP in Republic of Korea.doc (SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3) je podobný tomu, který byl zmíněn ve výzkumu výše. Je zajímavý tím, že cílí na uživatele, kteří se zajímají o kambodžskou politiku (CNRP – Strana národního záchrany Kambodže, rozpuštěná na konci roku 2017). I přesto, že má příponu .doc, dokument má formát RTF (viz obrázek níže), obsahuje zbytečný kód a také je zkreslen.

ESET: nové způsoby doručení zadního vchodu kyber skupiny OceanLotus
Obrázek 1. „Zbytek“ v RTF

Navzdory přítomnosti zkreslených prvků, Word úspěšně otevírá tento RTF soubor. Jak je vidět na obrázku 2, zde je struktura EQNOLEFILEHDR s posunem 0xC00, po které následuje záhlaví MTEF a poté zápis MTEF (obrázek 3) pro písmo.

ESET: nové způsoby doručení zadního vchodu kyber skupiny OceanLotus
Obrázek 2. Hodnoty zápisu FONT

ESET: nové způsoby doručení zadního vchodu kyber skupiny OceanLotus
Obrázek 3. Formát zápisu FONT

Může dojít k přetečení v poli name, protože jeho velikost není kontrolována před kopírováním. Příliš dlouhé jméno spouští zranitelnost. Jak je vidět z obsahu RTF souboru (posun 0xC26 na obrázku 2), buffer je zaplněn shell-kódem, za kterým následuje falešný příkaz (0x90) a návratová adresa 0x402114. Adresa je dialogovým prvkem v EQNEDT32.exe, ukazující na instrukci RET. To vede k tomu, že EIP ukazuje na začátek pole name, obsahujícího shell kód.

ESET: nové způsoby doručení zadního vchodu kyber skupiny OceanLotus
Obrázek 4. Začátek shell kódu exploit

Adresa 0x45BD3C uchovává proměnnou, která se dereferencuje, dokud nedosáhne ukazatele na aktuálně načtenou strukturu MTEFData. Zde se nachází zbytek shell kódu.

Účel shell kódu – provést druhý fragment shell kódu, který je vložen do otevřeného dokumentu. Nejprve se původní shell kód pokouší najít deskriptor souboru otevřeného dokumentu, procházením všech deskriptorů systému (NtQuerySystemInformation s argumentem SystemExtendedHandleInformation) a kontrolou, zda odpovídají PID deskriptoru a PID procesu WinWord a zda byl dokument otevřen s přístupovou maskou – 0x12019F.

Aby se potvrdilo nalezení správného deskriptoru (a ne deskriptoru jiného otevřeného dokumentu), obsah souboru se zobrazuje pomocí funkce CreateFileMapping, a shell kód kontroluje, zda poslední čtyři bajty dokumentu „yyyy“ (metoda Egg Hunting). Jakmile je nalezeno shodné, dokument se zkopíruje do dočasného adresáře (GetTempPath) jako ole.dll. Poté se přečte posledních 12 bajtů dokumentu.

ESET: nové způsoby doručení zadního vchodu kyber skupiny OceanLotus
Obrázek 5. Ukazatele konce dokumentu

32bitová hodnota mezi ukazateli AABBCCDD a yyyy – to je offset dalšího shell kódu. Ten se volá pomocí funkce CreateThread. Vytáhnut byl stejný shell kód, který dříve použila skupina OceanLotus. Skript emulace Pythonu, který jsme vydali v březnu 2018, stále funguje pro dump druhé fáze.

Druhá etapa

Extrakce komponentů

Názvy souborů a adresářů se vybírají dynamicky. Kód náhodně vybírá název spustitelného nebo DLL souboru v C:WindowsSystem32. Poté provede dotaz na své zdroje a extrahuje pole FileDescription pro použití jako název složky. Pokud to nefunguje, kód náhodně vybírá název složky z adresářů %ProgramFiles% nebo C:Windows (z GetWindowsDirectoryW). Vyhýbá se použití názvu, který by mohl kolidovat s existujícími soubory, a dbá na to, aby neobsahoval následující slova: windows, Microsoft, desktop, systém, system32. nebo syswow64. Pokud už adresář existuje, k názvu se přidává „NLS_{6 znaků}”.

Zdrojem 0x102 analyzuje a soubory se vyhazují do %ProgramFiles% nebo %AppData%, do náhodně vybrané složky. Čas vytvoření byl změněn, aby měl stejná hodnoty jako u kernel32.dll.

Například, zde je složka a seznam souborů vytvořených vybráním spustitelného souboru C:WindowsSystem32TCPSVCS.exe jako zdroj dat.

ESET: nové způsoby doručení zadního vchodu kyber skupiny OceanLotus
Obrázek 6. Extrakce různých komponent

Struktura zdroje 0x102 v dropperu je dost složitá. Ve zjednodušené podobě obsahuje:
— Název souborů
— Velikost a obsah souborů
— Formát komprese (COMPRESSION_FORMAT_LZNT1, používaný funkcí RtlDecompressBuffer)

První soubor je vypuštěn jako TCPSVCS.exe, což je legitimní AcroTranscoder.exe (podle FileDescription, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).

Možná jste si všimli, že velikost některých DLL souborů přesahuje 11 MB. To je způsobeno tím, že velký kontinuální buffer náhodných dat je umístěn uvnitř spustitelného souboru. Není vyloučeno, že je to způsob, jak se vyhnout detekci některými bezpečnostními produkty.

Zajištění perzistence

Zdrojem 0x101 v dropperu obsahuje dvě 32bitová celá čísla, která určují, jakým způsobem by mělo být zajištěno, aby perzistence byla udržována. Hodnota prvního ukazuje, jak malware bude udržovat perzistenci bez administrátorských práv.

ESET: nové způsoby doručení zadního vchodu kyber skupiny OceanLotus
Tabulka 1. Mechanismus perzistence bez administrátorských práv

Hodnota druhého celého čísla určuje, jak by malware měl zajistit perzistenci při práci s administrátorskými právy.

ESET: nové způsoby doručení zadního vchodu kyber skupiny OceanLotus
Tabulka 2. Mechanismus perzistence s administrátorskými právy

Název služby je název souboru bez přípony; zobrazený název je název složky, ale pokud již existuje, je k němu přidán řetězec “Revision 1” (číslo se zvyšuje, dokud není nalezeno nepoužívané jméno). Operátoři se postarali o to, aby perzistence prostřednictvím služby byla stabilní – v případě selhání by měla být služba znovu spuštěna během 1 sekundy. Poté je hodnotě WOW64 nového klíče registru služby přiřazena hodnota 4, což ukazuje, že se jedná o 32bitovou službu.

Naplánovaná úloha je vytvořena prostřednictvím několika rozhraní COM: ITaskScheduler, ITask, ITaskTrigger, IPersistFile a ITaskScheduler. V podstatě malware vytváří skrytou úlohu, nastaví informace o účtu spolu s informacemi o aktuálním uživateli nebo administrátorovi a poté nastaví spouštěč.

Jedná se o denní úlohu s trváním 24 hodin a intervaly mezi dvěma provedeními 10 minut, což znamená, že bude prováděna neustále.

Malware bit

V našem příkladu spustitelný soubor TCPSVCS.exe (AcroTranscoder.exe) je legitimní software, který načítá DLL, jež jsou s ním vymazány. V tomto případě je zajímavé Flash Video Extension.dll.

Jeho funkce DLLMain jednoduše volá další funkci. Jsou přítomny některé fuzzy predikáty:

ESET: nové způsoby doručení zadního vchodu kyber skupiny OceanLotus
Obrázek 7. Fuzzy predikáty

Po těchto zavádějících kontrolách kód získá sekci .text soubory TCPSVCS.exe, změní její ochranu na PAGE_EXECUTE_READWRITE a přepíše ji přidáním fiktivních pokynů:

ESET: nové způsoby doručení zadního vchodu kyber skupiny OceanLotus
Obrázek 8. Sekvence pokynů

Na konci k adrese funkce FLVCore::Uninitialize(void), exportované Flash Video Extension.dll, se přidá pokyn CALL. To znamená, že po načtení škodlivé DLL, když běhové prostředí zavolá WinMain v TCPSVCS.exe, bude ukazatel instrukce směřovat na NOP, což způsobí FLVCore::Uninitialize(void), další fázi.

Funkce jednoduše vytvoří mutex, začínající s {181C8480-A975-411C-AB0A-630DB8B0A221}, za nímž následuje aktuální uživatelské jméno. Poté přečte vymazaný soubor s příponou *.db3, který obsahuje kód nezávislý na pozici, a používá CreateThread k provedení obsahu.

Obsah souboru *.db3 představuje shellcode, který obvykle využívá skupina OceanLotus. Opět jsme úspěšně rozbalili jeho užitečné zatížení pomocí emulátorového skriptu, který jsme publikovali na GitHubu.

Skript extrahuje finální fázi. Tento komponent je backdoor, který jsme již analyzovali v předchozí studii OceanLotus. To lze určit podle GUID {A96B020F-0000-466F-A96D-A91BBF8EAC96} binárního souboru. Konfigurace škodlivého kódu je stále šifrována v RE zdroji. Má zhruba stejnou konfiguraci, ale C&C servery se liší od předchozích:

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

Skupina OceanLotus opět ukazuje kombinaci různých technik, aby se vyhnula detekci. Vrátili se s „vylepšeným“ schématem procesu infekce. Výběrem náhodných názvů a vyplněním spustitelných souborů náhodnými daty snižují počet důvěryhodných IoC (na základě hashů a názvů souborů). Navíc díky použití externího načítání DLL útočníci potřebují pouze odstranit legitimní binární soubor AcroTranscoder.

Samoextrahující archivy

Po RTF souborech skupina přešla na samoextrahující (SFX) archivy s běžnými ikonami dokumentů, aby ještě více zmátla uživatele. O tom psali v Threatbook (odkaz v čínštině). Po spuštění se extrahují samorozbalovací RAR soubory a vykonávají se DLL s příponou .ocx, jejichž konečné zatížení bylo dříve zdokumentováno. {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. Od poloviny ledna 2019 OceanLotus tuto techniku znovu využívá, ale s časem mění některé konfigurace. V této části vám představíme techniku a změny.

Vytváření návnady

Dokument THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) byl poprvé nalezen v roce 2018. Tento SFX soubor byl vytvořen promyšleně – v popisu (Informace o verzi) se uvádí, že se jedná o JPEG obrázek. Skript SFX vypadá následovně:

ESET: nové způsoby doručení zadního vchodu kyber skupiny OceanLotus
Obrázek 9. Příkazy SFX

Malware extrahuje {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC), a také obrázek 2018 thich thong lac.jpg.

Obrázek návnady vypadá následovně:

ESET: nové způsoby doručení zadního vchodu kyber skupiny OceanLotus
Obrázek 10. Obrázek návnady

Možná jste si všimli, že první dvě řádky ve skriptu SFX zdvojnásobují volání OSH souboru, ale to není chyba.

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

Tok řízení OSH souboru je velmi podobný jiným komponentám OceanLotus – mnoho sekvencí příkazů JZ/JNZ a PUSH/RET, střídající se s odpadkovým kódem.

ESET: nové způsoby doručení zadního vchodu kyber skupiny OceanLotus
Obrázek 11. Obfuskovaný kód

Po filtrování odpadkového kódu export DllRegisterServer, vyvolaný regsvr32.exe, vypadá následovně:

ESET: nové způsoby doručení zadního vchodu kyber skupiny OceanLotus
Obrázek 12. Hlavní kód instalátoru

Podstatou je, že při prvním volání DllRegisterServer export nastavuje hodnotu registru HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model na zašifrovaný ofset v DLL (0x10001DE0).

Když je funkce vyvolána podruhé, čte stejnou hodnotu a vykonává se na této adrese. Odtud se čtou a vykonávají prostředky a mnoho akcí v paměti.

Shell code je stejný jako zaváděč PE, používaný v minulých kampaních OceanLotus. Může být emulován pomocí našeho skriptu. Nakonec se extrahuje db293b825dcc419ba7dc2c49fa2757ee.dll, načež se načte do paměti a vykonává DllEntry.

DLL extrahuje obsah svého zdroje, dešifruje (AES-256-CBC) a rozbalí (LZMA). Zdroje mají specifický formát, který se snadno dekompiluje.

ESET: nové způsoby doručení zadního vchodu kyber skupiny OceanLotus
Obrázek 13. Struktura konfigurace instalátoru (KaitaiStruct Visualizer)

Konfigurace je jasně nastavena – v závislosti na úrovni oprávnění budou binární data zapisována do %appdata%IntellogsBackgroundUploadTask.cpl nebo %windir%System32BackgroundUploadTask.cpl (nebo SysWOW64 pro 64bitové systémy).

Dále je persistenci zajištěno vytvořením úkolu s názvem BackgroundUploadTask[junk].job, kde [junk] představuje soubor bytů 0x9D a 0xA0.

Název aplikačního úkolu %windir%System32control.exe, a hodnota parametru – cesta k vyexportovanému binárnímu souboru. Skrytý úkol se spouští každý den.

Konstructivně soubor CPL představuje DLL s interním názvem ac8e06de0a6c4483af9837d96504127e.dll, která exportuje funkci CPlApplet. Tento soubor dešifruje svůj jediný zdroj {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, poté načte tuto DLL a zavolá její jediný export DllEntry.

Konfigurační soubor backdooru

Konfigurace backdooru je šifrována a integrovaná do jeho zdrojů. Struktura konfiguračního souboru je velmi podobná předchozí.

ESET: nové způsoby doručení zadního vchodu kyber skupiny OceanLotus
Obrázek 14. Struktura konfigurace backdooru (KaitaiStruct Visualizer)

I když má podobnou strukturu, hodnoty mnoha polí byly aktualizovány ve srovnání s daty uvedenými v naší staré zprávě.

První prvek binárního pole obsahuje DLL (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), identifikovanou Tencent. Ale protože název exportu byl odstraněn z binárního souboru, hash se neshoduje.

Další výzkum

Při sběru vzorků jsme si všimli některých charakteristik. Čerstvě popsaný vzorek se objevil přibližně v červenci 2018 a ostatní podobné mu – teprve nedávno, v polovině ledna – začátkem února 2019. Jako vektor infekce byl použit archiv SFX, který uvolnil legitimní dokument jako návnadu a škodlivý soubor OCX.

I když OceanLotus používají falešné časové razítka, všimli jsme si, že časová razítka souborů SFX a OCX jsou vždy stejná (0x57B0C36A (08/14/2016 @ 7:15pm UTC) a 0x498BE80F (02/06/2009 @ 7:34am UTC) respektive). Pravděpodobně to naznačuje, že autoři mají jakýsi „konstruátor“, který používá stejné šablony a prostě mění některé charakteristiky.

Mezi dokumenty, které jsme zkoumali od začátku roku 2018, se objevují různá názvy, které naznačují zájem útočníků o země:

— The New Contact Information Of Cambodia Media(New).xls.exe
— 李建香 (个人简历).exe (falešný PDF dokument životopisu)
— feedback, Rally in USA from July 28-29, 2018.exe

Od doby, kdy byl backdoor objeven {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll a publikován jeho rozbor několika výzkumníky, jsme zaznamenali určité změny v datech konfigurace škodlivého softwaru.

Za prvé, autoři začali odstraňovat názvy z pomocných DLL DLLs (DNSprov.dll a dvě verze HttpProv.dll). Poté operátoři přestali balit třetí DLL (druhá verze HttpProv.dll), zvolili integraci pouze jedné.

Za druhé, mnoho polí konfigurace backdooru bylo změněno, pravděpodobně aby se předešlo odhalení, protože mnoho IoCs se stalo dostupnými. Mezi důležitými poli, která byla změněna autory, jsou následující:

  • byla změněna sekce registru AppX (viz IoCs)
  • řetězec kódování mutexu („def“, „abc“, „ghi“)
  • číslo portu

Nakonec se ve všech nových analyzovaných verzích objevily nové C&C, uvedené v části IoCs.

Závěry

OceanLotus se stále vyvíjí. Kybernetická skupina se zaměřuje na vylepšení a rozšíření svého nástroje a návnady. Autoři maskují zlovolné zatížení pomocí poutavých dokumentů, jejichž témata jsou relevantní pro zamýšlené oběti. Vyvíjejí nové schémata a také využívají veřejně dostupné nástroje, například exploit Equation Editor. Navíc zdokonalují nástroje, aby snížili počet artefaktů na strojích obětí, čímž snižují šanci na odhalení antivirovým softwarem.

Indikátory kompromitace

Indikátory kompromitace a také atributy MITRE ATT&CK jsou k dispozici na Welivesecurity a na GitHubu.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster