Bat's post delivery by sashulka
Электронная почта используется для решения широкого круга задач: мы получаем информацию о банковских счетах, обсуждаем рабочие проекты, планируем путешествия и еще много чего, что требует от нас обмена ценной информацией. Таким образом, почта содержит в себе много важных и конфиденциальных данных. И конечно, наша задача — надежно их защищать.
Мы постоянно работаем над системами, которые обеспечивают аккаунтам несколько ступеней защиты и значительно усложняют жизнь злоумышленникам. Но есть одно слабое звено. Это пароль, который можно угадать или, например, украсть на стороннем сервисе. Подробнее о способах кражи паролей и о безопасности почты можно прочесть в посте на эту тему.
Наша задача — защитить ящик пользователя, даже если злоумышленник узнал пароль и может войти в аккаунт. Для этого мы разработали систему машинного обучения, которая анализирует поведение в аккаунте и пытается определить, кто в нем находится — владелец или взломщик.
Как распознать взломщика?
Работая над задачами обеспечения безопасности, мы рассмотрели такой сценарий: у злоумышленника есть логин, пароль и возможность успешно пройти аутентификацию. При этом владелец ящика по-прежнему может работать в аккаунте и ничего не подозревать о взломе. Перед нами встал вопрос: можно ли как-то понять, что в аккаунте действует злоумышленник? Мы проанализировали множество примеров краж аккаунтов и убедились, что взлому почти всегда сопутствует изменение поведения. Мы решили использовать поведенческие характеристики в качестве признаков и на их основе делать вывод — взломан аккаунт или нет. И конечно, при решении этой задачи мы не могли обойтись без машинного обучения.
Как описать поведение?
Разные пользователи по-разному используют электронную почту. Кто-то начинает рабочий день в десять утра, входит в почту, удаляет рассылки, чистит папку «Спам», потом переходит в Облако Mail.Ru, а после идет читать Новости Mail.Ru. А кто-то работает поздно вечером, никогда не удаляет писем и ведет переписку только с мобильных устройств.
Для описания подобной активности используют ряд разнообразных признаков. Например, пользовательские действия (чтение и отправка писем, удаление, перемещение между папками), устройства, с которых пользователь работает в аккаунте, его географическое местоположение. Также можно учесть переходы в смежные сервисы и время суток, на которые приходится пик активности пользователя. Помимо этого, существуют более сложные признаки, например, такие, как печатный почерк. Этот подход учитывает скорость набора символов и паузы между нажатиями клавиш. С помощью печатного почерка можно отличить двух людей так же, как если бы мы попросили их написать несколько предложений на бумаге.
На этапе проектирования системы мы решили начать с анализа пользовательских действий, устройств и географического местоположения. На наш взгляд, это минимальный необходимый набор признаков, без которого трудно обойтись, и который легко дополнить, если в дальнейшем к системе будут предъявлены новые требования.
Как построить профиль?
В основу нашей системы заложен следующий принцип: у каждого пользователя есть свои привычки, и любую активность в почте нужно сравнивать с этими привычками. Если поведение существенно отклоняется от сформировавшихся паттернов, это повод заподозрить взлом аккаунта.
Набор устойчивых привычек назовем профилем. Чтобы проанализировать поведение в аккаунте, для каждого пользователя мы решили строить:
- профиль действий в аккаунте;
- профиль географического положения;
- профиль используемых устройств.
Рассмотрим на примере построение самого сложного профиля — профиля действий. Например, у нас есть часть лога, из которого мы хотим извлечь характерные привычки пользователя.
В данном примере check — это проверка почты, read — чтение сообщения, send — отправка сообщения.
На первом шаге алгоритма сгенерируем все возможные комбинации действий, которые пользователь может совершать в почте. Назовем их возможными паттернами. Далее нужно проверить частотные характеристики возможных паттернов. Наиболее частотные паттерны отражают привычки пользователя. Те, которые встречаются редко, привычками не являются, поэтому мы исключаем их из дальнейшего рассмотрения.
Все возможные паттерны, которые соответствуют примеру рассматриваемого лога, выглядят так.
В общем случае для построения профиля может использоваться лог за длительный период времени: за несколько недель, например. За это время пользователь много раз входил в почту и решал множество задач. Но при этом очевидно, что анализировать нужно краткосрочные сеансы активности, во время которых пользователь решал конкретную задачу: писал письмо, чистил какую-либо папку, создавал фильтры и так далее.
Выделение таких сеансов представляет собой сложную самостоятельную задачу, которую нам хотелось упростить. Мы решили попробовать нарезать сеансы из лога случайным образом: брать любое действие в логе с равной вероятностью за начало сеанса, а его длительность получать при помощи некоторой случайной величины. При этом длина сеанса должна удовлетворять двум требованиям:
- она должна быть положительной;
- длительные сеансы должны иметь небольшую вероятность, поскольку пользователи решают свои задачи в почте за небольшие промежутки времени.
Мы решили получать искомые длины сеансов при помощи гамма-распределения, поскольку именно его реализации удовлетворяют указанным требованиям.
Полученные таким образом цепочки действий далее будем называть транзакциями. Если взять достаточно большое количество транзакций, то многие из них будут пересекаться с реальными сеансами активности пользователя, а значит, отражать его поведение в почтовом ящике. Пример сэмплирования лога приведен ниже.
Таким образом, мы уходим от исходного лога к набору транзакций, и именно этот набор используем в качестве данных для построения профиля.
Теперь настал тот момент, когда нужно проверить, какие из возможных паттернов действительно являются привычками пользователя, а какие нет. Здесь нам и пригодится набор транзакций.
Для каждого возможного паттерна мы вычисляем уровень опоры. Это величина, которая показывает, насколько часто паттерн встречается в действиях пользователя. Чтобы вычислить уровень опоры конкретного паттерна, нужно посчитать количество транзакций, которые содержат этот паттерн, и поделить его на общее количество транзакций. Попробуем вычислить уровень опоры паттерна «check + read».
Паттерн «check + read» встретился в четырех транзакциях, всего транзакций десять, а значит, уровень опоры этого паттерна 0,4.
Подобные вычисления проводим для всех паттернов.
Таким образом мы получаем частотные характеристики каждого паттерна. Чем выше уровень опоры паттерна, тем сильнее он отражает привычку пользователя. В профиль включаются те паттерны, уровень опоры которых превышает некоторый порог. Если взять порог, равный 0,5, то в профиль войдут паттерны «check», «send» и «check + send». Они отмечены красным цветом на рисунке.
Так мы получили набор паттернов, которые характеризуют привычные для пользователя действия в аккаунте. Описанный подход называется алгоритмом поиска ассоциативных правил и используется для извлечения закономерностей из данных.
По такому же алгоритму мы строим профиль характерной для пользователя географической зоны. А вот построение профиля по устройствам дало неожиданный результат. Но об этом чуть позже.
Теперь, когда мы знаем, как строить профиль, требуется понять, как сравнивать активность в почте с этим профилем.
Как сравнить действия с профилем?
Мы получили наборы привычек пользователя. Теперь нужно понять, насколько его активность в почте совпадает с этими привычками. Рассмотрим транзакцию «search + search + send» и попробуем численно оценить, насколько она соответствует профилю привычек (в этой транзакции «search» — это поиск по содержимому почты).
Чтобы вычислить меру похожести транзакции на профиль, нужно проверить, какие паттерны из профиля в ней содержатся, сложить уровни опор этих паттернов и поделить на общее количество всех паттернов в профиле. В рассматриваемом примере в транзакции содержится только паттерн «send», который имеет уровень опоры 0,7, а всего в профиле три паттерна. Тогда меру схожести, которую называют outlier factor (OF), можно вычислить вот так:
где t — тестируемая транзакция. Но у этой меры есть один недостаток — она не учитывает зашумленность транзакции.
Рассмотрим транзакцию «delete filter + move message + create folder + search + send» (удаление фильтра, перемещение сообщения между папками, создание папки, поиск в почте и отправка письма) и обозначим ее за r. Очевидно, что транзакции t и r имеют равные значения меры outlier factor:
что не совсем верно, поскольку транзакция r сильно зашумлена действиями, которых нет в профиле. Для устранения этого недостатка вводят еще одну меру — long outlier factor, которая отражает, насколько транзакция схожа с паттернами профиля по длине. Чтобы вычислить long outlier factor, требуется найти паттерн максимальной длины, который содержится в транзакции, и поделить его длину на длину транзакции. Под длиной транзакции стоит понимать количество уникальных действий, которые в ней содержатся. Тогда получаем:
Метрика LOF наглядно демонстрирует, что транзакция r гораздо менее похожа на профиль, чем транзакция t.
Далее на основе метрик outlier factor и long outlier factor вычислим индекс подозрительности транзакции:
который будет учитывать схожесть транзакции с профилем как по содержанию, так и по длине паттернов. Чем ближе индекс подозрительности к значению 1, тем сильнее транзакция нехарактерна для пользователя. А чем ближе его значение к 0, тем больше транзакция совпадает с профилем. Вычислим индексы подозрительности для рассмотренных примеров:
Теперь нам нужен порог, с которым мы могли бы сравнить полученные значения и принять решение, является ли транзакция аномальной или нет. На этом этапе нужно вернуться к набору транзакций, полученных при сэмплировании лога, и вычислить индекс подозрительности для них.
Для пользователя, которого мы рассматриваем в качестве примера, уровень подозрительности 0,6 является нормой. Мы можем использовать это значение как граничное и сравнивать с ним индексы подозрительности новых транзакций.
Для транзакций t и r мы получили значения индекса подозрительности 0,6335 и 0,7835 соответственно. Оба значения превышают порог 0,6, а значит, обе транзакции мы принимаем за подозрительные.
Таким образом, мы научились определять, насколько действия пользователя соответствуют его привычкам.
Если возникает необходимость анализа длительной цепочки действий (например, поведение пользователя за сутки), то мы нарезаем цепочку действий на транзакции по описанному выше алгоритму, а далее проверяем каждую транзакцию на подозрительность. Если количество подозрительных транзакций превысит определенный порог, то поведение за рассматриваемый период стоит считать аномальным.
Описанные алгоритмы мы используем для построения профиля действий пользователя и профиля его географического местоположения.
Как быть с устройствами?
При помощи алгоритмов обработки паттернов мы научились выделять привычные для пользователя действия в аккаунте и характерный для него географический регион. Таким же образом мы попробовали строить профиль использования устройств. И выяснили, что изменение паттерна по этому признаку не является подозрительным. У каждого человека есть свой набор девайсов и определенные паттерны их использования. Например, в течение дня мы работаем в почте с ноутбука, вечером — с планшета, а на выходных — только со смартфона. Устройства меняются в зависимости от времени суток и от дня недели, и обусловлено это предпочтениями пользователя.
Но все же этот признак оказался очень ценным. Проанализировав сценарии взломов и сравнив их с поведением обычных пользователей, мы заметили, что о взломе может говорить количество устройств. И именно этот признак мы решили использовать в дальнейшем. Мы сравниваем количество устройств пользователя с некоторым критическим порогом и на основе этого принимаем решение, является ли это количество характерным для взломщика или для обычного пользователя.
Как детектировать взлом?
В итоге для каждого пользователя мы получаем три признака: индекс подозрительности по действиям, индекс подозрительности по смене географического положения и количество устройств. В самом начале мы планировали строить классификатор над этими признаками. Тут стоит заметить, что классификатор требует дополнительных издержек: для него нужно собрать обучающую выборку, поддерживать ее в актуальном состоянии и бороться с переобучением.
Анализируя тестовые выборки, мы заметили следующую закономерность: с высокой точностью взлому соответствовало превышение критических порогов у двух признаков из трех.
Таким образом, у нас появилась возможность использовать логические правила и отказаться от классификатора, что существенно упростило разработку, отладку и сопровождение всей системы.
Как оценивать ложные срабатывания?
В Антиспаме есть одно очень важное требование — мы не должны вредить нашим пользователям. Ограничить пользователю доступ в аккаунт, который на самом деле не взломан, — это то, чего нужно избегать всеми силами. Поэтому необходимо было придумать, как отслеживать такие ложные срабатывания системы и как вести по ним статистику.
Для этого мы разработали следующий подход. Например, в аккаунте произошла существенная смена поведения. Мы заподозрили, что аккаунт взломан, и попросили владельца подтвердить личность и сменить пароль. После смены пароля мы полагаем, что в аккаунте находится только его владелец и никто другой. Если же после восстановления доступа к аккаунту в нем продолжается то же самое поведение, которое ранее вызвало у нас подозрения, то мы полагаем, что данное поведение теперь характерно для пользователя и система сработала ложно. Мы включаем подобные случаи в статистику для дальнейшего исследования, а профили пользователя пополняем новыми поведенческими паттернами.
Как работает этот подход, можно рассмотреть на примере. Характерное поведение пользователя в почте: регулярная отправка писем с мобильного устройства из России. В определенный момент поведение полностью меняется: в ящике начинаются массовые поиски из Прибалтики с персонального компьютера. Система анализа поведения просит пользователя сменить пароль. После смены пароля в аккаунте продолжаются операции поиска и отправки писем из Прибалтики. В таком случае мы пополняем профиль пользователя новыми поведенческими паттернами, а первое срабатывание системы рассматриваем как ложное.
Результаты
Мы разработали систему машинного обучения, которая пытается детектировать взлом, анализируя поведение пользователя в аккаунте. Конечно, пока рано говорить о законченном решении: впереди еще много работы, и нам предстоит разгадать немало головоломок. Но тем не менее, те результаты, которые мы имеем уже сейчас, говорят о перспективности данного подхода, поэтому мы планируем развивать его, чтобы сделать наши сервисы еще более надежными.
P. S.: Система получила название Marshal (сокращенно от Mail.Ru Suspicious Hacking Alert). Мы подробно рассказали о ней на Data Fest, который прошел в московском офисе Mail.Ru Group 5 и 6 марта 2016 года. Видео выступления и презентацию можно найти здесь.
Комментарии (55)
ashchus
25.04.2016 14:14Спасибо за ваш комментарий. Мы учитываем такой сценарий использования почты и отдельно его обрабатываем, чтобы избегать ложных срабатываний. Возможно, аккаунт, о котором вы говорите, действительно был взломан и мы смогли это детектировать. Если у вас есть вопросы по этому кейсу, вы можете написать мне в личку или на a.shchus@corp.mail.ru.
DrZlodberg
25.04.2016 14:39+3Может я очень нестандартный, но такие системы реально бесят.
Гуглпочта, например, каждый заход на почту меня банит, т.к. захожу редко (где-то раз в месяц-два) и с разных устройств (всего, внезапно, двух, но через раз). Особенно радует когда пишет — вы зашли с нового устройства, при этом у меня открыт djabber с их аккаунтом (который вообще постоянно работает). Не, я понимаю, что это разные системы, но всё-таки…
А так: уехал в отпуск, решил проверить почту — доказывай что ты это ты. Заболел и работаешь в нестандартном режиме — доказывай. Просто путешествуешь не сидя долго на одном месте (не дай бог ещё используешь интернет кафе ради экономии на роуминге) — вообще террорист.
Всё таки стоит наверно разрешать пользователям отключать такие проверки с предупреждением.ashchus
25.04.2016 14:51Вы привели очень верные примеры: отпуск, путешествия и прочее. В них действительно, в той или иной мере, есть смена поведения. Но это очень распространенные сценарии использования почты, о которых мы знаем и которые мы учли при разработке системы. Честных отпускников и заболевших мы корректно обрабатываем и не блокируем их.
DrZlodberg
25.04.2016 15:32А как? Последний пример про Прибалтику как раз говорит об обратном, если я правильно понял.
ashchus
25.04.2016 18:02К сожалению, мы не раскрываем подобные технические детали. А пример служит исключительно для иллюстрации общего подхода к оценке fpr в этой задаче. Реальные кейсы мы не приводим в статье из соображений безопасности.
sasha1024
25.04.2016 15:19Ога, я так в какую-то из подобных систем (не помню уже в какую) просто не смог зайти.
Поехал в командировку, телефон дома оставил (на месте телефоном и ноутбуком обеспечивали); опа, «вы зашли с нового устройства, на всякий случай мы вас не пустим, но вы пожете подтвердить личность по смс»; спасибо, блин.ashchus
25.04.2016 15:28Не могу ничего сказать о системах безопасности сторонних сервисов — у каждой компании своя политика. Если говорить об описанной в посте системе, то, как я упомянул выше, она обрабатывает подобные случаи. А вообще, мы даем возможность пользователям восстановить доступ к аккаунту несколькими способами: через телефон, дополнительный email и службу поддержки. Так что даже если нет доступа к телефону, доступ к аккаунту все равно можно восстановить.
DrZlodberg
25.04.2016 15:35Так как раз гугл. Через раз то пишет на привязанную почту предупреждение, то просто банит на некоторое время. Один раз даже умудрился прислать сообщение о подозрительной активности (после блокировки, ага) на… барабанная дробь, самого себя. С удивлением обнаружил когда смог зайти. Правда это был единичный случай.
sasha1024
25.04.2016 15:39Не, точно не гугл.
Гугл мне постоянно присылает предупреждения (естественно, на ту же самую почту, на которую я и зашёл — смешно), но пока не банил.
Возможно, какая-то социальная сеть или сайт знакомств, но точно не помню, не хочу врать.ashchus
25.04.2016 15:49Любая подобная система безопасности — это компромисс между удобством пользователей и защищенностью сервиса. Поэтому кто-то завинчивает гайки сильнее, а кто-то слабее.
XA0C
25.04.2016 15:37-5а как же: «Защищён АнтиВирусом и АнтиСпамом Касперского»? Неужели такая мощная защита не помогает?
ashchus
25.04.2016 15:59+3Дело в том, что фильтрация спама и детектирование взломов — это разные задачи. Системы антиспама справляются с нежелательным трафиком, а со взломами работают другие системы. Одна из них — Marshal.
XA0C
25.04.2016 16:01-5Так Касперский защищает от всего
Pakos
26.04.2016 11:18Он не защищает от отсутствия мозга. У пользователя, который ставит пароль 123, не ставит антивирус и ходит по всем сайтам подряд.
XA0C
26.04.2016 11:26на самом деле, фраза «Защищён АнтиВирусом и АнтиСпамом Касперского» в веб интерфейсте майл-ру с кучей спама от самого майл-ру и через 2-3 недели после регистрации от всех, кого угодно, на мой взгляд, самая худшая реклама каспера.
Pakos
26.04.2016 11:31Когда-то была, кнопка «Это спам» творит чудеса.
XA0C
26.04.2016 11:33gmail творит чудеса
Pakos
26.04.2016 11:40+1Gmail у меня тоже есть, и Яндекс, и Рамблер. Причём мейловский аккуант называется «ящик для мусора»(адрес *spam@mail.ru) и я какое-то время его оставлял где придётся (был ещё именной, который потерял по причине непосещения и восстановить не вышло и решил этот не удалять), но сейчас у него всё тихо (иногда спам падает в папку спам), правда и активности последнее время особо нет, хоть и есть «Мой мир». «Ящик для мусора, мы нашли вам новых друзей» (Ц) мейл.ру
ashchus
26.04.2016 13:32Все верно, кнопка «это спам» творит чудеса и успешно решает проблему. Антиспам — это реактивная система, которая использует обратную связь от пользователей. Чем больше обратной связи, тем лучше.
Pakos
26.04.2016 13:46До этого пользовался байесовскими фильтрами в Бат'е(BayesIT с первых версий плагина), потом на своём почтовом серваке — видел как они обучаются и улучшается результат, потому и нажимал кнопку «Спам» сразу после их появления на любом ящике в почтовых сервисах, которыми пользовался. И родственников, друзей, знакомых, сотрудников обучал нажимать. Когда тебе на ящик info,support, ещё что-то@*.ru приходит полторы сотни писем в день, из них 2-3 не мусорных — начинаешь задумываться об автоматизации и курить маны на тему.
pyrk2142
25.04.2016 16:03+1Было бы очень круто, если бы вы научили техподдержку нормально реагировать на вопросы, связанные с безопасностью почтового ящика.
А то у меня был не очень приятный случай, когда мне стали сыпаться СМС о попытках авторизации, я написал в техподдержку и получил гору отписок от сотрудника. Только благодаря Хабру удалось решить проблему.
381222
25.04.2016 16:42+2И какая в итоге точность получилась? Что то подобное еще в эпоху байесовских спам фильтров использовали. Кстати на gmail мне спам не приходит, в отличие от mail.ru.
ashchus
25.04.2016 17:00+3На тестовых выборках получили значение f-меры около 0.98. А по поводу спама: если это рассылки, то просто отпишитесь от них. Если же это нежелательные письма (и при этом не являются рассылками), то жмите «это спам». Таким образом вы дадите нам обратную связь и количество спама значительно снизится.
381222
25.04.2016 20:49+2Это нежелательные письма вроде только что пришедшего письма с заголовком «Buy Cheap Meds. Save up to 88%. New 21 products. Deliver to your home.»
Похоже, что анализ взломанности аккаунта у вас работает гораздо лучше, чем спам фильтры.Pakos
26.04.2016 11:31Это Вы ремблеровские не видели, он 99% мусора пропускает (не смотря на «Это спам»), зато всякие инет-магазины с рекламой стал в спам отправлять (только удалял, пусть и не всегда читая само письмо).
А к мейловским спам-фильтрам претензий нет (они индивидуальные? во времена активной переписки и «засвета» ящика несколько лет назад много нажимал «Это спам» и «грузчики из Киева» (утащили контакты киевского знакомого и пошёл украинский спам) больше не беспокоят. Изредка в спам-папке появляется очередная нигерийская принцесса, даже забавно почитать.
melt
26.04.2016 08:54+1Поддержу насчет спама. Тоже мучался на почте от мэйла, удалил аккаунт на моем мире — стало лучше, несколько месяцев вообще тишина была. Но вот опять началось, хотя ящик не свечу нигде, просто залогинен на сервисах мэйла. Грешу вот на это, интересно, есть ли связь? А на гугл мне тоже приходит спам, хотя я использовал его на некоторых сервисах, наверно попал в какую-нибудь нехорошую базу из-за этого. Было бы круто, если кто-нибудь разработал очень стойкую защиту от спама. Хотя мэйл молодцы, их анонимные ящики — очень крутая идея!
ashchus
26.04.2016 13:44Проверьте, пожалуйста, что приходящие письма не являются рассылками. Возможно, вы когда-то оставляли ящик Mail.Ru при регистрации, а теперь сторонние сервисы присылают вам обновления, акции, рекламу и прочее. От таких рассылок можно просто отписаться (внизу есть кнопка «отписаться»). Если же это действительно спам, то кликайте «это спам». Антиспам использует обратную связь от пользователей: чем больше обратной связи вы дадите, тем чище будет ваш ящик.
Nik0l
25.04.2016 17:12+1Интересная статья, спасибо. Несколько вопросов:
Первый вопрос — как оценивается полезность такой системы? Ведь здесь две крайности — либо при каждой подозрительной, «аномальной» активности юзера блокировать его аккаунт и просить подтверждений всяких кодов через смс и т. д. Вторая крайность — отсутствие антиспама как такового. В первом сценарии юзеры озвереют, во втором — кул хацкеры похацкают юзеров и отожмут их аккаунты. Оба сценария нежелательны, но как на практике можно найти эту тонкую грань?
Второй вопрос — планируется ли вытаскивать новые правила постоянно в реальном времени и перетренировать модельку или делать это, скажем, каждый час, день? Ведь взлом надо детектить как можно быстрее, а не через, скажем, неделю или месяц. Но я понимаю что технически может быть затратно обрабатывать информацию в реальном времени.
Третий вопрос — отказ от классификатора в пользу логических правил в первую очередь связан с техническим трудностями? Наверное, 80% юзеров пользуются мылом с определенными паттернами в течение продолжительного времени, но ведь полно разных «юз-кейсов» которые в идеале можно попытаться выучить каким-либо классификатором (можно, конечно, перестараться и перетренить его, конечно). В идеале такой классификатор мог бы дать более точные результаты, не так ли?
Предпоследний вопрос — логические правила строятся на истории одного пользователя или группы пользователей? Как я понял, Маршал же вместо классификатора юзает hardcoded правила, вытащенные из истории одного пользователя и эти правила применяются к этому же пользователю?
Последний вопрос — правила были вытащены «ручками» в результате анализа данных множества пользователей или с помощью какого-либо алгоритма вроде decision trees?
Я понимаю, что, наверное, некоторые технические детали Маршала являются секретом или ноухау, но было бы интересно услышать немного деталей ^.^ashchus
25.04.2016 17:34+2Коля, здравствуй.
Отвечаю по пунктам.
1. Чтобы пользователи не озверели, мы оцениваем уровень ложных срабатываний по описанному алгоритму. Если уровень ложных срабатываний превысит некоторый порог, то мы начнем поиск причины, по которой это произошло. Чтобы убедиться в том, что система приносит пользу, мы следим за количеством заблокированных аккаунтов. Если оно упадет ниже критического порога, то мы так же начнем искать причину, по которой это произошло. Два этих параметра дают представление о качестве работы системы.
2. Мы уже это делаем. Профили перестраиваются через определенные промежутки времени.
3. Правила гораздо более дешевы с точки зрения издержек на разработку. На данный момент они дают приемлемое качество при минимальных усилиях. Но в будущем, вполне может быть, будем двигаться в сторону классификатора.
4. Профиль строится для каждого пользователя. В этом смысле модели индивидуальные. Сколько пользователей, столько и моделей.
5. Так получилось, что в какой-то момент эти закономерности стали очевидными.
ilya_pu
25.04.2016 17:21+1Тема «антиспам в mail.ru» раскрыта не полностью (я бы даже сказал — подменена темой «антивзлом», что не есть одно и то же).
Как насчёт писем, которые улетают в спам, причём совершенно независимо от их содержания и отправителя?
В конце прошлого года — начале этого лично столкнулся с ситуацией, когда в ящики на mail.ru не было доставлено несколько моих писем (ладно бы поздравительные открытки, так ведь нет — достаточно важные документы). А недавно обнаружили, что и с корпоративного аккаунта почта на mail.ru категорически не хочет приходить — проверили папку «спам», оказалось, mail.ru всё туда сгрузил… техподдержка посоветовала мне попросить (!) получателя проверить папку «спам». нда… знаете, это не всегда возможно и корректно (как это — я присылаю партнёру деловое письмо и прошу его найти в спаме… вы шутите?!)ashchus
25.04.2016 18:07+1Спасибо за обратную связь. Пожалуйста, пришлите образцы писем на мою рабочую почту (a.shchus@corp.mail.ru). Мы разберемся почему письма попали в папку «спам» и примем меры, чтобы в будущем такого не произошло.
saboteur_kiev
25.04.2016 21:19+4Я считаю себя грамотным пользователем. Я не свечу свои пароли, захожу с известных мне сетей, пользуюсь генераторами. Мне каждая лишняя проверка — это куча напрасно потраченного времени, и я знаю, что я могу вести себя нестандартно, поскольку могу пользоваться своей почтой и для мониторинга и для проверки нового девайса, и посмотреть как работает вот такая прога.
Могу я надеяться, что в профайле пользователя будет опция «отключить мониторинг подозрительного поведения», которую один раз отключил и забыл?
Более чем достаточно сделать дополнительный резервный емайл и телефон (или на выбор), которые регистрируются один раз.
Чтобы изменить альтернативный емайл — подтверждение через альтернативный емайл.
Чтобы изменить телефон — подтверждение высылается через смс.
Все.ashchus
26.04.2016 15:01+1Система учитывает подобное поведение пользователей (активных, продвинутых и пр.) А при использовании дополнительных средств защиты, таких как двухфакторная аутентификация, ошибочная блокировка аккаунта практически полностью исключена.
MichaelBorisov
25.04.2016 23:15Ну вот, теперь хакеры узнают подробности работы вашей системы и скорректируют методы своей работы.
Здесь ситуация аналогичная той, как когда-то возлагались большие надежды на байесовские спам-фильтры. Действительно, первое время байесовские фильтры надежно обнаруживали спам. Но потом они попали в руки спаммеров, были ими изучены, и к ним были разработаны методы противодействия. Можно так сказать, что статистика помогает против случайности, но не против злонамеренности.
Особенно ужаснуло вот это:
Если же после восстановления доступа к аккаунту в нем продолжается то же самое поведение, которое ранее вызвало у нас подозрения, то мы полагаем, что данное поведение теперь характерно для пользователя и система сработала ложно
А вдруг взломщик каким-то образом сохранил доступ к аккаунту жертвы и продолжает заниматься там черными делами, а вы оставляете его в покое?
Смена пароля — это такое дело, не помогает, если у жертвы установлен клавиатурный шпион, например. И во многих других случаях.lostpassword
26.04.2016 07:59+2Мне кажется, изложенное в статье техническое решение — не панацея от всего, а лишь один из рубежей обороны, задача которого — бороться с нелегитимными подключениями с подозрительных ПК. Таким образом, то, что оно не спасёт от клавиатурного шпиона — это нормально. Зато оно уменьшает другие риски.
ashchus
26.04.2016 14:26+1Все публичные материалы по этой системе подготовлены так, чтобы не дать подсказок как её обойти. Мы описываем общий подход, но дьявол-то в мелочах. А для того, чтобы гарантировать безопасность аккаунта после смены пароля мы рекомендуем включать двухфакторную аутентификацию.
DonAlPAtino
26.04.2016 10:08Вспоминая заблокированный во время поездки во Вьетнам почтовый ящик жены, появилось предложение добавить кнопку «я еду в отпуск». Или настройку «любимые места для отпуска». Чтобы система так болезненно не реагировала…
tavel
26.04.2016 13:40У меня был совершенно тот же опыт в путешествиях. Однако эту проблему уже давно решили в некоторых банках. Например в своем интернет-банкинге я могу включить/отключить списание со своей карты для определенных стран (одной или нескольких). Обычно у меня включена одна страна, но, когда я еду путешествовать, я добавляю в список страны назначения. После возвращения из поездки — удаляю эти страны из списка. И никаких запоздалых списаний от отелей или проката машин :) Было бы отлично иметь такой фильтр и в почте. Фильтр по IP для меня всегда был бесполезен, учитывая количество NAT-сетей в моей среде, а вот фильтр по гео бы пригодился.
ashchus
26.04.2016 14:42Я думаю, что ящик заблокировался по каким-то другим причинам. Вы можете прислать мне этот адрес на a.shchus@corp.mail.ru, я проверю, что с ним было.
DonAlPAtino
27.04.2016 14:37Естественно эта была совокупность из отъезда во Вьетнам, мобильного клиента mail.ru и привычки жены не вчитываться в сообщения софта, а тыкать пальцами в экран «вдруг проскочит». Почему именно там мобильный клиент решил «забыть» и немедленно переспросить пароль я не знаю. Подозреваю что по команде вашей системы. Кстати у меня он стабильно «забывает» и переспрашивает пароль в метро, когда я подключен к Metro WiFi. «Случайность? Не думаю» :-).
ashchus
27.04.2016 16:26Marshal не переспрашивает пароль. Он закрывает вход в аккаунт, а далее просит восстановить к нему доступ, подтвердив свою личность (через телефон, дополнительный адрес или службу поддержки). Тут что-то другое. Более точно смогу вам ответить, если вы отправите на мою корпоративную почту адреса ваших ящиков и приблизительное время поездки во Вьетнам.
Lomil
26.04.2016 11:20При использовании дополнений типа frigate, которые могут автоматом менять прокси по истечению временного интервала, предупреждений о возможном взломе не приходило, просто выбрасывало с почты и просило ввести еще раз пароль. Интересно, это система научилась понимать, что если юзер каждые n минут заходит с другого географического региона, то он сидит за проксей/VPN/еще чем нибудь и его лучше не трогать? Или у вас просто прописан где-нибудь список используемых подобными дополнениями ip-шников?
ashchus
26.04.2016 14:47К сожалению, не могу раскрыть вам всех деталей. Но, в общем, мы сумели заточить эту систему под пользователей, которые работают под прокси/VPN и пр.
Lomil
26.04.2016 18:24+1И спасибо вам за это. Microsoft мне пару раз в день слал письма типа «А докажи что ты это ты». Благо, недавно и они одумались и добавили возможность отписаться от подобной рассылки.
varagian
27.04.2016 12:49Возможно, что это артефакт упрощения в примерах, но транзакции — это последовательности действий (они упорядочены аля «search-search-check»), а паттерны у вас множества (не упорядочены, не встречается чего-то в духе «check-read-check-send»). Это выглядит довольно странно, есть какая-то причина почему так сделано? Или на самом деле всё последовательности и это упрощение примеров?
ashchus
27.04.2016 14:24+1Алгоритм работает с транзакциями как с множествами. Именно в этой задаче порядок действий оказался не критичным. А вообще, существуют модификации этого алгоритма, которые учитывают порядок элементов в транзакциях и строят упорядоченные паттерны
gionet
Немного переборщили. ребят.
У нас на работе в одном из отделов постаринке пользуются одним е-майлом на отдел плюс заходы из дома.
На днях как раз при логине на почту бухи видят сообщение, что дескать мы подозреваем, что вас взломали, пройдите теперь пароль новый придумаете и пр.
Вот эту параною можно будет отключить?