• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Stealc v2 research & reverse

xChimera

Malware...
Пользователь
Регистрация
19.08.2024
Сообщения
783
Реакции
552
Гарант сделки
2
Депозит
0.0282
Вступления не будет, как и предисловий, все коротко и по делу
В конце статьи приложу архив со всем что есть: бинарники, .i64 бд от иды, питон скрипты для автоматизации в иде

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


1745773195105.png



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

1745773222744.png


1745773372988.png

Пример ответа от сервера

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

1745773475668.png

1745773405753.png

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

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

1745774003663.png

1745773546298.png


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

1745773593044.png

1745773601153.png



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

1745773669870.png


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

1745773693542.png


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

1745773759555.png

1745773772087.png


1745773793300.png

1745773803264.png



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


1745773849463.png


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

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

1745773947025.png


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



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

1745774060468.png


Полезная нагрузка представляет из себя еще один пе файл - который лежит в секции данных (скорее всего прогнан через pe_to_shellcode)
1745774116899.png


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

1745774136537.png


Апи говорит само за себя

1745774158800.png

1745774174503.png


1745774184306.png


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

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


Планирую поковырять другие стилаки
 

Вложения

  • 1745773818260.png
    1745773818260.png
    30.9 КБ · Просмотры: 37
  • 1745773939887.png
    1745773939887.png
    25.9 КБ · Просмотры: 36
  • 1745773782598.png
    1745773782598.png
    118.9 КБ · Просмотры: 40
все кратко и по делу, но скорее всего не самая последняя версия попалась
2.0 вышла второпях, потому что уже опаздывали по всем дедлайнам и доводим до идеала уже по мере выпуска обновлений - везде всё не просчитать и не продумать)

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

в модуле, который инжектим в хром, не увидели смысла пытаться скрывать действия - будто бы от хрома эти действия и ожидаются в рантайме, нежели скрывать запросы
но он тоже пока в бета-версии, поэтому и весит так много (аж 100кб с небольшим)

так же на подходе x32 версия, очень не хотели делать x32, но часть клиентов прям просила - поэтому придется на x64 выкручиваться через реализацию heavens gate адекватно работать с процессом хрома
ну и от пайпов будем отказываться, скорее всего встраиваемый в хром модуль будет отправлять расшифрованный ключ сразу на сервер

спасибо за разбор!

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

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

Посмотреть вложение 106513


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

Посмотреть вложение 106514

Посмотреть вложение 106515
Пример ответа от сервера

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

Посмотреть вложение 106517
Посмотреть вложение 106516
кусок псевдокода приведенного в нормальный вид

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

Посмотреть вложение 106534
Посмотреть вложение 106518

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

Посмотреть вложение 106519
Посмотреть вложение 106520


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

Посмотреть вложение 106521

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

Посмотреть вложение 106522

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

Посмотреть вложение 106523
Посмотреть вложение 106524

Посмотреть вложение 106526
Посмотреть вложение 106527


В функционале стиллера есть подгруз через павершелл
Посмотреть вложение 106529

Посмотреть вложение 106530

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

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

Посмотреть вложение 106532

создание скриншота выполняется через gdiplus
Посмотреть вложение 106533


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

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

Полезная нагрузка представляет из себя еще один пе файл - который лежит в секции данных (скорее всего прогнан через pe_to_shellcode)
Посмотреть вложение 106536

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

Посмотреть вложение 106537

Апи говорит само за себя

Посмотреть вложение 106538
Посмотреть вложение 106539

Посмотреть вложение 106540

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

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


Планирую поковырять другие стилаки
Hard work.:smile10:
 
единственное - ключ шифрования для данных между клиентом и сервером так же уникальный для каждой админки и генерится в момент установки админки на сервер
Видимо мне попались билды от одной админки
в модуле, который инжектим в хром, не увидели смысла пытаться скрывать действия - будто бы от хрома эти действия и ожидаются в рантайме, нежели скрывать запросы
но он тоже пока в бета-версии, поэтому и весит так много (аж 100кб с небольшим)
Скрытый контент для пользователей: plymouth.


поэтому придется на x64 выкручиваться через реализацию heavens gate адекватно работать с процессом хрома
Именно это и должно быть, на х32 хром и винду я бы тоже не забивал (powershell wow64, etc)
да, судя по дебаг строкам это один из первых билдов, чуть ли не до оф релиза еще
Скинь в пм актуальный билд, как допилите
 
1746812351766.png

1746812366079.png


maybe soon...
 
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх