ESET: нови схеми за доставка на задната вратичка за кибергрупата OceanLotus

В тази публикация ще ви разкажем как кибергрупата OceanLotus (APT32 и APT-C-00) наскоро използва един от публично достъпните експлойти за CVE-2017 11882-, уязвимости на повреда на паметта в Microsoft Office и как зловредният софтуер на групата постига устойчивост на компрометирани системи, без да оставя следа. След това ще опишем как от началото на 2019 г. групата използва саморазархивиращи се архиви за изпълнение на код.

OceanLotus е специализирана в кибершпионаж, като приоритетни цели са страни от Югоизточна Азия. Нападателите фалшифицират документи, които привличат вниманието на потенциалните жертви, за да ги убедят да изпълнят задната врата, и също работят върху разработването на инструменти. Методите, използвани за създаване на honeypots, варират при различните атаки, от файлове с „двойно разширение“, саморазархивиращи се архиви, документи с макроси до известни експлойти.

ESET: нови схеми за доставка на задната вратичка за кибергрупата OceanLotus

Използване на експлойт в Microsoft Equation Editor

В средата на 2018 г. OceanLotus проведе кампания, използваща уязвимостта CVE-2017-11882. Един от злонамерените документи на кибергрупата е анализиран от специалисти от 360 Threat Intelligence Center (изследвания на китайски език), включително подробно описание на експлойта. Публикацията по-долу съдържа общ преглед на такъв злонамерен документ.

Първият етап

Документът FW Report on demonstration of former CNRP in Republic of Korea.doc (SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3) е подобен на споменатия в проучването по-горе. Интересен е, защото е насочен към потребители, интересуващи се от политиката на Камбоджа (CNRP - Камбоджанска национална спасителна партия, разпусната в края на 2017 г.). Въпреки разширението .doc, документът е в RTF формат (вижте снимката по-долу), съдържа код за боклук и също е изкривен.

ESET: нови схеми за доставка на задната вратичка за кибергрупата OceanLotus
Фигура 1. "Боклук" в RTF

Въпреки че има изкривени елементи, Word отваря този RTF файл успешно. Както можете да видите на Фигура 2, има структура EQNOLEFILEHDR при отместване 0xC00, последвана от MTEF заглавка и след това MTEF запис (Фигура 3) за шрифта.

ESET: нови схеми за доставка на задната вратичка за кибергрупата OceanLotus
Фигура 2. Стойности за въвеждане на FONT

ESET: нови схеми за доставка на задната вратичка за кибергрупата OceanLotus
Фигура 3. Формат на запис на FONT

Възможно преливане в полето име, защото размерът му не се проверява преди копиране. Твърде дългото име задейства уязвимост. Както можете да видите от съдържанието на RTF файла (отместване 0xC26 на фигура 2), буферът е пълен с шелкод, последван от фиктивна команда (0x90) и обратен адрес 0x402114. Адресът е диалогов елемент в EQNEDT32.exe, посочвайки инструкции RET. Това кара EIP да сочи към началото на полето имесъдържащ шелкода.

ESET: нови схеми за доставка на задната вратичка за кибергрупата OceanLotus
Фигура 4. Начало на шелкода на експлойта

адрес 0x45BD3C съхранява променлива, която се дереферира, докато достигне указател към текущо заредената структура MTEFData. Останалата част от shellcode е тук.

Целта на шелкода е да изпълни втората част от шелкода, вградена в отворения документ. Оригиналният шелкод първо се опитва да намери файловия дескриптор на отворения документ чрез повторение на всички системни дескриптори (NtQuerySystemInformation с аргумент SystemExtendedHandleInformation) и проверка дали съвпадат PID дескриптор и PID процес WinWord и дали документът е отворен с маска за достъп - 0x12019F.

За да потвърдите, че е намерен правилният манипулатор (а не манипулаторът на друг отворен документ), съдържанието на файла се показва с помощта на функцията CreateFileMapping, а шелкодът проверява дали последните четири байта от документа съвпадат "yyyy"(Метод на лов на яйца). След като бъде намерено съвпадение, документът се копира във временна папка (GetTempPath) Как ole.dll. След това се четат последните 12 байта от документа.

ESET: нови схеми за доставка на задната вратичка за кибергрупата OceanLotus
Фигура 5. Маркери за край на документа

