Анализ и извлечение конфигурации Lu0Bot, Node.js Вредоносной программы со значительными возможностями

CarderPlanet

Professional
Messages
2,556
Reputation
7
Reaction score
573
Points
83
В настоящее время все больше разработчиков вредоносных программ используют нетрадиционные языки программирования для обхода передовых систем обнаружения. Node.js Вредоносное ПО Lu0Bot является свидетельством этой тенденции.

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

Хотя в настоящее время вредоносное ПО обладает низкой активностью, злоумышленники, вероятно, ждут подходящего момента для нанесения удара.

Чтобы быть готовыми к любому будущему сценарию, команда аналитиков провела углубленный технический анализ одного из недавних образцов Lu0Bot и опубликовала статью, документирующую их процесс.

Вот обзор их исследований.

Статический анализ образца Lu0Bot​

В исследуемом образце использовался SFX packer, самораспаковывающийся архив, который можно открыть с помощью любой архивной утилиты. Его содержимое изучалось индивидуально.

image01.png
Содержимое архива

1. BAT-файл
image02.png
Содержимое файла BAT

Первая строка в файле содержала комментарий, который остался неясным и на который позже не ссылались.

Далее, EXE-файл включал в себя несколько файлов, включая интерпретатор узла под названием fjlpexyjauf.exe.

Затем интерпретатор получил файл с байтами и числом (%1% на скриншоте), которое, вероятно, служило ключом шифрования для байтового файла.

2. eqnyiodbs.файлы dat
Файл был разделен на блоки байтов, которые затем были объединены для создания интерпретатора узла.

image03.png
Содержимое файлов eqnyiodbs

3. Файл lknidtnqmg.dat
Этот файл содержал зашифрованные байты в Base64, которые можно было расшифровать, используя указанный входной номер.

image04.png
Содержимое файла lknidtnqmg.dat

4. gyvdcniwvlu.файл dat
Этот драйвер позволял 32-разрядным программам на системах x64 преобразовывать коды сканирования ключей в символы Юникода, вероятно, используемые для ведения кейлоггинга в основном процессе.

Динамический анализ вредоносного ПО Lu0Bot в ANY.RUN​

Следующий шаг включал в себя исследование EXE-файла и файла lknidtnqmg.dat в песочнице ANY.RUN interactive malware, чтобы отслеживать их поведение и либо расшифровывать байты, либо находить их расшифрованными в памяти процесса.

Анализ показал, что при выполнении основной процесс запускал BAT-файл, который запускал EXE-файл. Код принимал зашифрованный ввод JS и собирал системные данные с использованием WMIC, включая информацию о месте выполнения процесса, что соответствовало технологии T1047 MITRE.

image05.png
Дерево процессов во время выполнения примера

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

Кроме того, вредоносная программа продемонстрировала уникальный подход к подключению к домену, собрав различные части в единый объект в коде JS.

image06.png
DNS-запросы

Технический анализ вредоносного ПО Lu0Bot с использованием дизассемблера и отладчика
Для доступа к основному JS-коду команда:
  • Распаковал архив SFX
  • Запустил команду, чтобы собрать Node.js файл
  • Запущен fjlpexyjauf.exe в x32dbg, ввод входящих данных в командную строку
  • Дошло до того, что началось выполнение JS-кода
  • Обнаружил код в памяти и сохранил дамп
Чтобы увидеть, как проводились процессы распаковки и извлечения дампа, обратитесь к оригинальной статье. Для этого обзора давайте сосредоточимся на анализе кода.

Анализ JS-кода​

Изначально непонятный код JavaScript был прояснен путем удаления ненужных байтов и использования деобфускатора JavaScript.

image07.png
Результат преобразования кода

Код начинался с массива зашифрованных строк. Затем определенные элементы были перемещены в конец массива путем манипуляций. После этого была реализована функция для расшифровки строк массива с использованием альтернативной формы BASE64 (T1132.002), за которой последовало кодирование-декодирование URL и, наконец, RC4.

Эта функция была вызвана с использованием двух переменных:
1. Элемент из массива.
2. Ключ RC4.

С помощью специального скрипта строки были расшифрованы, показав, что части доменов были жестко закодированы в выборке.

image08.png
После деобфускации кода

После этого был обнаружен раздел кода, ответственный за сборку домена.

image09.png
Построение домена

Отладка кода JavaScript​

Для отладки команда использовала Node.js с параметром inspect-brk (node.exe –inspect-brk * запутать дамп без мусорных байтов *), установив точку останова на ключевое слово "var" и наблюдая за выводом, генерируемым каждой строкой.

Было обнаружено, что первая функция (ginf) собирала системную информацию и создавала массив из 15 элементов с деталями системы.

image10.png
Массив, содержащий выходные данные функции ginf

Вторая функция (hwco) использовала массив из 15 элементов из функции ginf в качестве входных данных, которая генерировала выходные данные, содержащие конечную часть домена до точки. Дальнейший анализ показал, что этот вывод был хэшем собранных системных данных.

image11.png
Вывод строки из функции hwco

Порт, номер и сегмент домена после точки были извлечены из массива acc, а затем присвоены переменным.

image12.png
Извлечение элементов из массива acc

В сегмент домена после точки было добавлено случайное число. В следующей строке выбирался альтернативный домен, если выполнялись определенные условия.

image13.png
Выберите домен после точки

После нескольких других операций домен был полностью собран, и все необходимые элементы были упакованы в объект JSON.

table.jpg


После запуска вредоносная программа искала адрес для передачи данных. Как только сервер получал трафик, он отправлял JS-код.

Обнаружение Lu0bot​

В рамках своих усилий команде удалось раскрыть множество интеллектуальных данных и IOC, а также написать правила YARA, Sigma и Suricata. Вы можете получить доступ к ним в статье.

Все результаты были включены в ANY.RUN, что позволяет сервису быстро идентифицировать любой образец Lu0Bot и выявлять домены C2 после расшифровки строк.

Заключение​

Lu0bot - необычная вредоносная программа, которая сочетает в себе Node.js и исполняемый JS-код. Она обладает уникальной доменной структурой и использует пользовательские методы шифрования строк.

Хотя в настоящее время она демонстрирует низкий уровень активности, Lu0bot может представлять значительный риск, если ее кампания расширится и сервер C2 начнет активно отвечать.

Защитите свою организацию от этой и других вредоносных программ с помощью ANY.RUN, чтобы быстро проанализировать любые подозрительные файлы или ссылки и получить окончательный вердикт за считанные секунды.
 
Top