История взлома одной MLM компании

Все вы наверно натыкались на «успешных людей» с просторов интернета. Эти люди транслируют свое видение жизни. Выставляют на показ свои богатства. Выпускают книги о том как выходить из зоны комфорта, при этом пишут эти книги из своего особняка в какой нибудь солнечной калифорнии. Вам это знакомо?

Меня это по правде сказать просто достало. Я вычистил все ленты социальных сетей от подобных личностей. Личностей, которые транслируют про коучинг, мотивацию и easy life. И знаете что? Стало прям очень классно оставаться в курсе событий без этого мусора! Заходишь в социальные сети, а там только котики и попугайчики.

ayyw3ooja5ztjmekkuuiarqo3re.jpeg


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

Вот я так подумал и сделал. Точнее сначала сделал. Но потом подумал и вовремя остановился, чтоб дров не наломать. Помни и чти 272 УК РФ!

Речь в рассказе пойдет об одной сетевой компании, которых в наше время просто море (prana, herbalife, oriflame, nl international и т.п.)

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

Итак, поехали. У нас цель — компания и информация о людях, которые весело и славно живут.
Начинаем конечно же с соц.сетей. Вы не представляете сколько всего интересного можно найти в соц.сетях.

Выясняем что всю важную инфу мы можем выудить через один важный сайт. Этот сайт постоянно фигурирует в инстаграм-историях тех кто показывает свои доходы. Чтобы нам поймать «жертву», надо стать этой «жертвой».

Для этого мы регистрируем свою учетную запись, на которой будем проводить эксперименты. Успешно и анонимно это получилось сделать, обнаружив реферальную ссылку на регистрацию.
После регистрации мы получаем e-mail с информацией о логине в систему и пароле. Да-да — ПАРОЛЬ был так же в электронном письме.

lguqimohkrrqx0rxkxpkdbmssrg.png

Получив это письмо я сразу вспомнил о ситуации с паролями RU-Center.

Окей. Это, конечно, плохо, что паролями так легко раскидываются. Но нам-то это никак не поможет. Если только мы не взломаем электронный ящик нашей жертвы.

Едем дальше. Получили пару логин-пароль. Идем логиниться. И тут понимаем, что данный пароль не требует принудительной смены как одноразовый. Более того меню на смену пароля не предполагает установку какого то «уникального» пароля. А я попрошу заметить, пароль из цифр, и четко фиксированного количества. Такая комбинация легко подбирается через брутфорс-атаку.

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

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

7c_coytjnxi5t2sogimmbejulzi.png

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

o7zvslpnii5-nh0og0otl5p5k7q.png

Тогда я решил проверить что будет, если я провести брутфорс атаку на свой аккаунт через endpoint этого приложения. Как быстро я смогу подобрать пароль? Во сколько потоков я могу это делать без отказа самого сервера? Как быстро меня забанят внимательные админы системы?

Результаты, конечно, получились интересными!

Подбор паролей работал на сумасшедшей скорости в несколько потоков (десятки вариантов в секунду). Причем сервер практически не возвращал мне 500 ошибку от возросшей нагрузки. И я не был забанен. Атака выполнялась в течении нескольких часов. И я успешно подобрал пароль. Собственно это был тот же самый пароль, который упал мне на электронный ящик. В самой системе мне открывался огромный функционал возможностей. И после всего этот я просто начал оценивать риски для компании чтобы потом презентовать им security report. Чем больше я углублялся, тем больше понимал серьезность последствий успешности моей атаки.

И так что же можно было сделать?…

  • Собрать персональные данные пользователей системы (ФИО, телефон, паспортные данные, адрес).
  • Собрать всю финансовую активность данных пользователей.
  • Собрать чувствительную информацию о пользователях из личной переписки внутри системы (личные сообщения).
  • Осуществить перевод имеющихся средств между пользователями. С последующим выводом средств. Причем сделать это можно было в очень веселом формате. Если с одного взломанного аккаунта можно понять объем ущерба, найти и откатить транзакции, то через несколько взломанных аккаунтов это сделать уже было бы практически невозможно. По сути своеобразный миксер денег. Как результат — финансовые потери компании. И уж поверьте, деньги там были…
  • Репутационный урон из-за раскрытия финансовой активности пользователей.


Я уже чувствую ваш вопрос — Что ты ужас наводишь? Как ты узнаешь логин других пользователей?

anpn9ewl8pnrbuvg6otsadtgjhi.jpeg

И тут вам мой ответ — соцсети! Все есть в общем доступе. И формат логина тоже достаточно тривиальный.

Самое сложно было — найти человека, которому можно бы было отправить информацию обо всем этом с целью устранения.

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

trf0bzrrc5maoscaqfu_lao7sxe.png

Вот чтоб настолько пофиг было — я не ожидал.

Через социальные сети, друзей-друзей, еще одних друзей я обнаружил человека, который когда-то был разработчиком данной компании. Он мне уже подсказал другого человека, который отвечает за IT-инфраструктуру компании.

К слову, когда я дошел до этого человека — прошло 2–3 дня. Человек отреагировал адекватно. Мы с ним очень классно побеседовали обо всех проблемах. Он не отрицал ни один из пунктов который я описал.

g-7rovzg5ef7dc3l5wzdtc64trs.png

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

lx445jmohgx17pgix8cmumvwy6s.png

Проблема закрыта. Все счастливы. Я получил интересный опыт. Компания получила ценный security report и жизненный урок.

И тут у вас возник вопрос о вознаграждении? Отвечу цитатой великих — «Денег нет, но вы держитесь». На самом деле администратор системы предложил мне перевести немного деньжат на мой тестовый аккаунт (5 т.р., если мне не изменяет память).

1-kw9j-vemi9tpx7m29wiy8frbg.png

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

Выводы:

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

    pj1ck5ftv8rflvhq343ibawkx5g.png

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


У меня все. Комментарии и пожелания приветствуются. Также я открыт к предложениям по тестированию чего-то интересного.

© Habrahabr.ru