32-битова стойност между маркерите AABBCCDD и yyyy е отместването на следващия шелкод. Извиква се с помощта на функцията CreateThread. Извлечен е същият shellcode, който е бил използван от групата OceanLotus по-рано. Скрипт за емулация на Python, който пуснахме през март 2018 г., все още работи за дъмпа на втория етап.

Вторият етап

Премахване на компоненти

Имената на файлове и директории се избират динамично. Кодът произволно избира името на изпълнимия или DLL файл в C:Windowssystem32. След това прави заявка към своите ресурси и извлича полето FileDescription да използвате като име на папка. Ако това не работи, кодът произволно избира име на папка от директориите %ProgramFiles% или C:Windows (от GetWindowsDirectoryW). Той избягва използването на име, което може да е в конфликт със съществуващи файлове и гарантира, че не съдържа следните думи: windows, Microsoft, desktop, system, system32 или syswow64. Ако директорията вече съществува, към името се добавя "NLS_{6 знака}".

средство 0x102 се анализира и файловете се изхвърлят в %ProgramFiles% или %AppData%, в произволно избрана папка. Променено време на създаване, за да има същите стойности като kernel32.dll.

Например, тук е папката и списъкът с файлове, създадени чрез избиране на изпълним файл C:Windowssystem32TCPSVCS.exe като източник на данни.

ESET: нови схеми за доставка на задната вратичка за кибергрупата OceanLotus
Фигура 6. Извличане на различни компоненти

Ресурсна структура 0x102 в капкомер е доста сложно. Накратко, той съдържа:
— Имена на файлове
— Размер и съдържание на файла
— Формат на компресия (COMPRESSION_FORMAT_LZNT1, използвани от функцията RtlDecompressBuffer)

Първият файл се нулира като TCPSVCS.exe, което е законно AcroTranscoder.exe (Според FileDescription, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).

Може би сте забелязали, че някои DLL файлове са по-големи от 11 MB. Това е така, защото в изпълнимия файл се поставя голям непрекъснат буфер от произволни данни. Възможно е това да е начин да се избегне откриването от някои продукти за сигурност.

Осигуряване на постоянство

средство 0x101 в капкомера съдържа две 32-битови цели числа, които указват как трябва да се осигури постоянство. Стойността на първата указва как злонамереният софтуер ще продължи да съществува без администраторски права.

ESET: нови схеми за доставка на задната вратичка за кибергрупата OceanLotus
Таблица 1. Механизъм за постоянство без администраторски права

Стойността на второто цяло число указва как зловредният софтуер трябва да постигне устойчивост, когато работи с администраторски права.

ESET: нови схеми за доставка на задната вратичка за кибергрупата OceanLotus
Таблица 2. Механизъм за постоянство с администраторски права

Името на услугата е името на файла без разширение; показваното име е името на папката, но ако вече съществува, към нея се добавя низът „Revision 1” (числото се увеличава, докато се намери неизползвано име). Операторите се увериха, че постоянството през услугата е стабилно - в случай на повреда услугата трябва да се рестартира след 1 секунда. След това стойността WOW64 Ключът в регистъра на новата услуга е зададен на 4, което показва, че е 32-битова услуга.

Планирана задача се създава чрез няколко COM интерфейса: ITaskScheduler, ITask, ITaskTrigger, IPersistFile и ITaskScheduler. По същество зловредният софтуер създава скрита задача, задава информацията за акаунта заедно с информацията за текущия потребител или администратор и след това задава тригера.

Това е ежедневна задача с продължителност 24 часа и интервали между две изпълнения от 10 минути, което означава, че ще работи непрекъснато.

Злонамерен бит

В нашия пример, изпълнимият файл TCPSVCS.exe (AcroTranscoder.exe) е законен софтуер, който зарежда DLL файлове, които се нулират заедно с него. В случая представлява интерес Flash Video Extension.dll.

Функцията му DLLMain просто извиква друга функция. Присъстват някои размити предикати:

ESET: нови схеми за доставка на задната вратичка за кибергрупата OceanLotus
Фигура 7. Размити предикати

След тези подвеждащи проверки кодът получава раздел .text файл TCPSVCS.exe, променя защитата си на PAGE_EXECUTE_READWRITE и го пренаписва чрез добавяне на фиктивни инструкции:

ESET: нови схеми за доставка на задната вратичка за кибергрупата OceanLotus
Фигура 8. Последователност от инструкции

