Недавно, находясь в поиске угроз компьютерной безопасности, QuickHealSecurityLabs
наткнулся на необычный фреймворк на основе фреймворка-Nodera. Использование среды Node.js не часто встречается в семействах
вредоносных программ. Последние разработки, осуществляемые субъектами угрозы,
показывают, что создается отвратительный и единственный в своем роде
вымогатель; тот который использует платформу Node.js,
которая позволяет ему заражать ОС на базе Windows.
Node.js - это кроссплатформенная
среда исполнения JavaScript
с открытым исходным кодом, которая выполняет код JavaScript вне браузера. Он построен на
движке V8 JavaScript. V8 - это высокопроизводительный движок JavaScript и WebAssembly от Google с открытым исходным
кодом, написанный на C
++. Он используется в Chrome
и Node.js. Он реализует ECMAScript и WebAssembly, работает в
системах Windows 7 или
новее, macOS 10.12+ и Linux, использующих
процессоры x64, IA-32, ARM или MIPS. V8 может работать автономно или быть встроен в любое приложение C ++.
Интересно, что пользователи могут легко заразиться этим
вымогателем Nodera при серфинге
в Интернете, либо щелкнув по вредоносному файлу HTA, либо когда он используется в
качестве вредоносной рекламы.
Детали анализа:
Примером, полученным в лаборатории, был vbs-скрипт, в котором есть несколько
встроенных js-скриптов.
При выполнении он создает каталог «GFp0JAk»
в расположении «% userprofile%
\ AppData \ Local \».
Он также создает подкаталог «node_modules» для хранения библиотек Node.js, которые необходимы для выполнения полезной нагрузки JS. Для выполнения этих
сценариев требуется node.exe, который будет загружен с
нижеуказанного URL.
hххps://nodejs.org/download/release/latest-v8.x/win-x86/node.exe
Загруженный node.exe хранится как GFp0JAk.exe в «% userprofile%
\ AppData \ Local \ GFp0JAk».
Кроме того, он создает 3 разных ключа реестра «Microsoft Office», «Автозагрузка» и «Windows» в «HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Run \», чтобы сохранить его в системе.
Рис 1: Запись в реестре
Затем он удаляет некоторые необходимые библиотеки, такие как
fs.js, graceful-fs.js, legacy-streams.js, package.json,
polyfills.js в
«% userprofile% \ AppData \ Local \ GFp0JAk \ node_modules \», а так же вредоносные
файлы. JS «lLT8PCI.js» в «% userprofile%
\ AppData \ Local \ GFp0JAk \».
Когда все необходимые модули установлены, он проверяет наличие
«% userprofile% \ AppData \ Local \ GFp0JAk \ GFp0JAk.exe». Если он присутствует, он начнет
выполнение сценария, вызвав
oShell.Run
(strExe& ”” &outWorkingDir& “\” &strEntPoint, 0, true)
где strExe
= «% userprofile% \ AppData \ Local \ GFp0JAk \ GFp0JAk.exe»
outWorkingDir=
”% userprofile% \ AppData \ Local \ GFp0JAk \”
strEntPoint
= «% USERPROFILE% \ AppData \ Local \ GFp0JAk \ lLT8PCI.js»
Фактическая полезная нагрузка - это скрипт «lLT8PCI.js»,
который выполняет все действия, связанные с вымогателями.
В этом сценарии для каждой пользовательской функции автор
использовал Async-AwaitGenerators и Promises. Эти два наиболее мощных понятия
инфраструктуры Node.js. Определяя любой префикс функции с помощью ключевых слов
Async, фактически позволяет писать асинхронный код синхронно, а возвращаемое
значение из асинхронной функции называется обещанием, которое проверяет
состояние завершения данной функции.
Рис 2: Инициализация переменных и Открытый ключ
JS-скрипт начинается с инициализации некоторых переменных,
таких как «bitcoinAddress» и его цены. Кроме того, он встраивает открытый ключ
RSA размером 4096 бит в формате PEM, как показано на рисунке 2.
Рис. 3: Функции, используемые в скрипте
Сначала он проверяет права администратора в «% WinDir%»,
пытаясь создать файл с именем формата {randomname_of_len_4}.
{Randomname_of_len_2}. Функция «generateKey» используется для генерации
произвольного имени и расширения файла.
Рис. 4. Создание имени и расширения файла.
Затем он вызывает функцию сканирования, которая перечисляет
все диски, присутствующие в системе, и создает их список. Только для диска «C:»
это сделало исключение. Он рассматривает только каталоги, которые содержат
пользовательские файлы.
Рис 5: Целевые каталоги
Он сгенерирует файл с именем «{randomname_of_len_6} .key»,
который используется для хранения ключа AES-256, зашифрованного RSA. Ключ AES генерируется с помощью функции
«generateKey».
Рис 6: Все модули Перед шифрованием файлов, он
убивает процесс, как показано на рис. Ниже, и удаляет теневую копию тома.
Рис 7: процесс атаки
После шифрования файла добавляется расширение
«.encrypted». Затем он сбрасывает два файла: «% USERPROFILE% \ AppData \ Local
\ GFp0JAk \„ Как к бай-bitcoins.html“ «% USERPROFILE% \ Desktop \ Расшифровать
– ваш -files.bat».
Рис 8: Примечание выкупа - How-to-buy-bitcoins.html
HTML-файл представляет собой файл примечаний и пакетного файла вымогателей,
содержащий команду для выполнения того же сценария JS с параметром
«decryptStatic», который вызывает процедуру дешифрования.
Рис 9: Зашифрованные файлы
Этот вымогатель, кажется, находится в стадии разработки и
имеет некоторые недостатки, как указано ниже:
В примечании с требованием о выкупе упоминается открытый
ключ RSA размером 2048 бит, хотя открытый ключ, встроенный в сценарий, имеет
длину 4096 бит.
Время уничтожения жесткого кода закрытого ключа «1 марта
2018 года».
В записке о выкупе не указан канал связи для получения
закрытого ключа.
Хотя он, кажется, написан разработчиком-любителем, это
интересная работа, и вероятность того, что она станет популярной в будущем,
довольно высока.
Название обнаружения:
VBS.NoderaRansom.36592
JS.NoderaRansom.36593
Перевод статьи Рави Гидвани, Гутам Трипати
Лаборатории безопасности, QuickHealTechnologies, Ltd.
Предупреждение: Вся информация представлена исключительно в образовательных целях.
Предупреждение: Вся информация представлена исключительно в образовательных целях.
Норм, в закладки!
ОтветитьУдалить