• [ Регистрация ]Открытая и бесплатная
  • Tg admin@ALPHV_Admin (обязательно подтверждение в ЛС форума)

Статья Stealc v2 research & reverse

stihl

Moderator
Регистрация
09.02.2012
Сообщения
1,167
Розыгрыши
0
Реакции
510
Deposit
0.228 BTC
stihl не предоставил(а) никакой дополнительной информации.
Вступления не будет, как и предисловий, все коротко и по делу
В конце статьи приложу архив со всем что есть: бинарники, .i64 бд от иды, питон скрипты для автоматизации в иде

Стилак написан на с++, о чем говорит множество дебаг а также assert строк (ощущение что оптимизация была поставлена на 0, и включена дебаг сборка)
В качестве json библиотеки используется nlohmann
1745841579657.png

1745841589341.png


В билде огромное количество бейс64 строк, в том числе имен апи функций (импорт по хешам не используется, как и кастом гетпроц, гетмодуль)
Расшифровываются они при помощи base64 -> rc4
rc4 ключ статично вбит в билде, от билда к билду отличается

1745841604197.png

1745841619347.png
Пример ответа от сервера

Для общения с сервером используется тот же алгоритм(base64 + rc4), но с другим ключем, тоже статично вбит, но везде одинаковый

1745841631302.png
1745841638594.png
кусок псевдокода приведенного в нормальный вид

system_info.txt полностью формируется на стороне клиента, о чем говорят дешифрованные строки

1745841647616.png
1745841660202.png

В начале работы программы есть нетривиальная проверка на снг

1745841668021.png
1745841675144.png


Для антидубля (защиты от запуска 2 инстанций стилака одновременно) создается эвент
какоето-числоимя-пкимя-пользователя

1745841683215.png

Проверка лицензии осуществляется тоже на клиенте:

1745841697115.png

дата разбита на 4 части, каждый из которых накрыт по отдельности алгоритмом описанным выше
затем дата обьединяется и сравнивается с локальной на пк жертвы
1745841709995.png
1745841722832.png
1745841733002.png

1745841745370.png
Посмотреть вложение 106527


В функционале стиллера есть подгруз через павершелл
1745841776793.png

1745841802608.png

не понятная строчка(имя билда?), 2 ключа шифрования (запросы и строки), и 3 куска от даты окончания лицензии

первичный запрос к серверу выглядит так(после дешифрования):

1745841813944.png

создание скриншота выполняется через gdiplus
1745841828164.png


Для сборки данных с хрома, в котором используется APPB - используется инжект шеллкода + CREATE_SUSPENDED
Создается пайп для принятия данных, в который шеллкод из под хрома пишет ключ для дешифрования

Посмотреть вложение 106535
1745841841971.png

Далее распишу про этот пе файл

1745841855051.png

Апи говорит само за себя
1745841872529.png
1745841886326.png
1745841897012.png

код дампнутого пе
инициализует апи (без кастом getproc getmodule)
Читает APPB ключ из Local State хрома
дешифрует через сервис, пишет в пайп

Как обещал - прикладываю архив, пас xss.is

Для просмотра ссылки Войди или Зарегистрируйся
 
Activity
So far there's no one here
Сверху Снизу