Как наш интернет-магазин взломали и увели 2900 рублей (а могли бы и миллион)

Десятиминутный детектив с картинками и счастливым концом

Мы — «Мам, купи!» Делаем одежду и аксессуары для блогеров и музыкантов, монетизируем мемы, наводим суету. Иногда в интернетах случаются скандалы с нашим участием (каждый раз неловко) — но так или иначе, мы остаемся фабрикой футболок и кружек, с типичными для легкой промышленности процессами

За шесть лет существования компании, мы столкнулись с мошенниками только один раз, и то с натяжкой: какой-то мужик тупо зашел в офис, схватил Макбук и убежал

Помогите Даше найти жулика

Как устроена наша система

Мы торгуем одеждой и аксессуарами в интернет-магазине. Заказ оформляется через сайт на Битриксе, оплата производится через Юкассу, затем заказ уходит в МойСклад — где формируется список товаров для производства и отправки. Схематично вся цепочка выглядит вот так:

  • Клиент выбирает футболку на сайте > кладет в корзину > кликает «оплатить»
  • Сайт перекидывает клиента на страничку оплаты в Юкассе
  • Клиенту, на указанный при оформлении email, автоматически приходит письмо «Ваш заказ оформлен, вот ссылка для оплаты»
  • Клиент оформляет заказ в окне оплаты Юкассы > заказ уходит в МойСклад
  • Клиенту приходит письмо «Ваш заказ оплачен вот вам его номер»
  • Сотрудники производства выгружают заказ из МоегоСклада и начинают работать

На случай, если оформить заказ через сайт не получается, существует старая система, оставшаяся еще со времен торговли через социальные сети: клиент пишет в директ нашего Инстаграма, отдел продаж принимает заказ, ручками оформляет его через админку сайта, а дальше все развивается по схеме выше, начиная с пункта № 3 + ссылка для оплаты дублируется прямо в директе Инстаграма

Заказ, благодаря которому мы обнаружили что нас взломали

Взлом

На дворе 23 марта, клиент пишет нам в Инстаграме — хочет купить вышедшее из продажи худи «Обрыган”. Это мемное худи, приуроченное к появлению двух наших блогеров в “Вечернем Урганте»

Слава Марлоу — битмейкер и музыкант, мы разработали три коллекции его мерча

Торги уже закрыты, худи с сайта убрано, но материалы есть — так что мы решаем продать еще одну штучку. Продавашки действуют по инструкции: узнают всякое про размер, адрес доставки, спрашивают email, оформляют заказ в админке Битрикса и высылают платежную ссылку. Клиент оплачивает 2900 рублей, однако деньги до нас не доходят

Карина Каррамбейби — блогерша, напарница Славы по клипу «Ты горишь как огонь» и наша подруга. Ее мерч тоже продается в «Мам, купи!» Эта фотография с «Вечернего Урганта» на пару дней стала популярным мемом

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

Проходит час, еще один, завязывается переписка, клиент показывает чек и скриншоты — и вот тут мы понимаем что оплата была произведена в каком-то левом кошельке https://sobe.ru/na/mamcupy. Кошелек называется «MamCupy», прямо как наша компания — однако оформлен на физическое лицо и никак с нами не связан. Под ним буквально написано «Деньги получит человек, а не компания», но видимо клиент этого не заметил. Продавашки пытаются понять: как клиент попал туда — проверяют автоматическое письмо, отправленное Битриксом, и видят подмену платежной ссылки

Вот сюда попал наш клиент по фальшивой ссылке

Кто-то влез в наш Битрикс, и подменил платежную ссылку в автоматическом письме так, что теперь она стала вести на левый кошелек!

Мы тут же останавливаем продажи, меняем пароли, проверяем все заказы за последние дни — и обнаруживаем, что все автоматические письма начиная с 21 марта содержат в себе ссылку на левый кошелек. То есть: целых три дня наш сайт отправлял клиентам письма с фальшивой платежной ссылкой. Обзваниваем клиентов и выдыхаем — в ловушку успел попасться только один человек

То самое лимитированное худи «Обрыган»

Обманутого клиента мы успокоили, заказанное худи выслали за свой счет, а кошелек мошенника https://sobe.ru/na/mamcupy — заблокировали через обращение в саппорт. Взломанный шаблон на Битриксе исправили в тот же день, после чего заменили пароли

Расследование

На следующий день после закрытия дыры, мы сообщили команде: «в систему влез червь, клиента обманули на 2900 рублей — чистим компутеры и перестаем лазать по порносайтам, хорошо?» Разумеется, ни в какого червя мы не верили — ссылку однозначно подменил кто-то из компании. Для поиска мошенника, была собрана группа из доверенных сотрудников. Расследование началось!

«Мам, купи!» долгое время существовала небольшой дружной командой, пароли конечно не валялись в открытом доступе — но и добыть их труда не составляло. В последние три месяца мы наняли новых контентщиков, бухгалтеров, b2b-менеджеров, закупщиков — у любого из них было достаточно прав доступа для получения паролей от Битрикса

Сперва мы решили допросить sobe.ru, в конце концов кошелек мошенника находился на их платформе. Закономерно, мы получили отписку: мол ситуация мутная, но данные владельца кошелька мы выдать не можем, даже email, сами понимаете — подключайте полицию

Мусорнуться — не вариант
Но спасибо за оперативность

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

Сразу найти ничего не получилось, навалились новые дела, так что мы забили — вернулись к обычной работе, а 26 марта опубликовали в нашем Телеграме статью о случившемся. Чтобы взлом не повторился, мы предприняли две меры: поменяли все-все пароли, и стали делать 1 пробный заказ в начале каждого дня

Тогда мы еще не знали кто именно наш воришка — расписали ситуацию как есть

27 марта, после пробного заказа, мы заметили что ссылку снова подменили! Лезем в логи — таинственный незнакомец заходит в админку Битрикса, делает заказ, видит что мы починил ссылку, меняет шаблон, делает еще один заказ, стирает следы. Проверяем логи почты, с которой отправляется ссылка, и находим email мошенника: [email protected]

Логи почты. [email protected] — автоматическое письмо с нашей почты. [email protected] — почта, указанная мошенником для проверки заказа с фальшивой ссылкой

Все изучив, мы фиксируем порядок действий (какие команды, сколько времени заняло) мошенника, и ищем аналогичный в районе 21 марта — ровно тогда произошел первый взлом. Бинго! Те же действия, снова удаленные пробные заказы, только email теперь другой, гораздо более знакомый нам — [email protected]

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

DSA — инициалы Дмитрия, недавно уволенного сотрудника «Мам, купи!» Август 1984 года сходится с датой его рождения. Вытащив из архива его резюме, мы обнаруживаем все тот же email [email protected]. Как можно было так глупо проколоться?

Сложно поверить, что кто-то будет тестировать мошенническую схему на своем рабочем почтовом ящике, да еще и с инициалами и годом рождения? Для верности, мы пытаемся войти на [email protected] с помощью номера Дмитрия. Яндекс принимает номер и отправляет на него код. То есть ящик и правда зарегистрирован на него. Окей, теперь верим!

Это мы написали Дмитрию после попытки зайти на почту [email protected] через его номер телефона. Затем он нас забанил и потер чаты

Шаг за шагом

Взяв Дмитрия на карандаш, мы изучили логи с нуля и восстановили картину событий

10 марта:
Дмитрий уволен

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

21 марта:
Дмитрий ковыряется в шаблонах, проверяет наши графики продаж и полученных сумм, смотрит настройки заказов. Наконец у него получается подменить ссылку — он делает заказ на email [email protected], убеждается что ссылка изменилась на фальшивую, и стирает все следы своих проказ. Схема сработала, впереди миллионные хищения!

№1 редактирует шаблон / №2 идет на сайт и ходит по товарам, оформляет заказ, чтобы проверить содержит ли письмо фальшивую ссылку / №3 заказ оформлен / №4 заказ удален

23 марта:
Мы потеряли 2900, обнаружили взломанный шаблон и починили его. Поиски по логам ничего не дают — слишком большой массив данных, а у нас лапки и вообще мы больше по одежде

26 марта:
Мы публикуем статью про мошенничество

27 марта:
Дмитрий снова заходит в админку и меняет шаблон, делает два пробных заказа на email [email protected] — по которому мы и выходим на его следы

№1 заказ оформлен / №2 заказ удален / №3 тут он видимо понял, что ссылки в письме нет и снова пошел редактировать шаблон / №4 пришел на сайт / №5 оформлен новый заказ / №6 по старой схеме стер следы

Идеальные условия для победы!

Как же так вышло, что мы наняли подобного человека?

ПЕРИОД ИДЕАЛЬНЫХ УСЛОВИЙ ДЛЯ ПОБЕД!!1

Долгое время мы существовали в формате небольшой мастерской, работали как удобно и не запаривались созданием сложной бизнес-структуры. В 2020 году все изменилось. Во-первых, карантин вынудил нас ужать штат. Во-вторых, мы выпустили суперуспешную коллекцию одежды для Моргенштерна — и нам привалило заказов больше, чем мы могли отработать в привычном режиме. Тогда мы решили поступить как большие дядьки: нанять крутого операционного директора. Мы полагали, что он опишет все наши бизнес-процессы, составит понятные инструкции, натянет CRM

Вместо CRM, он решил натянуть нас!

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

Жулик, не воруй!

Три месяца он составлял таблицы, делал звонки, описывал процессы, уволил пару сотрудников, вроде что-то делалось — нельзя же требовать от топ-менеджера срочных результатов. В марте ждать надоело, мы устроили большую беседу и поняли — дядька не вывозит наш хаос. B2B-подразделение настроить у него не получилось, структурирование процессов тоже по нулям, внедрение CRM застряло на стадии консультации с поставщиком. Поразмыслив, мы решили что пора прощаться — без обидок, с полной выплатой обещанного вознаграждения и передачей дел. Спустя неделю Дмитрий сдал нам все учетки, корпоративный Макбук, и покинул «Мам, купи!» в той же тишине, что сопровождала его все три месяца работы

По итогу расследования, мы пытались связаться с Дмитрием — но он молча банил нас во всех мессенджерах и тер диалоги с двух сторон

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

Нормально же общались

Что теперь?

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

Всем удачи и правильного подбора кадров, а если уж жизнь подтолкнет вас к мошенничеству — настоятельно советуем не использовать рабочий email с вашими инициалами и годом рождения в названии

0
158 комментариев
Написать комментарий...
Sasha Step

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

Ответить
Развернуть ветку
Paul Melekhov

На текущий момент, если бы они наняли админа в штат, они бы сэкономили бы 2900, а потратили бы на зарплату и налоги админа в раз в 100 больше. Тут конечно многое зависит от везения, плюс сработала их собственная внимательность и интуиция.

Ответить
Развернуть ветку
Sasha Step

Ну т.е. дождаться когда накажут на 2,9 мл руб а потом нанимать админа чтоб было выгодно?

Ответить
Развернуть ветку
Paul Melekhov

К тому времени, когда может возникнуть наказание на 2.9 млн, штат админов съест 10 млн. Просто не всегда найм админа в штат финансово обоснован. Тем более, что даже наличие админа не является 100% гарантией отсутствия взлома. Да и сам админ может бед наделать немало, если с ним как-то не так расстанутся.

Ответить
Развернуть ветку
155 комментариев
Раскрывать всегда