Анализ скрытого майнера от Proga

Анализ скрытого майнера от Proga

ims0rry

Сразу хочу выразить благодарность человеку, предоставившему мне семпл. Это был очень скучный вечер, а тут такой подгон. Имени, разумеется, раскрывать не буду, но спасибо тебе^^

Палка о двух концах

Изначально, когда я разобрался с этим майнером, у меня сложилось немного двоякое впечатление. С одной стороны, довольно интересная реализация, в плане того, что юзеру не надо ничего делать кроме как распространять билд. Мол, вот тебе и крипт сразу на сервере производится раз в сутки, вечный фуд и все такое. Но, с другой стороны, куча подводных камней, которые всплывут, приблизительно, через месяц. Я это проходил еще на первой версии своего майнера.

Вступление

Изначально я получил архив с двумя файлами:

Сам билд майнера и файл для удаления всего этого дела с компьютера.

Скантайм майнера - http://viruscheckmate.com/id/emAIuxHEhnsr

Инфа о файлах:

Часть 1. Поведение

Прежде чем ковырять базовые 2 файла, мне хотелось бы взглянуть чего там есть еще интересного. Подрубаем песочницу, Wireshark и начинаем следить за майнером:

После запуска в %appdata% создается папка System и Defender, в течении минут 5-10 туда подкачиваются различные файлы.

Содержимое System:

Содержимое Defender:

Параллельно следим за запросами:

Подкачивающиеся файлы

Смотрим первый запрос и получаем адрес сайта:

Все файлы лежат в трех директориях:

http://qwerty001.ucoz.net/001/

http://qwerty001.ucoz.net/002/

http://qwerty001.ucoz.net/003/

Далее запускаем файл на x64 виртуалке ( спасибо @DmitryAye) и смотрим как устроена автозагрузка:

Чекаем дефолтную автозагрузку:

Видим ссылку на файл в папке Defender. Есть предположение, что это файл, отвечающий за обновление стаба.

Далее смотрим планировщик задач:

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

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

Часть 2. Анализ файлов

В итоге, из всей матрешки, мы получили следующие файлы:

Все были собраны в одну папку из Defender, System и их подпапок.

Начнем с самого верха:

0.txt - скачанная страница iplogger'а

Автоит сила(нет)

Все конфиги - дефолтные .json конфигурации консольного cpu и gpu xmrig-майнера

del.exe - файл для удаления майнера с компьютера

Смотрим на него через DIE:

Видим, что это AutoIt, сразу качаем exe2Aut. Но просто так декомпилировать х64 файл не удастся, сначала его надо конвертировать в x32, для этого заюзаем следующий Perl-скрипт (взято с просторов интернета):

use strict;
use warnings;

my $f=shift || die ("Gimme a file name!");

print STDERR "Processing '$f':\n";
print STDERR "- Reading 'AutoItSC.bin'\n";
open F,"<AutoItSC.bin";
binmode F;
read F,my $a, -s 'AutoItSC.bin';
close F;

print STDERR "- Reading '$f'\n";
open F,"<$f";
binmode F;
read F,my $d, -s $f;
close F;

print STDERR "- Looking for the script\n";
if ($d=~/\xA3\x48\x4B\xBE\x98\x6C\x4A\xA9\x99\x4C\x53\x0A\x86\xD6\x48\x7D/sg)
{
my $pd=(pos $d)-16;
print STDERR "- Script found @ ".sprintf("%08lX",$pd)."\n";
print STDERR "- Creating 32-bit version '$f.a32.exe'\n";
open F,">$f.a32.exe";
binmode F;
print F $a.substr($d,$pd,length($d)-$pd);
close F;
}
else
{
print STDERR "- Script not found !\n";
}



Кладем его рядом с AutoItSC.bin (какой-то бинарник автоита, я в этом языке не шарю). Конвертируем файл, прогоняем его через exe2Aut и получаем следущее:

Т.е. все ранее определенные нами файлы оказались верными.

intel.exe, intel1.exe, NvidiaHelp.exe, RadeonView.exe - консольные xmrig-майнеры (cpu-gpu), накрытые VMProtect'ом:

Ничего сверхъестественного, двигаемся дальше.

Miner.exe - x64 AutoIt лоадер, так же накрытый VMProtect'ом:

Снова юзаем наш скрипт по конвертации в x32, далее прогоняем через exe2Aut:

После запуска, файл создает папки %appdata%\system и %appdata%\system\CONFIG. Далее, если winit.exe еще не установлен, плюет текстовый файл с записанным внутри логгером в %appdata%\system, считывает оттуда логгер, копируется в ту же папку, делает запрос к логгеру (скачивая ту картинку) и удаляет базовый файл логгера (ip.txt).

После чего запускается бесконечный цикл, в котором идет проверка на существование winint.exe и отсутствие taskhost.exe, если условия соблюдены - в папку CONFIG с ресурсов плюются файлы конфига под все 4 майнера, устанавливаются аттрибуты скрытых и системных файлов на папку конфига. Далее качается и запускается PACK.exe, после чего, идет проверка на существование файла taskhost.exe, и, если он существует - процесс завершается.