В края на адреса на функцията FLVCore::Uninitialize(void), изнесени Flash Video Extension.dll, се добавя инструкция CALL. Това означава, че след зареждането на злонамерената DLL, когато времето за изпълнение извиква WinMain в TCPSVCS.exe, указателят на инструкцията ще сочи към NOP, причинявайки FLVCore::Uninitialize(void), следващ етап.

Функцията просто създава mutex, започвайки с {181C8480-A975-411C-AB0A-630DB8B0A221}последвано от текущото потребителско име. След това той чете дъмповия *.db3 файл, който съдържа код, независим от позицията, и използва CreateThread за изпълнение на съдържанието.

Съдържанието на *.db3 файла е shellcode, който групата OceanLotus обикновено използва. Отново успешно разопаковахме полезния му товар с помощта на скрипта на емулатора, който публикувахме на GitHub.

Скриптът извлича последния етап. Този компонент е задна врата, която вече анализирахме предишно проучване на OceanLotus. Това може да се определи от GUID {A96B020F-0000-466F-A96D-A91BBF8EAC96} двоичен файл. Конфигурацията на зловреден софтуер все още е шифрована в PE ресурса. Има приблизително същата конфигурация, но C&C сървърите са различни от предишните:

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

Екипът на OceanLotus отново демонстрира комбинация от различни техники за избягване на откриване. Те се върнаха с „усъвършенствана“ диаграма на процеса на заразяване. Чрез избиране на произволни имена и попълване на изпълними файлове с произволни данни, те намаляват броя на надеждните IoC (въз основа на хешове и имена на файлове). Освен това, благодарение на използването на зареждане на DLL от трети страни, нападателите трябва само да премахнат легитимния двоичен файл AcroTranscoder.

Саморазархивиращи се архиви

След RTF файловете групата премина към саморазархивиращи се (SFX) архиви с общи икони на документи, за да обърка допълнително потребителя. Threatbook писа за това (връзка на китайски). При стартиране саморазархивиращите се RAR файлове се премахват и се изпълняват DLL файлове с разширение .ocx, чийто краен полезен товар е предварително документиран {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. От средата на януари 2019 г. OceanLotus използва повторно тази техника, но променя някои конфигурации с течение на времето. В този раздел ще говорим за техниката и промените.

Създаване на примамка

Документът THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) е открит за първи път през 2018 г. Този SFX файл е създаден мъдро - в описанието (Информация за версията) пише, че това е JPEG изображение. SFX скриптът изглежда така:

ESET: нови схеми за доставка на задната вратичка за кибергрупата OceanLotus
Фигура 9. SFX команди

Зловреден софтуер се нулира {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC), както и снимка 2018 thich thong lac.jpg.

Изображението на примамката изглежда така:

ESET: нови схеми за доставка на задната вратичка за кибергрупата OceanLotus
Фигура 10. Изображение на примамка

Може би сте забелязали, че първите два реда в SFX скрипта извикват OCX файла два пъти, но това не е грешка.

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

Контролният поток на OCX файл е много подобен на други компоненти на OceanLotus - много командни последователности JZ/JNZ и PUSH/RET, редувайки се с код за боклук.

ESET: нови схеми за доставка на задната вратичка за кибергрупата OceanLotus
Фигура 11. Обфусциран код

След като филтрирате нежелания код, експортирайте DllRegisterServer, Наречен regsvr32.exe, изглежда както следва:

ESET: нови схеми за доставка на задната вратичка за кибергрупата OceanLotus
Фигура 12. Основен код на инсталатора

По принцип при първото обаждане DllRegisterServer експортиране задава стойност в регистъра HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model за шифровано отместване в DLL (0x10001DE0).

Когато функцията се извика втори път, тя чете същата стойност и се изпълнява на този адрес. От тук ресурсът и много действия в RAM се четат и изпълняват.

Shellcode е същият PE loader, използван в минали кампании на OceanLotus. Може да се емулира с помощта на нашия скрипт. В крайна сметка той се нулира db293b825dcc419ba7dc2c49fa2757ee.dll, зарежда го в паметта и го изпълнява DllEntry.

DLL извлича съдържанието на своя ресурс, декриптира го (AES-256-CBC) и го декомпресира (LZMA). Ресурсът има специфичен формат, който е лесен за декомпилиране.

