Babadeda - шифровальщик, направленный на сообщества криптовалют (NFT и DeFi). Способен обходить сигнатурные антивирусные решения.
Babadeda
Большинство современных сообществ NFT и криптовалют используют Discord (платформа для группового общения). Каналы Discord общедоступны и позволяют пользователям отправлять личные сообщения друг другу внутри канала.
Babadeda использует эти возможности для фишинга жертв. Он отправлет пользователям личные сообщения с предложением загрузить связанное приложение, которое якобы предоставляло пользователю доступ к новым функциям и/или дополнительным преимуществам.
Ниже приведен пример фишингового сообщения, направленного на пользователей "Mines of Dalarna", компьютерной игры, построенной на блокчейне.
Если пользователь нажимает на URL-адрес в сообщении, он попадает на сайт-обманку. Там пользователю будет предложено загрузить вредоносную программу установки, которая внедряет шифровальщик вместе с полезной нагрузкой.
Сравнение оригинального и ложного сайтов
Как видно из приведенного выше примера, угрожающий субъект принял расширенные меры для того, чтобы цепочка доставки выглядела легитимной даже для технических пользователей. Как правило это:
- Киберсквоттинг - доменные имена сайтов-обманок очень похожи на доменные имена оригинальных сайтов Угрожающие лица обычно удаляют/добавляют букву из/в доменное имя или изменяют домен верхнего уровня.
- Домены подписываются сертификатом (через LetsEncrypt), что позволяет использовать HTTPS-соединение.
- Пользовательский интерфейс страниц-обманок очень похож на пользовательский интерфейс оригинальных страниц.
- После нажатия кнопки "Загрузить APP" сайт обычно переходит по адресу /downland.php, который перенаправляет запрос на загрузку на другой домен (это снижает вероятность того, что кто-то обнаружит сайт-обманку).
Диаграмма потока выполнения
The Installer
После загрузки и выполнения вредоносная программа установки копирует свои сжатые файлы во вновь созданную папку с легитимным названием (например, IIS Application Health Monitor) в одном из следующих каталогов:
C:\Users\<user>\AppData\Roaming\
C:\Users\<user>\AppData\Local\
Вредоносные файлы копируются вместе со многими другими файлами, связанными с открытыми или бесплатными приложениями. На первый взгляд, файлы в каталоге могут показаться легитимными. Однако при внимательном рассмотрении этих файлов становится очевидным, что некоторые из них подозрительны и должны быть проверены, как показано на рисунке ниже.
Сжатые файлы (файлы вредоносных программ, выбранные с номерами этапов)
Crypter Execution
После сброса указанных файлов программа установки начинает выполнение через главный исполняемый файл (номер 1 на рисунке выше).
Мы заметили, что на этом этапе некоторые варианты отображают поддельное сообщение об ошибке, которое останавливает выполнение до тех пор, пока пользователь не отреагирует на это сообщение. Это поддельное сообщение может быть использовано в качестве техники обхода решений безопасности. Или же его роль может заключаться в том, чтобы обмануть пользователя, заставив его думать, что приложение не выполнилось, хотя оно тихо продолжает вредоносное выполнение в фоновом режиме.
Анализируя два различных варианта, мы можем увидеть реализацию этого окна сообщений:
Сравнение между вариантами криптера
Как видно на рисунке ниже, код функции намного длиннее, чем код фактической загрузки DLL. Это связано с тем, что агент внедрил свои действия в код легитимного приложения, чтобы запутать аналитиков, скрыть свои истинные намерения и затруднить обнаружение антивирусными решениями.
DLL-загрузчик шеллкода
Как правило, агент угрозы встраивает следующие этапы выполнения в дополнительный файл, обычно XML или PDF. Тем не менее, мы также наблюдали дополнительные типы файлов, такие как JavaScript, Text и PNG.
Здесь, как и раньше, злоумышленник внедряет вредоносный код в различные легитимные коды. Мы выделили соответствующие разделы, чтобы наглядно продемонстрировать деятельность вредоносной программы:
Логика экспортируемой функции
Вредоносная логика начинается с чтения дополнительного файла (в данном случае XML-файла) и вызова kernel32!Sleep на 35 секунд (длительность меняется в разных вариантах). Затем он загружает весь файл в память и запускает задачу парсинга.
Первым фрагментом, который разбирается из файла, является шеллкод, расположенный по заранее рассчитанному смещению (в данном случае 0x88D8C и перезаписывающий исполняемый файл по смещению 0x1600).
Байты шеллкода внутри XML-файла
Характеристики исполняемого .text раздела настроены на RWE (Read-Write-Execute) - таким образом, агенту не нужно использовать VirtualAlloc или VirtualProtect для копирования шеллкода и передачи исполнения. Это помогает при обходе, поскольку эти функции хорошо отслеживаются решениями безопасности. Как только шеллкод скопирован в исполняемый файл, DLL вызывает точку входа шеллкода (shellcode_address).
Реализация стойкости
Если криптер настроен на установку персистентности, DLL-загрузчик выполнит новый поток, который загрузит другую DLL (из сжатых файлов), которая будет выполнять эту задачу.
Вновь загруженная DLL будет использовать либо одну из следующих логик, либо обе для реализации персистентности:
- Написать файл.lnk в папке запуска, который запускает основной исполняемый файл криптера.
- Записать в реестре ключ Run, который запускает основной исполняемый файл криптера.
The Decryption Shellcode
Файл XML (или любой другой тип файла, используемый криптером) содержит следующие компоненты:
Первый шеллкод (упоминаемый в этом разделе).
Зашифрованный дополнительный шеллкод (упоминаемый в следующем разделе, шеллкод Loader).
Зашифрованная полезная нагрузка.
У шеллкода Decryption три основные задачи: сначала он извлекает шеллкод Loader и полезную нагрузку, затем расшифровывает их, и, наконец, передает выполнение расшифрованному шеллкоду Loader.
Поток выполнения шелл-кода Decryption
Выполнение шеллкода Decryption начинается с динамического определения местоположения конфигурационной структуры путем поиска последовательности из шести или более одинаковых байт. Эта конфигурация содержит указатели на шеллкод загрузчика и конечную полезную нагрузку; они шифруются и разделяются внутри XML.
Исходя из этого, мы можем определить конфигурацию внутри XML-файла:
Структура конфигурации
Используя эту конфигурацию, вредоносная программа итерационно копирует каждый фрагмент и расшифровывает его, используя обозначенный ключ дешифрования (конфигурация меняется между образцами).
Затем шеллкод ищет два DWORD-заполнителя, 0xBABADEDA и 0xDEADBEAF. Он заменяет первый заполнитель адресом расшифрованной полезной нагрузки, а второй - размером полезной нагрузки. Эти данные используются на следующем этапе, в шеллкоде Loader.
Шелл-код Loader
Целью шеллкода Loader является внедрение расшифрованной полезной нагрузки в текущий запущенный процесс (в себя).
Мы можем разделить механизм загрузки на три этапа: инициализация, внедрение и исправление.
Инициализация
Этот этап отвечает за установку соответствующих данных, которые будут использоваться на этапах инъекции и коррекции.
Извлечение данных для этапов инъекции и коррекции
Чтобы начать инициализацию, загрузчик сначала сохраняет расшифрованный адрес полезной нагрузки и размер полезной нагрузки в соответствии с адресами заполнителя. Затем он анализирует PE-заголовки полезной нагрузки, чтобы извлечь размер образа и точку входа в соответствии с базовым адресом текущего исполняемого файла. Загрузчик анализирует структуру _PEB, чтобы найти базовый адрес текущего исполняемого файла и LDR_DATA_TABLE_ENTRY, который будет использоваться позже. Наконец, он динамически загружает функцию VirtualProtect, используя предварительно вычисленное хэш-значение (0xF1C25B45 в нашем случае).
Инъекция
Этот этап довольно прост. На нем загрузчик перезаписывает текущий PE в PE конечной полезной нагрузки. Он делает это путем копирования заголовков PE и каждой секции в соответствии с базовым адресом текущего исполняемого файла.
Защита заголовков от изменения и очистка байтов памяти для нового PE
Как только предыдущие байты очищены, загрузчик копирует заголовки нового PE по базовому адресу, а каждую секцию - в соответствующее место в соответствии с IMAGE_SECTION_HEADER.
Коррекция
Последний этап отвечает за исправление таблицы адресов импорта и таблицы перемещений только что внедренного PE.
Исправление таблиц и удаление изменяющих признаков
mw_construct_IAT:
- Загрузка функции GetModuleHandleA, LoadLibraryA и GetProcAddress по хэшу (0x9FE4FCE1, 0x85557334 и 0xF23B576D соответственно).
- Итерация по IAT нового PE.
- Загрузка каждой функции и обновление ее адреса.
mw_construct_RELOC:
- Вычисление дельты между предыдущей базой изображений и текущей.
- Итерация по каждой записи в таблице перемещения.
- Добавление дельты к значению записи.
В дополнение к исправлению таблиц адресов импорта и перемещения, загрузчик удаляет свидетельства инъекции с помощью следующих методов:
- Обновление записи в таблице данных LDR, чтобы она соответствовала инжектированному PE.
- Удаление заголовков инжектированного PE из памяти.
Эти шаги позволяют обойти сканеры памяти, которые ищут несовпадающие данные LDR и PE в памяти.
Наконец, вредоносная программа переходит к точке входа нового внедренного PE с исходными аргументами командной строки.
Babadeda является очень опасным криптовалютным вирусом. Нацеливаясь на пользователей криптовалют через доверенные векторы атак, его распространители получают быстро растущий выбор потенциальных жертв. После попадания на машину жертвы, маскируясь под известное приложение с помощью сложной обфускации, Babadeda не имеет возможности узнать о наличии Babadeda на машине и предотвратить его выполнение.
Indicators of Compromise
SHA256
- 99e6b46a1eba6fd60b9568622a2a27b4ae1ac02e55ab8b13709f38455345aaff
- 358211210e0bb34dd77073bb0de64bb80723f3434594caf1a95d0ed164ee87a1
- ce3758d494132e7bef7ea87bb8379bb9f4b0c82768d65881139e1ec1838f236c
- 0ceead2afcdee2a35dfa14e2054806231325dd291f9aa714af44a0495b677efc
- 080340cb4ced8a16cad2131dc2ac89e1516d0ebe5507d91b3e8fb341bfcfe7d8
IPv4
- 37.48.89.8
- 45.12.5.62
- 65.21.127.164
TTP - тактика, техника, процедуры
Тактика, методы и процедуры (TTP) обобщают предполагаемые методы MITRE ATT&CK, используемые Babadeda.
ID | Техника | CWE | Описание | Доверие |
1 | T1006 | CWE-21, CWE-22, CWE-23 | Обход имени пути | Высокий |
2 | T1040 | CWE-294 | Обход аутентификации путем захвата и воспроизведения | Высокий |
3 | T1055 | CWE-74 | Инъекция | Высокий |
4 | T1059 | CWE-94 | Межсайтовый скриптинг | Высокий |