PACK.exe - файл, следящий за обновлением стаба. Накрыт VMP, скорее всего не является AutoIt скриптом (но это не точно):

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

taskhost.exe - файл, отвечающий за поддержку консольный майнеров. Судя по всему это уже не AutoIt-скрипт, но все по-прежнему накрыт VMP'шкой:

После запуска, прописывается в планировщик задач под триггером RunOnce и перезапуском через минуту. После перезапуска следит за консольными майнерами и передает им параметры. В нем, также, заданы тайминги простоя для каждого майнера, когда какой должен включаться/завершаться. Все конфиги передаются в параметрах запуска консольным майнерам через параметр "-c", прим. "-c CONFIG/configCPU.json". После запуска, он проверяет наличие таск менеджеров, если их нет - запускает майнеры. ГПУ-майнинг работает только при простое. Далее, продолжает работать с консольными майнерами, если замечает таск менеджер - оффает все процессы и ждет перезапуска. Не зависим от сервера.

MSASCuiL.exe - файл, отвечающий за обновление стаба с сервера, накрыт VMP:

После подгрузки и запуска от PACK.exe добавляет себя в стандартную автозагрузку под именем Windows Defender'а и обновляет консольные майнеры в папках, определяет видеокарту и грузит нужный GPU-майнер.

Часть 3. Юзабельность

Из того что я увидел выше, складывается впечатление что это очень грамотный скам. Т.к. через файл фейк-дефендера разработчик может прогрузить на ваших ботов вообще все что угодно, в том числе и свои конфиги.

Я никогда не устану повторять, что софт, который зависим от серверов разработчика - плохой софт (касается только малвари). Есть зависимость - есть риск потерять всех ботов. У каждого человека, который имеет доступ к такому кол-ву ботов, есть соблазн урвать себе парочку пока никто не видит, поверьте мне, проходил это на первых стадиях продаж.

В плане самой работы у майнера есть ряд недостатков:

[-] Билд не криптуется. Единственное, на что вам стоит рассчитывать - это репротект VMP на сервере раз в сутки. Рано или поздно это перестанет работать, как и темида в свое время.

[-] Конфиг юзера лежит в обычном .json файле, который можно открыть блокнотом и все посмотреть. Радует что хоть папки и файлы находятся под системным аттрибутом.

[-] Тех файлов и исходников, которые я достал вполне достаточно для написания собственного билдера на основе этого майнера. Убрать только файл фейк-дефендера, который обновляет билды с сервера (или оставить, чтоб на халяву получать обновления), изменить параметры в конфиг-файлах, засунуть эти все файлы в sfx-архив или дроппер с созданием папки %appdata%\system и готово, можно идти продавать (не делайте этого, пожалуйста).

[-] Как я понял, стаб на сервере разделен на 3 категории по версиям майнера (см. ссылки на директории). Проглядев все PACK.exe и taskhost.exe, я понял, что абсолютно на всех версиях "стаб" - это VMProtect. 8000 за протектор? Не, спасибо.

[-] Майнер работает только на x64 системах

Вывод

Майнер хорош в некоторых аспектах реализации, но его явно нужно дорабатывать. Это не стоит таких денег, как указывает продавец. Майнер идеален для новичков в плане простоты и юзабельности, но явно не подходит тем, кто хочет что-то заработать на майнинге.

UPD. Продавец прислушался и сделал версию, где вы можете загрузить все на свой сервер. Он поможет вам с настройкой и прочим. Этот вариант я считаю довольно годным и даже советую к приобретению. Разработчик явно старается улучшить свой продукт и является адекватным человеком.

Считайте это сливом Extreme-версии майнера, где:

"Полностью OFFLINE версия не используется не каких серверов и подгрузок обновлений."

Ссылки

Скантайм майнера - http://viruscheckmate.com/id/emAIuxHEhnsr

Скантайм PACK.exe - http://viruscheckmate.com/id/NOnkS4Y4set4

Скантайм taskhost.exe - http://viruscheckmate.com/id/LAjF4OiJcKrW

Скантайм фейк-дефендера - http://viruscheckmate.com/id/vwZ1k5QJu8Qr

Скантайм консольных майнеров:

intel.exe - http://viruscheckmate.com/id/5JwoE2EvHLl6

intel1.exe - http://viruscheckmate.com/id/iSlGz4CYcXhL

NvidiaHelp.exe - http://viruscheckmate.com/id/650OibxEi30M

Сервер и папки, распределенные по стабам различных версий:

http://qwerty001.ucoz.net/001/

http://qwerty001.ucoz.net/002/

http://qwerty001.ucoz.net/003/

Исходный код майнера + x32 бинарники + все x64 файлы + изначальные семплы - https://github.com/ims0rry/Proga-cpu-gpu-miner

Продажник - https://vlmi.su/threads/ckrytyj-majner-cpu-gpu-vechnyj-fud-0.12233/

-----------------------------------------

Автор @ims0rry

https://t.me/ims0rryblog