История взлома одной MLM компании
Все вы наверно натыкались на «успешных людей» с просторов интернета. Эти люди транслируют свое видение жизни. Выставляют на показ свои богатства. Выпускают книги о том как выходить из зоны комфорта, при этом пишут эти книги из своего особняка в какой нибудь солнечной калифорнии. Вам это знакомо?
Меня это по правде сказать просто достало. Я вычистил все ленты социальных сетей от подобных личностей. Личностей, которые транслируют про коучинг, мотивацию и easy life. И знаете что? Стало прям очень классно оставаться в курсе событий без этого мусора! Заходишь в социальные сети, а там только котики и попугайчики.
Но рассказ не об этом. В какой-то из дней у меня подгорело и я подумал —, а что если взять и посмотреть на реальные доходы этих людей, которые так раздражают?
Вот я так подумал и сделал. Точнее сначала сделал. Но потом подумал и вовремя остановился, чтоб дров не наломать. Помни и чти 272 УК РФ!
Речь в рассказе пойдет об одной сетевой компании, которых в наше время просто море (prana, herbalife, oriflame, nl international и т.п.)
Название компании умышленно скрыто, а личности заблёрены т.к они не пожелали предавать огласке данный инцидент. В принципе правильно. Кто знает что еще я упустил… Ну, а вы как читатель, на данном примере, можете понять чего не стоит делать и каких ошибок не стоит допускать.
Итак, поехали. У нас цель — компания и информация о людях, которые весело и славно живут.
Начинаем конечно же с соц.сетей. Вы не представляете сколько всего интересного можно найти в соц.сетях.
Выясняем что всю важную инфу мы можем выудить через один важный сайт. Этот сайт постоянно фигурирует в инстаграм-историях тех кто показывает свои доходы. Чтобы нам поймать «жертву», надо стать этой «жертвой».
Для этого мы регистрируем свою учетную запись, на которой будем проводить эксперименты. Успешно и анонимно это получилось сделать, обнаружив реферальную ссылку на регистрацию.
После регистрации мы получаем e-mail с информацией о логине в систему и пароле. Да-да — ПАРОЛЬ был так же в электронном письме.
Получив это письмо я сразу вспомнил о ситуации с паролями RU-Center.
Окей. Это, конечно, плохо, что паролями так легко раскидываются. Но нам-то это никак не поможет. Если только мы не взломаем электронный ящик нашей жертвы.
Едем дальше. Получили пару логин-пароль. Идем логиниться. И тут понимаем, что данный пароль не требует принудительной смены как одноразовый. Более того меню на смену пароля не предполагает установку какого то «уникального» пароля. А я попрошу заметить, пароль из цифр, и четко фиксированного количества. Такая комбинация легко подбирается через брутфорс-атаку.
Окей. Пробуем ручками проверить форму логина на устойчивость к перебору пароля. И вот тут выясняется, что не все так просто. Учетная запись полностью блокируется и войти нельзя даже по правильному паролю после нескольких неудачных попыток. Запись блокируется на несколько минут. И это уже создает ситуацию невозможности проводить брутфорс-атаку.
И тут я вспоминаю о самом любимом в своей работе. О мобильных приложениях. В последнее время я их столько повидал. И столько откровенной дичи нашел. И захардкоженные пароли, и отсутствие разграничений и привилегий между пользователями. Ну кароч мне повезло и я нашел пару приложений этой компании. В одном из приложений можно было использовать ту же саму пару логина и пароля.
Безусловно, функционал приложения не открывал нам безграничные возможности. Но endpoint логина уже использовался совсем другой. Не тот который четко блокировал аккаунт при переборе.
Тогда я решил проверить что будет, если я провести брутфорс атаку на свой аккаунт через endpoint этого приложения. Как быстро я смогу подобрать пароль? Во сколько потоков я могу это делать без отказа самого сервера? Как быстро меня забанят внимательные админы системы?
Результаты, конечно, получились интересными!
Подбор паролей работал на сумасшедшей скорости в несколько потоков (десятки вариантов в секунду). Причем сервер практически не возвращал мне 500 ошибку от возросшей нагрузки. И я не был забанен. Атака выполнялась в течении нескольких часов. И я успешно подобрал пароль. Собственно это был тот же самый пароль, который упал мне на электронный ящик. В самой системе мне открывался огромный функционал возможностей. И после всего этот я просто начал оценивать риски для компании чтобы потом презентовать им security report. Чем больше я углублялся, тем больше понимал серьезность последствий успешности моей атаки.
И так что же можно было сделать?…
- Собрать персональные данные пользователей системы (ФИО, телефон, паспортные данные, адрес).
- Собрать всю финансовую активность данных пользователей.
- Собрать чувствительную информацию о пользователях из личной переписки внутри системы (личные сообщения).
- Осуществить перевод имеющихся средств между пользователями. С последующим выводом средств. Причем сделать это можно было в очень веселом формате. Если с одного взломанного аккаунта можно понять объем ущерба, найти и откатить транзакции, то через несколько взломанных аккаунтов это сделать уже было бы практически невозможно. По сути своеобразный миксер денег. Как результат — финансовые потери компании. И уж поверьте, деньги там были…
- Репутационный урон из-за раскрытия финансовой активности пользователей.
Я уже чувствую ваш вопрос — Что ты ужас наводишь? Как ты узнаешь логин других пользователей?
И тут вам мой ответ — соцсети! Все есть в общем доступе. И формат логина тоже достаточно тривиальный.
Самое сложно было — найти человека, которому можно бы было отправить информацию обо всем этом с целью устранения.
Нашел самого главного в этой конторе. Вроде как он считался руководителем. Но он очень нехотя общался. Скинул электронный адрес, на который я могу отправить технические детали. И так и не прочитал мои последние сообщения. На мое письмо по электронной почте тоже не ответил.
Вот чтоб настолько пофиг было — я не ожидал.
Через социальные сети, друзей-друзей, еще одних друзей я обнаружил человека, который когда-то был разработчиком данной компании. Он мне уже подсказал другого человека, который отвечает за IT-инфраструктуру компании.
К слову, когда я дошел до этого человека — прошло 2–3 дня. Человек отреагировал адекватно. Мы с ним очень классно побеседовали обо всех проблемах. Он не отрицал ни один из пунктов который я описал.
Замечательно было еще то что из-за аномального трафика, который я намеренно создавал — он закрыл имеющуюся лазейку еще несколько дней назад. И это круто. Не круто бы было, если бы он вообще ничего не заметил.
Проблема закрыта. Все счастливы. Я получил интересный опыт. Компания получила ценный security report и жизненный урок.
И тут у вас возник вопрос о вознаграждении? Отвечу цитатой великих — «Денег нет, но вы держитесь». На самом деле администратор системы предложил мне перевести немного деньжат на мой тестовый аккаунт (5 т.р., если мне не изменяет память).
Но вывести эти виртуальные средства по сути я не мог. На его предложение, я просто любезно попросил перевести это «вознаграждение» знакомому, который «работает» в этой компании. Он в свою очередь смог потратить деньги на сладкую продукцию компании. Ну, а дальше, по моей просьбе, сладости отправились в детский дом.
Выводы:
- Не забирайтесь слишком глубоко, когда находите нечто «интересное».
- Никогда не забывайте о 272, и о риске попасть на контакт с не очень адекватной персоной, которая может быть не рада вашему сообщению о «взломе». В конкретном примере мой собеседник попался веселый.
- Как разработчик, никогда не реализуйте функционал авторизации/аутентификации через разные API endpoint. В вашей системе должна быть общность. Не должно быть workaround решений для того или иного функционала. Все должно работать через единый endpoint с единой защитой. В противном случае вы устанете искать с какого места к вам пришли взломщики.
- Не используйте простые пароли для пользователей, которые вы сами генерируете. По хорошему пароль должен устанавливать сам пользователь.
- Всегда шифруйте пароли, солите их, и не храните в плэйн тексте.
- Не передавайте пароли от системы в электронном письме при регистрации. Если пользователь потеряет контроль над электронным ящиком, он потеряет контроль и над вашей системой.
- Не используйте генератор логинов в вашу систему. Логины в систему тоже должны быть уникальными.
- При реализации функционала авторизации, всегда закладывайте функционал защиты от перебора.
У меня все. Комментарии и пожелания приветствуются. Также я открыт к предложениям по тестированию чего-то интересного.