В сети появился новый шифровальщик Nemty, который предположительно является преемником GrandCrab или Buran. Вредоносное ПО главным образом распространяется с поддельного сайта PayPal и обладает рядом интересных особенностей. Подробности о работе этого ransomware – под катом.
Новый шифровальщик Nemty обнаружил пользователь nao_sec 7 сентября 2019 года. Вредоносное ПО распространялось через сайт, замаскированный под PayPal, также имеется возможность проникновения ransomware на компьютер через эксплойт-кит RIG. Злоумышленники выбрали методы социальной инженерии, чтобы заставить пользователя запустить файл
Несколько любопытных фактов о Nemty подсказывают, что его разрабатывали те же люди или связанные с Buran и GrandCrab кибер-преступники.
- Как и в GandCrab, в Nemty есть пасхалка — ссылка на фото президента РФ Владимира Путина с матерной шуткой. В устаревшем шифровальщике GandCrab было изображение с тем же текстом.
- Языковые артефакты обеих программ указывают на тех же русскоязычных авторов.
- Это первый шифровальщик, использующий 8092-битный ключ RSA. Хотя смысла в этом нет: 1024-битного ключа для защиты от взлома вполне достаточно.
- Как и Buran, шифровальщик написан на Object Pascal и скомпилирован на Borland Delphi.
Статический анализ
Выполнение вредоносного кода происходит в четыре этапа. Первый шаг — запуск
SHA-256: A127323192ABED93AED53648D03CA84DE3B5B006B641033EB46A520B7A3C16FC
После распаковки архива появятся три файла.
Далее запускается temp.exe, PE32-исполняемый файл под MS Windows размером 307200 байт. Код написан на Visual C++ и упакован MPRESS packer, упаковщиком, аналогичным UPX.
SHA-256: EBDBA4B1D1DE65A1C6B14012B674E7FA7F8C5F5A8A5A2A9C3C338F02DD726AAD
Следующий шаг — ironman.exe. После запуска temp.exe расшифровывает внедренные данные в temp и переименовывает их в ironman.exe, PE32-исполняемый файл размером 544768 байт. Код скомпилирован в Borland Delphi.
SHA-256: 2C41B93ADD9AC5080A12BF93966470F8AB3BDE003001492A10F63758867F2A88
Последний шаг – перезапуск файла ironman.exe. Во время выполнения он преобразует свой код и запускает себя из памяти. Эта версия ironman.exe является вредоносной и отвечает за шифрование.
Вектор атаки
На данный момент шифровальщик Nemty распространяется через сайт pp-back.info.
Полную цепочку заражения можно посмотреть на app.any.run sandbox.
Установка
Далее устанавливается ключ реестра, который выглядит вот так:
[HKLMSOFTWAREWOW6432NodeMicrosoftWindowsCurrentVersionRunOncewextract_cleanup0]
“rundll32.exe” “C:Windowssystem32advpack.dll,DelNodeRunDLL32 «C:UsersMALWAR~1AppDataLocalTempIXPxxx.TMP»”
Он используется для удаления распакованных файлов. Наконец,
Temp.exe — второй этап в цепочке заражения
Это процесс, запущенный файлом
Скрипт WindowSpy.ahk расшифровывает файл temp в ironman.exe, используя алгоритм RC4 и пароль IwantAcake. Ключ из пароля получается при помощи алгоритма хеширования MD5.
Затем temp.exe вызывает процесс ironman.exe.
Ironman.exe — третий шаг
Ironman.exe считывает содержимое файла iron.bmp и создает файл iron.txt с криптолокером, который запустится следующим.
После этого вирус загружает iron.txt в память и перезапускает его как ironman.exe. После этого iron.txt удаляется.
ironman.exe — основная часть вымогателя NEMTY, которая и шифрует файлы на пораженном компьютере. Вредоносное ПО создает мьютекс под названием hate.
Первым делом он определяет географическое местоположение компьютера. Nemty открывает браузер и узнает IP на http://api.ipify.org. На сайте api.db-ip.com/v2/free[IP]/countryName по полученному IP определяется страна, и, если компьютер находится в одном из перечисленных ниже регионов, то выполнение кода вредоносного ПО прекращается:
- Россия
- Белоруссия
- Украина
- Казахстан
- Таджикистан
Вероятнее всего разработчики не хотят привлекать внимание правоохранительных органов в странах своего проживания, и поэтому не шифруют файлы в “родных” юрисдикциях.
Если IP-адрес жертвы не относится к списку выше, то вирус шифрует информацию пользователя.
Для предотвращения восстановления файлов удаляются их теневые копии:
Затем создается список файлов и папок, которые не будут шифроваться, а также список расширений файлов.
- windows
- $RECYCLE.BIN
- rsa
- NTDETECT.COM
- ntldr
- MSDOS.SYS
- IO.SYS
- boot.ini AUTOEXEC.BAT ntuser.dat
- desktop.ini
- CONFIG.SYS
- BOOTSECT.BAK
- bootmgr
- programdata
- appdata
- osoft
- Common Files
log LOG CAB cab CMD cmd COM com cpl
CPL exe EXE ini INI dll DDL lnk LNK url
URL ttf TTF DECRYPT.txt NEMTY
Обфускация
Чтобы скрыть URL-адреса и внедренные конфигурационные данные, Nemty использует алгоритм кодирования base64 и RC4 с ключевой фразой fuckav.
Процесс дешифровки с использованием CryptStringToBinary выглядит следующим образом
Шифрование
Nemty использует трехслойное шифрование:
- AES-128-CBC для файлов. 128-битный AES-ключ генерируется случайным образом и используется один и тот же для всех файлов. Он хранится в конфигурационном файле на компьютере пользователя. IV генерируется случайным образом для каждого файла и хранится в зашифрованном файле.
- RSA-2048 для шифрования файлов IV. Генерируется ключевая пара для сессии. Закрытый ключ к сессии хранится в конфигурационном файле на компьютере пользователя.
- RSA-8192. Основной открытый ключ встроен в программу и используется для шифрования конфигурационного файла, в котором хранится ключ AES и секретный ключ для сессии RSA-2048.
- Сначала Nemty генерирует 32 байта случайных данных. Первые 16 байт используются в качестве ключа AES-128-CBC.
Второй алгоритм шифрования — это RSA-2048. Ключевая пара генерируется функцией CryptGenKey() и импортируется функцией CryptImportKey().
После того, как ключевая пара для сессии сгенерирована, открытый ключ импортируется в MS Cryptographic Service Provider.
Пример сгенерированного открытого ключа для сессии:
Далее закрытый ключ импортируется в CSP.
Пример сгенерированного закрытого ключа для сессии:
И последним идет RSA-8192. Основной открытый ключ хранится в зашифрованном виде (Base64 + RC4) в разделе .data PE-файла.
Ключ RSA-8192 после декодирования base64 и дешифрования RC4 с паролем fuckav выглядит вот так.
В результате весь процесс шифрования выглядит следующим образом:
- Генерация 128-битного AES-ключа, который будет использоваться для шифрования всех файлов.
- Создание IV для каждого файла.
- Создание ключевой пары для сессии RSA-2048.
- Расшифровка имеющегося ключа RSA-8192 при помощи base64 и RC4.
- Шифрование содержимого файлов с помощью алгоритма AES-128-CBC из первого шага.
- Шифрование IV с помощью открытого ключа RSA-2048 и кодирование в base64.
- Добавление шифрованного IV в конец каждого зашифрованного файла.
- Добавление ключа AES и закрытого ключа сессии RSA-2048 в конфиг.
- Данные конфигурации, описанные в разделе Сбор информации о зараженном компьютере, шифруются при помощи основного открытого ключа RSA-8192.
- Зашифрованный файл выглядит следующим образом:
Пример зашифрованных файлов:
Сбор информации о зараженном компьютере
Вымогатель собирает ключи для дешифрации зараженных файлов, так что злоумышленник действительно сможет создать дешифратор. Кроме того, Nemty собирает пользовательские данные, такие как имя пользователя, имя компьютера, аппаратный профиль.
Он вызывает функции GetLogicalDrives(), GetFreeSpace(), GetDriveType(), чтобы собрать информацию о дисках зараженного компьютера.
Собранная информация хранится в конфигурационном файле. Декодировав строку, мы получаем список параметров в конфигурационном файле:
Пример конфигурации зараженного компьютера:
Шаблон конфигурации можно представить следующим образом:
{«General»: {«IP»:"[IP]",«Country»:"[Country]",«ComputerName»:"[ComputerName]",«Username»:"[Username]",«OS»:"[OS]",«isRU»:false,«version»:«1.4»,«CompID»:"{[CompID]}",«FileID»:"_NEMTY_[FileID]_",«UserID»:"[UserID]",«key»:"[key]",«pr_key»:"[pr_key]
Собранные данные Nemty хранит в формате JSON в файле %USER%/_NEMTY_.nemty. FileID длиной 7 символов генерируется случайным образом. Например: _NEMTY_tgdLYrd_.nemty. FileID также добавляется в конец зашифрованного файла.
Сообщение о выкупе
После шифрования файлов на рабочем столе появляется файл _NEMTY_[FileID]-DECRYPT.txt следующего содержания:
В конце файла находится зашифрованная информация о зараженном компьютере.
Сетевая коммуникация
Процесс ironman.exe скачивает дистрибутив браузера Tor с адреса https://dist.torproject.org/torbrowser/8.5.4/tor-win32-0.4.0.5.zip и пытается установить его.
Затем Nemty пытается отправить конфигурационные данные на адрес 127.0.0.1:9050, где ожидает найти работающий прокси-сервер браузера Tor. Однако по умолчанию прокси-сервер Tor прослушивает порт 9150, а порт 9050 использует демон Tor в Linux или Expert Bundle на Windows. Таким образом, данные на сервер злоумышленника не отправляются. Вместо этого пользователь может загрузить конфигурационный файл вручную, посетив службу расшифровки Tor по ссылке, указанной сообщении о выкупе.
Подключение к прокси Tor:
HTTP GET создает запрос на 127.0.0.1:9050/public/gate?data=
Здесь вы видите открытые TCP-порты, которые используются прокси TORlocal:
Сервис дешифрации Nemty в сети Tor:
Можно загрузить шифрованное фото (jpg, png, bmp) для тестирования сервиса дешифрации.
После этого злоумышленник просит заплатить выкуп. В случае неуплаты цена удваивается.
Заключение
На данный момент расшифровать файлы, зашифрованные Nemty, без уплаты выкупа не получится. У этой версии ransomware есть общие черты с шифровальщиками Buran и устаревшим GandCrab: компиляция на Borland Delphi и изображения с одинаковым текстом. Кроме того, это первый шифровальщик, который использует 8092-битный ключ RSA, что, повторимся, не имеет никакого смысла, так как 1024-битного ключа для защиты вполне достаточно. Наконец, что любопытно, он пытается использовать неверный порт для локального прокси-сервиса Tor.
Тем не менее, решения Acronis Backup и Acronis True Image не допускают шифровальщик Nemty до пользовательских ПК и данных, а провайдеры могут защитить своих клиентов при помощи Acronis Backup Cloud. Полная Киберзащита обеспечивает не только резервное копирование, но также защиту с использованием Acronis Active Protection, специальной технологии на базе искусственного интеллекта и поведенческой эвристики, которая позволяет нейтрализовать даже еще неизвестное вредоносное ПО.
Автор: mir-mir