ESET: nová schémata doručování backdoor pro kybernetickou skupinu OceanLotus

V tomto příspěvku vám prozradíme, jak kybernetická skupina OceanLotus (APT32 a APT-C-00) nedávno využila jeden z veřejně dostupných exploitů pro CVE-2017-11882, zranitelnosti poškození paměti v Microsoft Office a jak malware skupiny dosahuje perzistence na kompromitovaných systémech bez zanechání stopy. Dále si popíšeme, jak od začátku roku 2019 skupina používá ke spouštění kódu samorozbalovací archivy.

OceanLotus se specializuje na kybernetickou špionáž, přičemž prioritními cíli jsou země jihovýchodní Asie. Útočníci padělají dokumenty, které přitahují pozornost potenciálních obětí, aby je přesvědčili, aby provedli zadní vrátka, a také pracují na vývoji nástrojů. Metody používané k vytváření honeypotů se u různých útoků liší, od souborů s dvojitým rozšířením, samorozbalovacích archivů, dokumentů s makry až po známé exploity.

ESET: nová schémata doručování backdoor pro kybernetickou skupinu OceanLotus

Použití exploitu v Microsoft Equation Editor

V polovině roku 2018 provedl OceanLotus kampaň využívající zranitelnost CVE-2017-11882. Jeden ze škodlivých dokumentů kybernetické skupiny analyzovali specialisté z 360 Threat Intelligence Center (výzkum v čínštině), včetně podrobného popisu exploitu. Níže uvedený příspěvek obsahuje přehled takového škodlivého dokumentu.

První etapa

Dokument FW Report on demonstration of former CNRP in Republic of Korea.doc (SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3) je podobný tomu, který je zmíněn ve výše uvedené studii. Je zajímavý tím, že cílí na uživatele zajímající se o kambodžskou politiku (CNRP – Cambodia National Rescue Party, rozpuštěna na konci roku 2017). Přes příponu .doc je dokument ve formátu RTF (viz obrázek níže), obsahuje garbage code a navíc je zkreslený.

ESET: nová schémata doručování backdoor pro kybernetickou skupinu OceanLotus
Obrázek 1. "Garbage" v RTF

Přestože jsou zde zkomolené prvky, Word tento soubor RTF úspěšně otevře. Jak můžete vidět na obrázku 2, existuje struktura EQNOLEFILEHDR na offsetu 0xC00, následuje záhlaví MTEF a poté položka MTEF (obrázek 3) pro písmo.

ESET: nová schémata doručování backdoor pro kybernetickou skupinu OceanLotus
Obrázek 2. Hodnoty vstupu FONT

ESET: nová schémata doručování backdoor pro kybernetickou skupinu OceanLotus
Obrázek 3. Formát záznamu FONT

Možný přepad v terénu název, protože jeho velikost se před kopírováním nekontroluje. Příliš dlouhý název spouští chybu zabezpečení. Jak můžete vidět z obsahu souboru RTF (offset 0xC26 na obrázku 2), vyrovnávací paměť je naplněna kódem shellu následovaným fiktivním příkazem (0x90) a zpáteční adresu 0x402114. Adresa je prvek dialogu EQNEDT32.exe, s uvedením pokynů RET. To způsobí, že EIP ukáže na začátek pole názevobsahující shell kód.

ESET: nová schémata doručování backdoor pro kybernetickou skupinu OceanLotus
Obrázek 4. Začátek exploitu shell kódu

adresa 0x45BD3C ukládá proměnnou, která je dereferencována, dokud nedosáhne ukazatele na aktuálně načtenou strukturu MTEFData. Zbytek shell kódu je zde.

Účelem shell kódu je spustit druhou část kódu shellu vloženého do otevřeného dokumentu. Původní kód shellu se nejprve pokusí najít deskriptor souboru otevřeného dokumentu iterací přes všechny systémové deskriptory (NtQuerySystemInformation s argumentem SystemExtendedHandleInformation) a zkontrolujte, zda se shodují PID deskriptor a PID proces WinWord a zda byl dokument otevřen s přístupovou maskou - 0x12019F.

Aby se potvrdilo, že byl nalezen správný popisovač (a nikoli popisovač jiného otevřeného dokumentu), zobrazí se obsah souboru pomocí funkce CreateFileMappinga shell kód zkontroluje, zda se poslední čtyři bajty dokumentu shodují "yyyy"(Metoda lovu vajec). Jakmile je nalezena shoda, dokument se zkopíruje do dočasné složky (GetTempPath) tak jako ole.dll. Poté se přečte posledních 12 bajtů dokumentu.

ESET: nová schémata doručování backdoor pro kybernetickou skupinu OceanLotus
Obrázek 5. Konec značek dokumentů

32bitová hodnota mezi značkami AABBCCDD и yyyy je offset dalšího shell kódu. Volá se pomocí funkce CreateThread. Byl extrahován stejný kód shellu, který dříve používala skupina OceanLotus. Python emulační skript, který jsme vydali v březnu 2018, stále funguje pro skládku druhé fáze.

Druhá etapa

Odebírání součástí

Názvy souborů a adresářů jsou vybírány dynamicky. Kód náhodně vybere název spustitelného souboru nebo souboru DLL C:Windowssystem32. Poté odešle požadavek na své zdroje a načte pole FileDescription použít jako název složky. Pokud to nefunguje, kód náhodně vybere název složky z adresářů %ProgramFiles% nebo C:Windows (z GetWindowsDirectoryW). Vyhýbá se použití názvu, který by mohl být v konfliktu s existujícími soubory, a zajišťuje, že neobsahuje následující slova: windows, Microsoft, desktop, system, system32 nebo syswow64. Pokud adresář již existuje, je k názvu připojeno "NLS_{6 znaků}".

prostředky 0x102 je analyzován a soubory jsou uloženy do %ProgramFiles% nebo %AppData%, do náhodně vybrané složky. Změněn čas vytvoření, aby měl stejné hodnoty jako kernel32.dll.

Zde je například složka a seznam souborů vytvořených výběrem spustitelného souboru C:Windowssystem32TCPSVCS.exe jako zdroj dat.

ESET: nová schémata doručování backdoor pro kybernetickou skupinu OceanLotus
Obrázek 6. Extrakce různých komponent

Struktura zdrojů 0x102 v kapátku je poměrně složitý. Stručně řečeno, obsahuje:
— Názvy souborů
— Velikost a obsah souboru
— Formát komprese (COMPRESSION_FORMAT_LZNT1, kterou funkce používá RtlDecompressBuffer)

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

Možná jste si všimli, že některé soubory DLL jsou větší než 11 MB. Důvodem je, že uvnitř spustitelného souboru je umístěna velká souvislá vyrovnávací paměť náhodných dat. Je možné, že se jedná o způsob, jak se vyhnout detekci některými bezpečnostními produkty.

Zajištění vytrvalosti

prostředky 0x101 v dropperu obsahuje dvě 32bitová celá čísla, která určují, jak má být poskytována persistence. Hodnota první určuje, jak bude malware přetrvávat bez práv správce.

ESET: nová schémata doručování backdoor pro kybernetickou skupinu OceanLotus
Tabulka 1. Mechanismus perzistence bez administrátorských práv

Hodnota druhého celého čísla určuje, jak by měl malware dosáhnout perzistence při spuštění s právy správce.

ESET: nová schémata doručování backdoor pro kybernetickou skupinu OceanLotus
Tabulka 2. Mechanismus perzistence s právy správce

Název služby je název souboru bez přípony; zobrazovaný název je název složky, ale pokud již existuje, je k ní připojen řetězec „Revision 1” (číslo se zvyšuje, dokud není nalezeno nepoužité jméno). Operátoři se ujistili, že perzistence prostřednictvím služby byla robustní - v případě selhání by měla být služba restartována po 1 sekundě. Potom hodnota WOW64 Klíč registru nové služby je nastaven na 4, což znamená, že se jedná o 32bitovou službu.

Naplánovaná úloha se vytváří prostřednictvím několika rozhraní COM: ITaskScheduler, ITask, ITaskTrigger, IPersistFile и ITaskScheduler. Malware v podstatě vytvoří skrytou úlohu, nastaví informace o účtu spolu s informacemi o aktuálním uživateli nebo správci 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 probíhat nepřetržitě.

Škodlivý kousek

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

Jeho funkce DLLMain jen volá jinou funkci. Jsou přítomny některé fuzzy predikáty:

ESET: nová schémata doručování backdoor pro kybernetickou skupinu OceanLotus
Obrázek 7. Fuzzy predikáty

Po těchto zavádějících kontrolách získá kód sekci .text soubor TCPSVCS.exe, mění svou obranu na PAGE_EXECUTE_READWRITE a přepíše jej přidáním falešných pokynů:

ESET: nová schémata doručování backdoor pro kybernetickou skupinu OceanLotus
Obrázek 8. Posloupnost instrukcí

Na konci k adrese funkce FLVCore::Uninitialize(void), exportováno Flash Video Extension.dll, je přidána instrukce CALL. To znamená, že po načtení škodlivé DLL, když runtime volá WinMain в TCPSVCS.exe, ukazatel instrukce bude ukazovat na NOP, což způsobí FLVCore::Uninitialize(void), další fáze.

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

Obsah souboru *.db3 je kód shellu, který skupina OceanLotus obvykle používá. Opět jsme úspěšně rozbalili jeho užitečné zatížení pomocí skriptu emulátoru, který jsme zveřejnili na GitHub.

Scénář extrahuje závěrečnou fázi. Tato komponenta je zadní vrátka, kterou jsme již analyzovali předchozí studie OceanLotus. To lze určit pomocí GUID {A96B020F-0000-466F-A96D-A91BBF8EAC96} binární soubor. Konfigurace malwaru je stále zašifrována v prostředku PE. Má přibližně stejnou konfiguraci, ale servery C&C se liší od předchozích:

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

Tým OceanLotus opět předvádí kombinaci různých technik, jak se vyhnout odhalení. Vrátili se s „rafinovaným“ diagramem procesu infekce. Výběrem náhodných jmen a plněním spustitelných souborů náhodnými daty snižují počet spolehlivých IoC (na základě hashů a názvů souborů). Navíc díky použití načítání DLL třetích stran útočníkům stačí odstranit legitimní binární soubor AcroTranscoder.

Samorozbalovací archivy

Po souborech RTF se skupina přesunula do samorozbalovacích (SFX) archivů s běžnými ikonami dokumentů, aby uživatele ještě více zmátla. O tom psala Threatbook (odkaz v čínštině). Po spuštění jsou samorozbalovací soubory RAR odstraněny a jsou spuštěny knihovny DLL s příponou .ocx, jejichž konečné užitečné zatížení bylo dříve zdokumentováno {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. Od poloviny ledna 2019 OceanLotus znovu používá tuto techniku, ale postupem času mění některé konfigurace. V této části budeme hovořit o technice a změnách.

Vytvoření návnady

Dokument THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) byl poprvé nalezen v roce 2018. Tento soubor SFX byl vytvořen moudře - v popisu (Informace o verzi) říká, že se jedná o obrázek JPEG. Skript SFX vypadá takto:

ESET: nová schémata doručování backdoor pro kybernetickou skupinu OceanLotus
Obrázek 9. Příkazy SFX

Malware se resetuje {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC), stejně jako obrázek 2018 thich thong lac.jpg.

Obrázek návnady vypadá takto:

ESET: nová schémata doručování backdoor pro kybernetickou skupinu OceanLotus
Obrázek 10. Obrázek návnady

Možná jste si všimli, že první dva řádky ve skriptu SFX volají soubor OCX dvakrát, ale nejedná se o chybu.

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

Řídicí tok souboru OCX je velmi podobný ostatním komponentám OceanLotus – mnoho příkazových sekvencí JZ/JNZ и PUSH/RET, střídající se s kódem odpadu.

ESET: nová schémata doručování backdoor pro kybernetickou skupinu OceanLotus
Obrázek 11. Zamotaný kód

Po odfiltrování nevyžádaného kódu exportujte DllRegisterServer, volal regsvr32.exe, jak následuje:

ESET: nová schémata doručování backdoor pro kybernetickou skupinu OceanLotus
Obrázek 12. Základní instalační kód

V podstatě při prvním hovoru DllRegisterServer export nastaví hodnotu registru HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model pro zašifrovaný offset v DLL (0x10001DE0).

Když je funkce volána podruhé, přečte stejnou hodnotu a provede se na této adrese. Odtud se čte a provádí zdroj a mnoho akcí v paměti RAM.

Shellcode je stejný PE loader používaný v minulých kampaních OceanLotus. Lze jej emulovat pomocí náš scénář. Nakonec se resetuje db293b825dcc419ba7dc2c49fa2757ee.dll, načte jej do paměti a spustí DllEntry.

