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 кибер-тобу үчүн жаңы бэкдор жеткирүү схемалары
Figure 3. Формат записи FONT

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

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 Мб. Это связано с тем, что большой непрерывный буфер случайных данных размещается внутри исполняемого файла. Не исключено, что это способ избежать обнаружения некоторыми продуктами для безопасности.

Обеспечение персистентности

каражат 0x101 в дроппере содержит два 32-битных целых числа, которые определяют, каким образом следует обеспечить персистентность. Значение первого указывает, как вредоносная программа будет сохранять персистентность без прав администратора.

ESET: OceanLotus кибер-тобу үчүн жаңы бэкдор жеткирүү схемалары
Таблица 1. Механизм персистентности без прав администратора

Значение второго целого числа указывает, как вредоносная программа должна обеспечить персистентность, работая с правами администратора.

ESET: OceanLotus кибер-тобу үчүн жаңы бэкдор жеткирүү схемалары
Таблица 2. Механизм персистентности с правами администратора

Имя службы – это имя файла без расширения; отображаемое имя – имя папки, но если оно уже существует, к нему добавляется строка “Revision 1” (число увеличивается до тех пор, пока не будет найдено неиспользуемое имя). Операторы позаботились о том, чтобы персистентность через службу была устойчивой – в случае сбоя служба должна быть перезапущена через 1 секунду. Затем значению WOW64 нового ключа реестра службы присваивается значение 4, что указывает на то, что это 32-разрядная служба.

Запланированное задание создается через несколько СОМ интерфейсов: 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} бинарного файла. Конфигурация вредоносного ПО все еще зашифрована в РЕ ресурсе. Он имеет примерно ту же конфигурацию, но 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 дважды вызывают ОСХ файл, но это не ошибка.

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

Поток управления ОСХ файла очень похож на другие компоненты OceanLotus – много последовательностей команд JZ/JNZ и PUSH/RET, чередующихся с мусорным кодом.

ESET: OceanLotus кибер-тобу үчүн жаңы бэкдор жеткирүү схемалары
Рисунок 11. Обфусцированный код

После фильтрации мусорного кода экспорт DllRegisterServer, вызываемый regsvr32.exe, төмөнкүдөй:

ESET: OceanLotus кибер-тобу үчүн жаңы бэкдор жеткирүү схемалары
Рисунок 12. Основной код установщика

По сути, при первом вызове DllRegisterServer экспорт устанавливает значение реестра HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model для зашифрованного оффсета в DLL (0x10001DE0).

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

Шелл-код – тот же загрузчик РЕ, используемый в прошлых кампаниях 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, сбрасывающий легитимный документ-приманку и вредоносный файл ОСХ.

Несмотря на то, что 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 (fake pdf document of a CV)
— feedback, Rally in USA from July 28-29, 2018.exe

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

Во-первых, авторы начали удалять имена из вспомогательных DLL DLLs (DNSprov.dll и две версии HttpProv.dll). Затем операторы прекратили упаковывать третью DLL (вторая версия HttpProv.dll), выбрав встраивание только одной.

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

  • изменен раздел реестра AppX (см. IoCs)
  • строка кодирования мьютекса («def», «abc», «ghi»)
  • порт номери

Наконец, во всех новых проанализированных версиях появились новые C&C, перечисленные в разделе IoCs.

табылгалары

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

Компромисстин көрсөткүчтөрү

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

Source: www.habr.com

Комментарий кошуу