Mars ******* врывается на форумы с красивым описанием - "Написан на ASM/C WinAPI, не используется CRT, STD" Давайте закроем глаза на то, что нет никакого STD, есть STL, но сами же написали, что написано на Си - какое там вообще может быть STL, если это стандартная библиотека C++? Но мало того, что про ассемблер вам наврали, так ещё и наврали про скрытие запросов секретной техникой и отсутствие CRT - тоже! "Весит 95 килобайт, использует техники скрытия запросов к WinAPI, шифрует используемые строки, собирает весь лог в памяти, а так же поддерживает защищённое SSL-соединение командным сервером" (95 килобайт подозрительно много для ASM/C, и вы позже поймёте почему так много) Билд действительно было сложно достать, но я нашёл какую-то статью про Mars ******* ("how to remove Mars *******"), где был прикреплён его отчёт на VirusTotal, и, к счастью, целых 6 дней назад! Хэш: 7da3029263bfbb0699119a715ce22a3941cf8100428fd43c9e1e46bf436ca687 Давайте сравним описанное: (Вес файла 94.50 kb, пока что всё сходится) Дальше я пошёл по хэшу, и нашёл его на Bazaar, и там уже нашёл его тэг - "MarsStealer" Ну а потом скачал его по хэшу с AnyRun, где он засветился два раза. Скачал я самую последнюю версию, которая засветилась в 11:16 09 авг. 2021 Из странного хочу отметить, что ******* всегда палится, обращаясь к sqlite.dll на домене, возможно он его скачивает, но почему разработчики просто не поместили его в ресурсы, или не скомпилировали статически? Давайте разбираться.. Ревёрс-инжиниринг Mars ******* / Первый взгляд Итак. Скачав билд, я сразу требую забанить того, кто продаёт *******, за обман. Потому что в *******е используются CRT, и используются - ещё мало сказано: (Нас всех обманули!) Идём дальше. Строки зашифрованы, своё шифрование, или нет - я разбираться не стал UPD: Это Base64(RC4), по словам разработчика Ревёрс-инжиниринг Mars ******* / Динамический, статический анализ При запуске нас встречает 6 функций. Первая функция - подгрузка библиотек и инициализация функций. Прописано без таблицы адресов, абсолютно никакой оптимизации: Вторая функция - проверка на наличие пошаговой отладки. Если пошаговая отладка - вызвать ExitProcess: Далее идёт ещё одна проверка, получением языка машины (проверка на СНГ). В общем, меняем всё это дело вот так: Идём дальше... Потом идёт создание мутекса, проверка на то, успешно ли он создался... И потом первая функция после проверки мутекса - бинго! Расшифровка. Заходим внутрь первой функции, в которую передаётся аргумент с зашифрованной строкой: И видим вызов первой функции. Она просто работает с локальными переменными, и делаем вывод, что это генерировал Си-компилятор, впрочем, нигде ассемблера я так и не увидел... Далее идёт вторая функция. Она переводит строку в бинарный вид, через CryptStringToBinaryA (так же через неё можно конвертировать из\в base64) Далее идёт выделение памяти, и сама расшифровка... Первым расшифровывается дата.. 28\08\2021, это для проверки лицензии Далее расшифровывается "http://" Не успели мы уже **** собрать, а нам тут уже домен первым делом расшифровали. cookreceipts.fun Дальше Гейт - /some2.php Ну и дальше уже без скриншотов: "open" - для ShellExecuteA "%hu/%hu/%hu %hu:%hu:%hu" - для панели, на это место вставится дата Потом наш путь к sqlite3.dll "/public/sqlite3.dll" Потом идёт путь, куда скачивать DLL: "C:\ProgramData\sqlite3.dll" Потом ещё скачивается вторая библиотека, и вообще, вот вам список библиотек, которые переносятся через домен: "/public/freebl3.dll" -> "C:\ProgramData\freebl3.dll" "/public/mozglue.dll" -> "C:\ProgramData\mozglue.dll" "/public/msvcp140.dll" -> "C:\ProgramData\msvcp140.dll" "/public/nss3.dll" -> "C:\ProgramData\nss3.dll" "/public/softokn3.dll" -> "C:\ProgramData\softokn3.dll" "/public/vcruntime140.dll" -> "C:\ProgramData\vcruntime140.dll" И дальше строки для панели: ".zip", "BotID: ", "IP: ", "Country: ", "Working path: ", "Local time: ", "TimeZone: ", "Display Language: ", "Keyboard language: ", "Is Laptop: ", "Processor: ", "Installed RAM: ", "OS: (", " bit)", "Videocard: ", "Display resolution: ", "PC name: ", "User name: ", "Domain name: ", "Machine ID: ", "GUID: ", "Installed software: ", "system.txt", "Grabber\%s.zip", "%APPDATA%", "%LOCALAPDDATA%", "%USERPROFILE%", "%DESKTOP%", "Wallets\", "Ethereum", "keystore", "Electrum", "\Electrum\wallets\", ну продолжать можно бесконечно... Ужасный код расшифровки одним огромнейшим списком: (Можно было сократить в один маленький цикл) Следующая функция после дешифровки всех данных - импорт оставшихся функций (нужных для последующих действий). В самом начале - идёт первая часть функций, она небольшая, это в основном из kernel32 - для получения даты, и т.д, а теперь идут остальная - огромная часть, и мало того, что огромная - так ещё и неоптимизированная. UPD: Разработчик написал, что это компилятор виноват, но мы ведь все знаем, что на O0 он не сгенерирует даже это, а в результате на O3 он бы сам оптимизировал в циклы, но подозрение у меня, что разработчик написал копирайт кучи строк, а потом ещё и в O0-O2 скомпилировал, вот вам и 95 килобайт: В ассемблерном листинге это ещё длиннее, поэтому я покажу вам в декомпиляторе, т.к так это более компактнее. Впитайте в себя килобайты, и представьте, как бы вы это оптимизировали в один маленький цикл с таблицей: После подгрузки функций - идёт сбор данных... Неясно, почему перед сборкой ***** идут расшифровка всех данных, импорт WinInet, а потом только отправка, можно было всё намного лучше перестроить. В сборе данных так же используются системные переменные: Что убивает переносимость, т.к если переменные выставлены неверно - ******* работать не будет. Порядок сбора данных: Не поместилось - сначала идёт получение sqlite3 из домена Потом браузеры, криптокошельки, делается скриншот, GetAnotherLibs (не разобрал, отправляется запрос на гейт, и читается ответ), граббер, фукции от Си-компилятора, а потом отправка Отправка - очень много lstrcat Сбор данных идёт на диске: В общем виде выглядит всё вот так: (не CheckVM, а проверка на СНГ) Естественно, про многопоточность и речи не идёт. Итоги: Плюсы: - Шифрование - Защищённая импорт-таблица (получение функций в рантайме) Минусы: - Максимально неоптимизированный код - Неправильная постановка хода *******а. Сначала расшифровывается всё, импортируются функции, а только потом собираются и отправляются данные. Ничего не мешает в отладке зайти в функцию дешифровки, получить строки, и выйти... - Отсутствие обнаружения виртуальной среды. - Подгрузка библиотек с панели, нагрузка - Обман пользователей с намерениями специально привлечь внимание - Сбор данных на диске - Используются системные переменные - Отсутствие многопоточности Скачать рассматриваемый билд MarsStealer -> https://dl.uploadgram.me/612456b287686h Читайте так же: * Ревёрс-инжиниринг *******а RedLine -> https://zelenka.guru/threads/2866730/ * Ревёрс-инжиниринг DC-RAT -> https://zelenka.guru/threads/2878088/ * Ревёрс-инжиниринг *******а X-FILES -> https://zelenka.guru/threads/2884957/ * Пишем полиморфный код на ассемблере с шифрованием (обход VirtualBox, AnyRun, дампа памяти, 5 блоков кода) -> https://zelenka.guru/threads/2881723/ * Ревёрс-инжиниринг MarsStealer -> https://zelenka.guru/threads/2888161/ * Кряк MarsStealer v3 -> https://bhf.io/threads/636515/#post-7113209 * Ревёрс-инжиниринг SHurk Steal -> https://zelenka.guru/threads/2889104/
LLCPPC_inactive4415647, "смирись" у тебя вечно повторяется. Ну "иди тут" просто не уместно. "в ******ы полез" это вообще по моему не правильно, более грамотно было бы выразиться в малваре кодинг.
G0odDay, Мне просто не нравится употреблять взаимствованное слово "малварь", оно звучит не по-русски, а писать "программирование вредоносного ПО" иногда забываю, поэтому легче просто указать "ветку" вредоносного ПО, вроде "*******" - легко, и просто. А про "смирись" - я сделал фон утверждающего предложения, однако я писал это с раздражительностью, поэтому мог не следить за речью
LLCPPC_inactive4415647, Вообще про англицизмы это спорная тема, вроде не есть хороша, а вроде и не плохо. А про раздражительность я тебя понимаю
Обновил. Всем стоит это видеть. Добавил порядок сбора данных (и в принципе показал сбор данных, и отправку), как ты просил, marsteam, добавил ещё два минуса - сбор данных на диске, использование системных переменных. Ну и ещё добавил побольше доказательств твоего говнокода, пусть люди видят. Так же поправил "общий вид", т.к я там ошибся, порядок -> Дешифровка всех данных, получение функций (в том числе winapi, в одном говнокоде), проверка лицензии по дате (легко крякается), получение\отправка *****. Рекорд по минусам Добавлено: где же твоя секретная техника скрытия запросов?
Кстати ещё интересно, где ты нашёл, что "что сначала нужно собрать лог и импортировать потом вининет, сейчас ты пишешь, что в принципе оно так и работает"? Я этого нигде не писал, порядок всё так же неверный, как раньше, так и после обновления статьи.
marsteam, Удали своё сообщение, пожалуйста. Мне стыдно даже начало читать каждый раз - "разницы между STD и WinAPI не знаешь", ты правда всерьёз называешь STL - STD, как же... как же это
LLCPPC_inactive4415647, > Ну давай, начинай спорить, что MSVCRT это не CRT Мда, на этом можно спор заканчивать. Совсем забыл, что у нас msvcrt что-то в kernel32 забыла. https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-lstrcata Дальше что-то доказывать тебе бессмысленно, лишний раз доказал, что в винапи ноль нулем, так еще и жалобы якобы за оскорбления кидаешь. > ты правда всерьёз называешь STL - STD Давай до привычек цепляться, может ещё мне левой рукой начать писать?
Лжедмитрий, Таких в свободном доступе не найти, но никому и не нужно. В основном *******ы используются в хакерских атаках, а для игр - распространять по Ютубу, побаловаться - можно брать любой .NETовский, это в принципе и не важно вообще..
Лжедмитрий, самый лучший ******- это продукт, который ты написал сам, и который тебя устраивает) Понятное дело сбор в памяти-самое главное+ шифрование.
не эксперт, но по моему билиотека sqlite на си использует crt, если его компилировать статически, то это сильно повлияет на вес *******а + уже будет противоречить и так нарушенному заявлению кодера о том что crt не юзается