ESET: нови схеми за доставка на задната вратичка за кибергрупата OceanLotus
Фигура 13. Конфигурационна структура на инсталатора (KaitaiStruct Visualizer)

Конфигурацията е посочена изрично - в зависимост от нивото на привилегия ще се записват двоични данни %appdata%IntellogsBackgroundUploadTask.cpl или %windir%System32BackgroundUploadTask.cpl (Or SysWOW64 за 64-битови системи).

Допълнителна устойчивост се осигурява чрез създаване на задача с името BackgroundUploadTask[junk].jobКъдето [junk] представлява набор от байтове 0x9D и 0xA0.

Име на приложението за задача %windir%System32control.exe, а стойността на параметъра е пътят до изтегления двоичен файл. Скритата задача се изпълнява всеки ден.

Структурно, CPL файлът е DLL с вътрешно име ac8e06de0a6c4483af9837d96504127e.dll, който експортира функция CPlApplet. Този файл дешифрира единствения си ресурс {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, след това зарежда този DLL и извиква единственото му експортиране DllEntry.

Backdoor конфигурационен файл

Конфигурацията на задната врата е криптирана и вградена в нейните ресурси. Структурата на конфигурационния файл е много подобна на предишната.

ESET: нови схеми за доставка на задната вратичка за кибергрупата OceanLotus
Фигура 14. Конфигурационна структура на задната врата (KaitaiStruct Visualizer)

Въпреки че структурата е подобна, много от стойностите на полетата са актуализирани от показаните в нашият стар доклад.

Първият елемент от двоичния масив съдържа DLL (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), идентифициран от Tencent. Но тъй като името на експорта беше премахнато от двоичния файл, хешовете не съвпадат.

Допълнителни изследвания

Докато събирахме проби, забелязахме някои характеристики. Току-що описаният екземпляр се появи около юли 2018 г., а други като него се появиха наскоро в средата на януари до началото на февруари 2019 г. Архивът на SFX беше използван като вектор на инфекция, изпускайки легитимен документ-примамка и злонамерен OSX файл.

Въпреки че OceanLotus използва фалшиви времеви марки, забелязахме, че времевите марки на SFX и OCX файловете винаги са еднакви (0x57B0C36A (08 @ 14:2016 UTC) и 0x498BE80F (02/06/2009 @ 7:34 сутринта UTC) съответно). Това вероятно показва, че авторите имат някакъв „дизайнер“, който използва същите шаблони и просто променя някои характеристики.

Сред документите, които проучихме от началото на 2018 г., има различни имена, посочващи страните, представляващи интерес за нападателите:

— Новата информация за контакт на Cambodia Media (Ново).xls.exe
— 李建香 (个人简历).exe (фалшив pdf документ на CV)
— обратна връзка, Рали в САЩ от 28-29 юли 2018 г. exe

Тъй като задната врата беше открита {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll и публикуването на неговия анализ от няколко изследователи, наблюдавахме някои промени в данните за конфигурацията на зловреден софтуер.

Първо, авторите започнаха да премахват имената от помощните DLL файлове (DNSprov.dll и две версии HttpProv.dll). След това операторите спряха да пакетират третия DLL (втората версия HttpProv.dll), като изберете да вградите само един.

Второ, много полета за конфигурация на задната вратичка бяха променени, което вероятно ще избегне откриването, тъй като много IoC станаха достъпни. Важни полета, модифицирани от авторите, включват:

  • Ключът на системния регистър на AppX е променен (вижте IoC)
  • mutex кодиращ низ ("def", "abc", "ghi")
  • номер на пристанище

И накрая, всички нови анализирани версии имат нови C&C, изброени в раздела IoC.

Данни

OceanLotus продължава да се развива. Кибер групата е фокусирана върху усъвършенстване и разширяване на инструментите и примамките. Авторите маскират злонамерени полезни товари, като използват привличащи вниманието документи, чиято тема е подходяща за предвидените жертви. Те разработват нови схеми и също така използват публично достъпни инструменти, като експлойта Equation Editor. Освен това те подобряват инструментите за намаляване на броя на артефактите, оставащи на машините на жертвите, като по този начин намаляват шанса за откриване от антивирусен софтуер.

Показатели за компромис

Налични са индикатори за компромис, както и атрибути на MITER ATT&CK на Welivesecurity и на GitHub.

Източник: www.habr.com

Добавяне на нов коментар