CarderPlanet
Professional
В настоящее время все больше разработчиков вредоносных программ используют нетрадиционные языки программирования для обхода передовых систем обнаружения. Node.js Вредоносное ПО Lu0Bot является свидетельством этой тенденции.
Ориентируясь на не зависящую от платформы среду выполнения, распространенную в современных веб-приложениях, и используя многоуровневую обфускацию, Lu0Bot представляет серьезную угрозу для организаций и отдельных лиц.
Хотя в настоящее время вредоносное ПО обладает низкой активностью, злоумышленники, вероятно, ждут подходящего момента для нанесения удара.
Чтобы быть готовыми к любому будущему сценарию, команда аналитиков провела углубленный технический анализ одного из недавних образцов Lu0Bot и опубликовала статью, документирующую их процесс.
Вот обзор их исследований.
1. BAT-файл
Первая строка в файле содержала комментарий, который остался неясным и на который позже не ссылались.
Далее, EXE-файл включал в себя несколько файлов, включая интерпретатор узла под названием fjlpexyjauf.exe.
Затем интерпретатор получил файл с байтами и числом (%1% на скриншоте), которое, вероятно, служило ключом шифрования для байтового файла.
2. eqnyiodbs.файлы dat
Файл был разделен на блоки байтов, которые затем были объединены для создания интерпретатора узла.
3. Файл lknidtnqmg.dat
Этот файл содержал зашифрованные байты в Base64, которые можно было расшифровать, используя указанный входной номер.
4. gyvdcniwvlu.файл dat
Этот драйвер позволял 32-разрядным программам на системах x64 преобразовывать коды сканирования ключей в символы Юникода, вероятно, используемые для ведения кейлоггинга в основном процессе.
Анализ показал, что при выполнении основной процесс запускал BAT-файл, который запускал EXE-файл. Код принимал зашифрованный ввод JS и собирал системные данные с использованием WMIC, включая информацию о месте выполнения процесса, что соответствовало технологии T1047 MITRE.
Было обнаружено, что интерпретатор был скопирован в папку автозагрузки. Подключение к домену продолжалось после перезагрузки системы, позволяя боту продолжать функционировать.
Кроме того, вредоносная программа продемонстрировала уникальный подход к подключению к домену, собрав различные части в единый объект в коде JS.
Технический анализ вредоносного ПО Lu0Bot с использованием дизассемблера и отладчика
Для доступа к основному JS-коду команда:
Код начинался с массива зашифрованных строк. Затем определенные элементы были перемещены в конец массива путем манипуляций. После этого была реализована функция для расшифровки строк массива с использованием альтернативной формы BASE64 (T1132.002), за которой последовало кодирование-декодирование URL и, наконец, RC4.
Эта функция была вызвана с использованием двух переменных:
1. Элемент из массива.
2. Ключ RC4.
С помощью специального скрипта строки были расшифрованы, показав, что части доменов были жестко закодированы в выборке.
После этого был обнаружен раздел кода, ответственный за сборку домена.
Было обнаружено, что первая функция (ginf) собирала системную информацию и создавала массив из 15 элементов с деталями системы.
Вторая функция (hwco) использовала массив из 15 элементов из функции ginf в качестве входных данных, которая генерировала выходные данные, содержащие конечную часть домена до точки. Дальнейший анализ показал, что этот вывод был хэшем собранных системных данных.
Порт, номер и сегмент домена после точки были извлечены из массива acc, а затем присвоены переменным.
В сегмент домена после точки было добавлено случайное число. В следующей строке выбирался альтернативный домен, если выполнялись определенные условия.
После нескольких других операций домен был полностью собран, и все необходимые элементы были упакованы в объект JSON.
После запуска вредоносная программа искала адрес для передачи данных. Как только сервер получал трафик, он отправлял JS-код.
Все результаты были включены в ANY.RUN, что позволяет сервису быстро идентифицировать любой образец Lu0Bot и выявлять домены C2 после расшифровки строк.
Хотя в настоящее время она демонстрирует низкий уровень активности, Lu0bot может представлять значительный риск, если ее кампания расширится и сервер C2 начнет активно отвечать.
Защитите свою организацию от этой и других вредоносных программ с помощью ANY.RUN, чтобы быстро проанализировать любые подозрительные файлы или ссылки и получить окончательный вердикт за считанные секунды.
Ориентируясь на не зависящую от платформы среду выполнения, распространенную в современных веб-приложениях, и используя многоуровневую обфускацию, Lu0Bot представляет серьезную угрозу для организаций и отдельных лиц.
Хотя в настоящее время вредоносное ПО обладает низкой активностью, злоумышленники, вероятно, ждут подходящего момента для нанесения удара.
Чтобы быть готовыми к любому будущему сценарию, команда аналитиков провела углубленный технический анализ одного из недавних образцов Lu0Bot и опубликовала статью, документирующую их процесс.
Вот обзор их исследований.
Статический анализ образца Lu0Bot
В исследуемом образце использовался SFX packer, самораспаковывающийся архив, который можно открыть с помощью любой архивной утилиты. Его содержимое изучалось индивидуально.
![]() |
Содержимое архива |
1. BAT-файл
![]() |
Содержимое файла BAT |
Первая строка в файле содержала комментарий, который остался неясным и на который позже не ссылались.
Далее, EXE-файл включал в себя несколько файлов, включая интерпретатор узла под названием fjlpexyjauf.exe.
Затем интерпретатор получил файл с байтами и числом (%1% на скриншоте), которое, вероятно, служило ключом шифрования для байтового файла.
2. eqnyiodbs.файлы dat
Файл был разделен на блоки байтов, которые затем были объединены для создания интерпретатора узла.
![]() |
Содержимое файлов eqnyiodbs |
3. Файл lknidtnqmg.dat
Этот файл содержал зашифрованные байты в Base64, которые можно было расшифровать, используя указанный входной номер.
![]() |
Содержимое файла lknidtnqmg.dat |
4. gyvdcniwvlu.файл dat
Этот драйвер позволял 32-разрядным программам на системах x64 преобразовывать коды сканирования ключей в символы Юникода, вероятно, используемые для ведения кейлоггинга в основном процессе.
Динамический анализ вредоносного ПО Lu0Bot в ANY.RUN
Следующий шаг включал в себя исследование EXE-файла и файла lknidtnqmg.dat в песочнице ANY.RUN interactive malware, чтобы отслеживать их поведение и либо расшифровывать байты, либо находить их расшифрованными в памяти процесса.Анализ показал, что при выполнении основной процесс запускал BAT-файл, который запускал EXE-файл. Код принимал зашифрованный ввод JS и собирал системные данные с использованием WMIC, включая информацию о месте выполнения процесса, что соответствовало технологии T1047 MITRE.
![]() |
Дерево процессов во время выполнения примера |
Было обнаружено, что интерпретатор был скопирован в папку автозагрузки. Подключение к домену продолжалось после перезагрузки системы, позволяя боту продолжать функционировать.
Кроме того, вредоносная программа продемонстрировала уникальный подход к подключению к домену, собрав различные части в единый объект в коде JS.
![]() |
DNS-запросы |
Технический анализ вредоносного ПО Lu0Bot с использованием дизассемблера и отладчика
Для доступа к основному JS-коду команда:
- Распаковал архив SFX
- Запустил команду, чтобы собрать Node.js файл
- Запущен fjlpexyjauf.exe в x32dbg, ввод входящих данных в командную строку
- Дошло до того, что началось выполнение JS-кода
- Обнаружил код в памяти и сохранил дамп
Анализ JS-кода
Изначально непонятный код JavaScript был прояснен путем удаления ненужных байтов и использования деобфускатора JavaScript.
![]() |
Результат преобразования кода |
Код начинался с массива зашифрованных строк. Затем определенные элементы были перемещены в конец массива путем манипуляций. После этого была реализована функция для расшифровки строк массива с использованием альтернативной формы BASE64 (T1132.002), за которой последовало кодирование-декодирование URL и, наконец, RC4.
Эта функция была вызвана с использованием двух переменных:
1. Элемент из массива.
2. Ключ RC4.
С помощью специального скрипта строки были расшифрованы, показав, что части доменов были жестко закодированы в выборке.
![]() |
После деобфускации кода |
После этого был обнаружен раздел кода, ответственный за сборку домена.
![]() |
Построение домена |
Отладка кода JavaScript
Для отладки команда использовала Node.js с параметром inspect-brk (node.exe –inspect-brk * запутать дамп без мусорных байтов *), установив точку останова на ключевое слово "var" и наблюдая за выводом, генерируемым каждой строкой.Было обнаружено, что первая функция (ginf) собирала системную информацию и создавала массив из 15 элементов с деталями системы.
![]() |
Массив, содержащий выходные данные функции ginf |
Вторая функция (hwco) использовала массив из 15 элементов из функции ginf в качестве входных данных, которая генерировала выходные данные, содержащие конечную часть домена до точки. Дальнейший анализ показал, что этот вывод был хэшем собранных системных данных.
![]() |
Вывод строки из функции hwco |
Порт, номер и сегмент домена после точки были извлечены из массива acc, а затем присвоены переменным.
![]() |
Извлечение элементов из массива acc |
В сегмент домена после точки было добавлено случайное число. В следующей строке выбирался альтернативный домен, если выполнялись определенные условия.
![]() |
Выберите домен после точки |
После нескольких других операций домен был полностью собран, и все необходимые элементы были упакованы в объект JSON.
![table.jpg](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibKkDF6D0j2jOjDhi5YbVoN5uwftrzVIKxSk8fY5SdsBRcaTp_8FlNtyIwRgQfwlgb81CphOR3BRKtptkumgQxEE1z0bU5d6prnf08iXSgLUCaYKn3e7D3lQvc9MHthjbcCNufEN-mC7M9JxiNkWSbn9tduMyO-IlJSyMZLV4vnJS_mwRYWqlETor3KPY/s728-rw-ft-e30/table.jpg)
После запуска вредоносная программа искала адрес для передачи данных. Как только сервер получал трафик, он отправлял JS-код.
Обнаружение Lu0bot
В рамках своих усилий команде удалось раскрыть множество интеллектуальных данных и IOC, а также написать правила YARA, Sigma и Suricata. Вы можете получить доступ к ним в статье.Все результаты были включены в ANY.RUN, что позволяет сервису быстро идентифицировать любой образец Lu0Bot и выявлять домены C2 после расшифровки строк.
Заключение
Lu0bot - необычная вредоносная программа, которая сочетает в себе Node.js и исполняемый JS-код. Она обладает уникальной доменной структурой и использует пользовательские методы шифрования строк.Хотя в настоящее время она демонстрирует низкий уровень активности, Lu0bot может представлять значительный риск, если ее кампания расширится и сервер C2 начнет активно отвечать.
Защитите свою организацию от этой и других вредоносных программ с помощью ANY.RUN, чтобы быстро проанализировать любые подозрительные файлы или ссылки и получить окончательный вердикт за считанные секунды.