Анализ стиллера Arkei от Foxovsky
Alexuiop1337Введение
На просторах интернета стиллер Arkei является одним из самых популярных. Но совсем недавно автор заявил о закрытии:

Поэтому я подумал, что уже никто не будет в обиде, если я сделаю анализ, тем более софт уже выложен в паблик.
Так получилось, что семпл, который я достал с одного сайта, оказался приватной версией, но слегка устаревшей (версия 9.0-9.1).
Анализ
Поверхностный анализ
Первым делом, конечно же, давайте глянем на чем же сделан билд (хотя это очевидно):

Нативный софт, ничем не упакован. Далее мне захотелось немного пройтись по импорту:

CryptUnprotectData - функция, которая используется в любом стиллере для расшифровки данных, например, паролей Chromium браузеров.
CryptStringToBinaryA - эта же функция позволяет "переводить" строку в разные бинарные представления, в зависимости от флага, который туда передать.
Немного про остальные модули:
- gdiplust.dll\GDI32.dll - содержат функции для создания скриншота
- Advapi32.dll - работа с Registry Windows
- Shell32.dll - запуск файлов и получение пути до папок (i.e: Desktop, appdata...)
- Ole32.dll - подключение и работа с COM портами
- WinInet.dll - работа с интернетом
- Psapi.dll - получение списка названий модулей\их пути
IDA - Being Debugged
Мы уже поняли, что это нативный софт, поэтому просто перекидываем его в IDA.
После конца анализа нам сразу открывается именно WinMain, а не EP, которую создает Visual Studio.

Можно заметить кое-что очень интересное:

mov eax, large fs:18h
В eax будет хранится адрес TEB
mov eax, [eax+30h]
Сдвигаемся в памяти и тут уже eax держит адрес PEB
cmp [eax+2], 0
PEB + 2 это поле BeingDebugged, если значение в нем ноль, то значит стиллер не дебажится, и начинает работать.
Проблема в том, что такой метод проверки обходится очень легко. Например, в x64dbg есть встроенный переключатель Peb->BeingDebugged, не нужно ничего скачивать.
После этой проверки, срабатывает "баг" IDA, когда после джампа (обычно такого, что условие его перехода всегда верно), идут db (другими словами emit), поэтому все, что идет после метки loc_40591C1 нельзя посмотреть данные. Не знаю, специально ли здесь добавили Anti-Disasm или это все же баг. Более подробно: http://unprotect.tdgt.org/index.php/Anti-disassembly
IDA - Создание мутекса
После проверки на дебаг, стиллер создает мутекс, проверяет существует ли уже этот самый мутекс, если да то вызывает функцию ExitProcess с кодом ноль, иначе же вызывает функцию, которая уже крадет данные:

В качестве строки, которая и является мутексом, выступает связка из GetCurrentHwProfile + MachineGUID:



IDA - Стиллер
Вот мы уже и подошли к самому стиллеру, полностью эта функция выглядит так:

Далее я уже переключился в псевдо-код, для более компактного вида. Далее стиллер создает папку в %ProgramData%\*строка из 14 символов*, и создает в ней папку files:

После первичной инициализации, стиллер расшифровывает домен и добавляет к строке /index.php:

Немного подробнее о domainDecrypt:

Xor cipher:

Немного кода на питоне и получаем домен (замазал из совести):

Вот и все шифрование в стиллере.
Далее стиллер получает конфиг с панели, домен, которой он только что расшифровал:

Так выглядит определение включена ли та или иная функция:

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

Сбор браузеров и программ
Вот, наверное, самое интересное, что я бы хотел увидеть в этом стиллере. В начале создается файл с паролями:

После этого начинается сбор данных с браузеров на движке FireFox'a:

А потом, браузеры на базе Chromium:

В качестве первого аргумента идут настройки, 2-ой аргумент для Chromium браузеров идет 1\0, которые говорит, где лежит профиль браузера, в localappdata или appdata, а после путь до профиля. Стиллер использует библиотеку SQLite, но не в виде DLL.
Вот сколько занимает сам сбор браузеров из всей функции стила:

Запросы через SQLite:

Далее идет стил следующих программ:

Пароли для edge\ie сделаны через подгрузку модуля vaultcli и импорта некоторых функций оттуда через GetProcAddress.
После чего идет граб FileZilla, где интересным я нашел одну строчку:

Видимо разработчик забыл убрать. А, ifstream, кстати, накидывает кб 100 лишнего веса, не меньше.
После чего идет получение джаббера, где просто считывается xml файл и обрабатывается. В ThunderBird все тоже самое по методам шифрования как и в обычном FireFox.
Далее идет стиллинг Steam, Skype, Telegram:

Стиллер считывает ключ в реестре, получает путь до стима и копирует vdf файл:

Для скайпа также обрабатывается main.db файл, который является SQLite БД с сообщениями.
Далее идет стиллинг Telegram, но получение файлов сессии происходит по деффолтному пути, а не через путь из реестра:

Информация о системе
Arkei начинает получение информации со скачивания данных с сайта ip-api.com, получая данные, разбитые новой строкой:

Далее стиллер получает еще очень много данных о системе:

Криптовалюты и скриншот
Вот мы и подошли к получению холодных кошельков и скриншота:

Сбор криптовалюты устроен очень просто, вызывается функция, которая копирует файлы с нужным названием из папки:


.dat кошельки же копируется, чуть по-другому:

Получение скриншота работает через GdiPlus:



Очень странно, что в качестве кодека выбран именно jpeg, а не png, ведь 2-ой и по весу меньше, так и качества картинки сильно лучше.
Граббер файлов
Далее срабатывал граббер файлов:

Самой главной функцией в граббере является sub_403894:

Завершение
Далее стиллер устанавливает нужные значения в переменные, которые в дальнейшем будут переданы на сервер:

Далее стиллер загружает лог и получает задание с сервера на загрузку файла:

Лоадер докачивает файлы в ProgramData с рандомнын названием:

После чего запускает файлы через ShellExecute:

После того как все файлы были подгружены, стиллер удаляет все файлы за собой и самоудаляется:

Папка удаляется через команду rd.
Как устроен метод самоудаления:

Заключение
Arkei не лишен своих недостатков, но и у него есть свои преимущества и особенности. Огорчил сбор браузеров по константным путям (надеюсь, что это только в этой версии, а в обновленной версии и Vidar'e все обстоит лучше), очень не надежно шифрование домена.
Ссылки
Канал: https://t.me/PredatorSoftwareChannel
Купить Predator: https://vlmi.su/threads/predator-the-thief-nativnyj-stiller-s-bolshim-funkcionalom-luchshaja-cena.21069/unread