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

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

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

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

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

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

Адрес 0x45BD3C съхранява променлива, която се разименова, докато не достигне указателя на текущата заредена структура MTEFData. Тук се намира оставащата част от шелл-кода.

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

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

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

32-битна стойност между маркерите AABBCCDD и yyyy – е офсетът на следващия шелл-код. Той се извиква с помощта на функцията CreateThread. Извлечен е същият шелл-код, който е използван от групата 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), следващият етап.

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

Съдържанието на файла *.db3 представлява шелл-код, който обикновено използва групата 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 два пъти извикват OSS файла, но това не е грешка.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Файлът на конфигурацията на бекдора

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

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

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

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

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

Събирайки образци, ние забелязахме някои характеристики. Описаният образец се появи около юли 2018 г., а други подобни - съвсем наскоро, в средата на януари - началото на февруари 2019 г. Като вектор на инфекция беше използван SFX архив, който разтоварва легитимен файл-примамка и злонамерен файл OCX.

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

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

— The New Contact Information Of Cambodia Media(New).xls.exe
— 李建香 (个人简历).exe (фалшив PDF документ на автобиография)
— feedback, Rally in USA from July 28-29, 2018.exe

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

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

На второ място, много полета от конфигурацията на бекдора бяха променени, вероятно за да избегнат откритие, тъй като много IoC (индикатори на компрометиране) станаха достъпни. Сред важните полета, променени от авторите, са следните:

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

Накрая, във всички нови анализирани версии се появиха нови C&C, изброени в раздела IoC.

Изводи

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

Индикатори на компрометиране

Индикаторите на компрометиране, както и атрибутите MITRE ATT&CK, са налични на Welivesecurity и в GitHub.

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

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster