Как стать автором
Обновить

Расследование утечек информации из корпоративной базы данных перевозчика

Время на прочтение 5 мин
Количество просмотров 18K
Всего голосов 36: ↑34 и ↓2 +32
Комментарии 44

Комментарии 44

Люблю такие детективы. В такой ситуации мог бы помочь файрвол для БД?
Файрволл не помог бы, т.к. все запросы абсолютно лигитимные с согласованных адресов. С помощью файрволла можно отключить запросы со стороны найденного нарушителя, но это же можно сделать и средствами управления аккаунтами.
нет конечно. доступ-то абсолютно легальный был через авторизованого клиента.
скандалы, интриги, расследования =0
В этот раз, благодаря встроенным методам фильтрации нашей аналитической системы, мы получили список из 12 аккаунтов, к которым «улетали» данные по координатам нашего грузовика в течение секунды после каждого нашего запроса. За любым из таких аккаунтов стоит АСУ одного из клиентов перевозчика.

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

Аккаунт принадлежал одному из сотрудников логистической компании


То есть сотрудник логистической компании (а не перевозчика и владельца БД) имел доступ не только к данным своей компании, но и к чужим? При условии что:

Все запросы АСУ клиентов к базе данных (БД) перевозчика реализованы посредством набора Хранимых Процедур. Для управления доступом каждому клиенту выделяется его собственный аккаунт с набором необходимых ему полномочий и прав.
Здесь был один организационный нюанс: упомянутая логистическая компания входила в один холдинг с перевозчиком, поэтому считалась доверенной, и ей был предоставлен расширенный доступ к данным.

Не хотелось быть первым комментатором, что бросилось при первом прочтении


Что-то непонятно.


  • Каждый автомобиль оснащен системой мониторинга, оправляющей в диспетчерский центр данные о координатах, расходе топлива и множестве других показателей.
  • которые продавали информацию о грузах перевозчика.
  • С технической точки зрения информацию о своем грузе можно получить двумя путями… Для управления доступом каждому клиенту выделяется его собственный аккаунт с набором необходимых ему полномочий и прав.
    То есть продавалась информация о расположении ТС, а не характеристики самого груза, а то упор на которые продавали информацию о грузах перевозчика.? Или все таки и о грузе тоже?


  • этого клиента — крупного логистического оператора
  • Аккаунт принадлежал одному из сотрудников логистической компании
    Доступ клиентов осуществляется ко всей базе, или только к определенным ТС… а то какая защита от злоумышленников которые не будут так палиться


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

Хотя


12 аккаунтов, к которым «улетали» данные по координатам нашего грузовика в течение секунды после каждого нашего запросы?

А почему к ним улетали данные по вашим запросам? И почему к выявленному злоумышленнику улетали по вашему запросу?

Хотя понял


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

Упущено "на криминальном ресурсе"

Да, Вы верно поняли, в течение секунды к данным по нашему грузовику было несколько запросов от разных типов аккаунтов. Среди них были не только клиенты перевозчика, но и аккаунты самого перевозчика.
Последовательность была следующая: мы делаем запрос с «левого» ресурса, и через секунду получаем данные. Данные, которые мы получили, были переданы одним из аккаунтов, имеющих доступ к БД. Кроме этого аккаунта в течение секунды к данным по этому грузовику обращались информационные системы самого перевозчика и АСУ клиентов. Всего таких обращений было 12.
выходит, что если бы продавцы были чуть умнее, и давали бы данные со случайной задержкой (скажем, от секунды до часа, причем, случайная задержка как на запрос, так и на отдачу покупателю), то детектив был бы в разы интереснее?
Кроме информации о координатах, была еще и информация о грузе. Та логистическая компания, сотрудник которой «сливал» данные, входила в один холдинг с перевозчиком, входила в число «доверенных лиц» и поэтому имела расширенный доступ к данным. О том, что доступ был слабо ограничен мы выяснили по результатам расследования и дополнительного анализа настроек доступа. Кроме них доступ к данным имел ряд собственных систем и сотрудников перевозчика.

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


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

Такие спокойно получают информацию от водителя...


Интересно — выдача по своему искаженных координат для каждого пользователя осталась или нет :)

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

Другие запросы были в большей части от систем самого перевозчика

Сотрудник перенаправлял запросы с "левого" ресурса на свой сервер АСУ, а с него шёл запрос в БД

Простите за, возможно, глупый вопрос, но почему некая логистическая компания должна иметь полный доступ на отслеживание всех А/М перевозчика, в которой она обслуживается. По идее, клиенту достаточно знать только где находятся те машины и тот груз, который ему принадлежит. Либо, в случае логистической компании, груз, за который она отвечает.
Если я прав, то при реализации такого разделения прав доступа, ни один клиент бы не смог предоставлять такие данные и утечку, если бы она вообще была, достаточно было бы искать внутри своей компании.
По сути перевозчик просто открыл клиентам свою полную базу данных и удивился, что кто-то что-то сливает, даже не предусмотрев заранее способ отследить, куда какие данные уходят и в каком объёме.
Кроме клиентов перевозчика доступ к данным получают как сотрудники перевозчика, так и несколько его информационных систем. При работе с крупными партнерами перевозчику трудно ограничить доступ каким-то набором грузовиков, ибо грузы нескольких клиентов зачастую перевозятся в одном кузове, поэтому разграничение доступа было достаточно сложным вопросом для перевозчика. Кроме того были и «доверенные» компании, которым по разным причинам предоставлялся расширенный доступ.
То есть система настолько дырявая, что любая «логистическая компания» может получить данные о всех перевозках, в том числе и тех, что делаются не в ее интересах?

По-моему, при таким раскладе искать «источник утечек» поздно. Источником является сама система, которая отдает всё всем.
Не любая «логистическая компания» может получить данные. Данные о всех перевозках доступны ограниченному набору информационных систем самого перевозчика и ограниченному набору сотрудников. Также некоторыми «расширенными» правами обладали компании, входящие с перевозчиком в один холдинг.
как-то получается, будто любой клиент может узнать о любом грузе, даже о том, с которым он совершенно не связан. Это и правда так? Мне кажется так или иначе — такие вещи должны под коммерческую тайну каждого клиента попадать, а следовательно доступ к данным груза должен быть только у представителей (или сервисов) клиента, которому он доставляется.
Это не совсем так. Любой клиент может получить доступ к информации о своем грузе. Но ряд внутренних систем самого перевозчика имела полный доступ к данным, как и ряд сотрудников перевозчика. Кроме того, за долгие годы взаимодействия с некоторыми крупными клиентами по мере роста доверия к ним, расширялись и их права. Если резюмировать, то коммарческая тайна в основном была защищена, за редким исключением.
Как-то прозаичненько все обернулось.

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

Одно мне непонятно (какими бы теплыми ни были отношения двух компаний): почему логистическая компания (ЛК) имела доступ к данным по грузам всех клиентов перевозчика(П)?
Если, как вы говорите «Его клиентами являются десятки логистических компаний и предприятий», то все выглядит немного пикантней:
П «по-дружески» сливала информацию по конкурентам в ЛК из своего холдинга, причем другим своим клиентам — нет.

Прошу пояснить если я где-то ошибся или что-то не так понял.
Перечитал комментарии, увидел, что выше уже есть идентичный (и ответ к нему).

Правда ответ в духе «им было гемморно придумывать что-то с правами, поэтому решили дать все, но только проверенным» все равно звучит довольно плохо — именно из-за этого утечка и произошла.
И то, что вы нашли одного сливатора вовсе не значит, что не существует других, более скромных (которые сливают только проверенным и «из рук в руки»).
Других потенциальных «свитаторов» выявили на следующем этапе, но уже другими методами. Пришлось провести немало месяцев за анализом и перестройкой системы разграничения доступа.
+1.
>Одно мне непонятно (какими бы теплыми ни были отношения двух компаний): почему логистическая компания (ЛК) имела доступ к данным по грузам всех клиентов перевозчика(П)?

/усмехаясь/
Потому что когда-то однажды Высокое Лицо в компании сказало «им надо дать доступ». Подавляющее большинство интересных историй про утечки начинаются именно так.

Скорее всего расширенный доступ дали при внедрении и отладке системы, потом так и оставили

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

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

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

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

По поводу метода поиска утечки. Нужно было бы сделать 10 запросов с интервалом по времени к 10 разным грузовикам, но с одного аккаунта. Это бы позволило точно вычислить утечку.
Дело в том, что мы не знали, какой из аккаунтов запрашивает данные из БД для «левого» ресурса. Делая запрос на этом ресурсе мы могли только смотреть, что происходит в хранилище данных.
О чем статья? Обычный DBA ну или продвинутый сисадмин выявляет такое в течении 5-10 минут? Для чего данная статья на хабре? Да ещё с таким пафосом… вам на пикабу однако

Если Вы так уверено говорите, подскажите как он бы выявил?

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

Вот и получается, что при разборе полётов оказалось, что когда-то кто-то кому-то дал «лишний» доступ, потому что не было ресурсов (времени, денег, специалистов), чтобы настроить всё нормально.

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

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

/сарказм
/сарказм
/сраказм
А зачем в начале поста картинка из Euro Truck Simulator'a?
Это как в любом сюжете про хакеров на Вести24 показывают серверные стойки.
1) Получается, этот сотрудник поднял кучу демонов на своём компе, принимал деньги на криминальном сайте, и организовал ответ-в-ту-же-секунду, но он такой глупый, что использовал СВОЮ учётную запись?
2) Рассматривали ли вы вариант, что есть другие криминальные сайты, которые всё-еще сливают данные, но не палятся так широко, как предыдущий?
3) Рассматриваете ли вы вариант, что взломщик — другой человек, и он после блокировки теперь заляжет на дно, а проснётся позднее? Или это больше дело безопасников, а вам нужно только найти крота?

1) Сотрудник только сотрудничал с организаторами ресурса, скорее всего ему передали готовую утилиту, но это мы не проверяли.
2) Другие сайты именно по этому перевозчику найдены не были, но подобных им, продающих ворованные данные, много. У каждого свои каналы. Некоторые не работают в режиме онлайн, скорее всего им данные поставляют под заказ или с ежедневными бэкапами.
3) Мы понимали, что организаторы прибыльного бизнеса будут искать возможность организовать новый канал, поэтому вместе с админами перевозчика "перетряхнули" все настройки доступа и внедрили мониторинг запросов к БД

Понятно, спасибо)
Зарегистрируйтесь на Хабре , чтобы оставить комментарий