DLL extrahuje obsah svého zdroje, dešifruje (AES-256-CBC) a dekomprimuje (LZMA). Zdroj má specifický formát, který lze snadno dekompilovat.

ESET: nová schémata doručování backdoor pro kybernetickou skupinu OceanLotus
Obrázek 13. Struktura konfigurace instalačního programu (KaitaiStruct Visualizer)

Konfigurace je specifikována explicitně - v závislosti na úrovni oprávnění budou zapsána binární data %appdata%IntellogsBackgroundUploadTask.cpl nebo %windir%System32BackgroundUploadTask.cpl (nebo SysWOW64 pro 64bitové systémy).

Další perzistence je zajištěna vytvořením úlohy s názvem BackgroundUploadTask[junk].jobKde [junk] představuje sadu bajtů 0x9D и 0xA0.

Název aplikace úkolu %windir%System32control.exea hodnota parametru je cesta ke staženému binárnímu souboru. Skrytá úloha běží každý den.

Strukturálně je soubor CPL DLL s interním názvem ac8e06de0a6c4483af9837d96504127e.dll, který exportuje funkci CPlApplet. Tento soubor dešifruje svůj jediný prostředek {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, pak načte tuto knihovnu DLL a zavolá její jediný export DllEntry.

Konfigurační soubor zadních vrátek

Konfigurace zadních vrátek je zašifrována a vložena do jejích prostředků. Struktura konfiguračního souboru je velmi podobná předchozímu.

ESET: nová schémata doručování backdoor pro kybernetickou skupinu OceanLotus
Obrázek 14. Struktura konfigurace zadních vrátek (KaitaiStruct Visualizer)

Ačkoli je struktura podobná, mnoho hodnot polí bylo aktualizováno oproti hodnotám zobrazeným v naše stará zpráva.

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

Doplňkový výzkum

Při sběru vzorků jsme si všimli některých charakteristik. Právě popsaný exemplář se objevil kolem července 2018 a další jemu podobné se objevily až od poloviny ledna do začátku února 2019. Archiv SFX byl použit jako vektor infekce, který shodil legitimní návnadu a škodlivý soubor OSX.

Přestože OceanLotus používá 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 v 7:15 UTC) a 0x498BE80F (02/06/2009 v 7:34 UTC)). To pravděpodobně naznačuje, že autoři mají nějakého „designéra“, který používá stejné šablony a jednoduše mění některé vlastnosti.

Mezi dokumenty, které jsme studovali od začátku roku 2018, jsou různá jména označující země, které útočníky zajímají:

— Nové kontaktní informace společnosti Cambodia Media (New).xls.exe
— 李建香 (个人简历).exe (falešný pdf dokument životopisu)
— zpětná vazba, Rally v USA od 28. do 29. července 2018.exe

Od objevení zadních vrátek {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll a zveřejnění jeho analýzy několika výzkumníky jsme zaznamenali určité změny v konfiguračních datech malwaru.

Nejprve autoři začali odstraňovat názvy z pomocných knihoven DLL (DNSprov.dll a dvě verze HttpProv.dll). Operátoři poté přestali balit třetí DLL (druhou verzi HttpProv.dll), který se rozhodl vložit pouze jeden.

Za druhé, mnoho konfiguračních polí zadních vrátek bylo změněno, což pravděpodobně uniklo detekci, protože bylo k dispozici mnoho IoC. Mezi důležitá pole upravená autory patří:

  • Klíč registru AppX změněn (viz IoC)
  • řetězec kódování mutex ("def", "abc", "ghi")
  • číslo portu

A konečně, všechny nové analyzované verze mají nové C&C uvedené v sekci IoC.

Závěry

OceanLotus pokračuje ve vývoji. Kybernetická skupina se zaměřuje na zdokonalování a rozšiřování nástrojů a návnad. Autoři maskují škodlivou zátěž pomocí poutavých dokumentů, jejichž téma je relevantní pro zamýšlené oběti. Vyvíjejí nová schémata a používají také veřejně dostupné nástroje, jako je exploit Editor rovnic. Kromě toho vylepšují nástroje ke snížení počtu artefaktů zbývajících na počítačích obětí, čímž snižují šanci na odhalení antivirovým softwarem.

Ukazatele kompromisu

K dispozici jsou indikátory kompromisu i atributy MITER ATT&CK na Welivesecurity и na GitHub.

Zdroj: www.habr.com

Přidat komentář