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)


  1. gionet
    25.04.2016 13:58
    +9

    Немного переборщили. ребят.
    У нас на работе в одном из отделов постаринке пользуются одним е-майлом на отдел плюс заходы из дома.

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

    Вот эту параною можно будет отключить?


  1. ashchus
    25.04.2016 14:14

    Спасибо за ваш комментарий. Мы учитываем такой сценарий использования почты и отдельно его обрабатываем, чтобы избегать ложных срабатываний. Возможно, аккаунт, о котором вы говорите, действительно был взломан и мы смогли это детектировать. Если у вас есть вопросы по этому кейсу, вы можете написать мне в личку или на a.shchus@corp.mail.ru.


  1. DrZlodberg
    25.04.2016 14:39
    +3

    Может я очень нестандартный, но такие системы реально бесят.
    Гуглпочта, например, каждый заход на почту меня банит, т.к. захожу редко (где-то раз в месяц-два) и с разных устройств (всего, внезапно, двух, но через раз). Особенно радует когда пишет — вы зашли с нового устройства, при этом у меня открыт djabber с их аккаунтом (который вообще постоянно работает). Не, я понимаю, что это разные системы, но всё-таки…
    А так: уехал в отпуск, решил проверить почту — доказывай что ты это ты. Заболел и работаешь в нестандартном режиме — доказывай. Просто путешествуешь не сидя долго на одном месте (не дай бог ещё используешь интернет кафе ради экономии на роуминге) — вообще террорист.
    Всё таки стоит наверно разрешать пользователям отключать такие проверки с предупреждением.


    1. ashchus
      25.04.2016 14:51

      Вы привели очень верные примеры: отпуск, путешествия и прочее. В них действительно, в той или иной мере, есть смена поведения. Но это очень распространенные сценарии использования почты, о которых мы знаем и которые мы учли при разработке системы. Честных отпускников и заболевших мы корректно обрабатываем и не блокируем их.


      1. DrZlodberg
        25.04.2016 15:32

        А как? Последний пример про Прибалтику как раз говорит об обратном, если я правильно понял.


        1. ashchus
          25.04.2016 18:02

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


    1. sasha1024
      25.04.2016 15:19

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


      1. ashchus
        25.04.2016 15:28

        Не могу ничего сказать о системах безопасности сторонних сервисов — у каждой компании своя политика. Если говорить об описанной в посте системе, то, как я упомянул выше, она обрабатывает подобные случаи. А вообще, мы даем возможность пользователям восстановить доступ к аккаунту несколькими способами: через телефон, дополнительный email и службу поддержки. Так что даже если нет доступа к телефону, доступ к аккаунту все равно можно восстановить.


      1. DrZlodberg
        25.04.2016 15:35

        Так как раз гугл. Через раз то пишет на привязанную почту предупреждение, то просто банит на некоторое время. Один раз даже умудрился прислать сообщение о подозрительной активности (после блокировки, ага) на… барабанная дробь, самого себя. С удивлением обнаружил когда смог зайти. Правда это был единичный случай.


        1. sasha1024
          25.04.2016 15:39

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


          1. ashchus
            25.04.2016 15:49

            Любая подобная система безопасности — это компромисс между удобством пользователей и защищенностью сервиса. Поэтому кто-то завинчивает гайки сильнее, а кто-то слабее.


  1. datacompboy
    25.04.2016 14:58
    +1

    А когда вы добавите IPv6 для MTA?


    1. ashchus
      25.04.2016 16:15

      Работаем над этим, но пока в приоритете есть другие задачи.


  1. XA0C
    25.04.2016 15:37
    -5

    а как же: «Защищён АнтиВирусом и АнтиСпамом Касперского»? Неужели такая мощная защита не помогает?


    1. ashchus
      25.04.2016 15:59
      +3

      Дело в том, что фильтрация спама и детектирование взломов — это разные задачи. Системы антиспама справляются с нежелательным трафиком, а со взломами работают другие системы. Одна из них — Marshal.


      1. XA0C
        25.04.2016 16:01
        -5

        Так Касперский защищает от всего


        1. Pakos
          26.04.2016 11:18

          Он не защищает от отсутствия мозга. У пользователя, который ставит пароль 123, не ставит антивирус и ходит по всем сайтам подряд.


          1. XA0C
            26.04.2016 11:26

            на самом деле, фраза «Защищён АнтиВирусом и АнтиСпамом Касперского» в веб интерфейсте майл-ру с кучей спама от самого майл-ру и через 2-3 недели после регистрации от всех, кого угодно, на мой взгляд, самая худшая реклама каспера.


            1. Pakos
              26.04.2016 11:31

              Когда-то была, кнопка «Это спам» творит чудеса.


              1. XA0C
                26.04.2016 11:33

                gmail творит чудеса


                1. Pakos
                  26.04.2016 11:40
                  +1

                  Gmail у меня тоже есть, и Яндекс, и Рамблер. Причём мейловский аккуант называется «ящик для мусора»(адрес *spam@mail.ru) и я какое-то время его оставлял где придётся (был ещё именной, который потерял по причине непосещения и восстановить не вышло и решил этот не удалять), но сейчас у него всё тихо (иногда спам падает в папку спам), правда и активности последнее время особо нет, хоть и есть «Мой мир». «Ящик для мусора, мы нашли вам новых друзей» (Ц) мейл.ру


                  1. XA0C
                    26.04.2016 11:42
                    +1

                    как это знакомо :)))) ящик майл-ру == мусор :)

                    «а что такое рамблер?» (с)


              1. ashchus
                26.04.2016 13:32

                Все верно, кнопка «это спам» творит чудеса и успешно решает проблему. Антиспам — это реактивная система, которая использует обратную связь от пользователей. Чем больше обратной связи, тем лучше.


                1. Pakos
                  26.04.2016 13:46

                  До этого пользовался байесовскими фильтрами в Бат'е(BayesIT с первых версий плагина), потом на своём почтовом серваке — видел как они обучаются и улучшается результат, потому и нажимал кнопку «Спам» сразу после их появления на любом ящике в почтовых сервисах, которыми пользовался. И родственников, друзей, знакомых, сотрудников обучал нажимать. Когда тебе на ящик info,support, ещё что-то@*.ru приходит полторы сотни писем в день, из них 2-3 не мусорных — начинаешь задумываться об автоматизации и курить маны на тему.


  1. pyrk2142
    25.04.2016 16:03
    +1

    Было бы очень круто, если бы вы научили техподдержку нормально реагировать на вопросы, связанные с безопасностью почтового ящика.
    А то у меня был не очень приятный случай, когда мне стали сыпаться СМС о попытках авторизации, я написал в техподдержку и получил гору отписок от сотрудника. Только благодаря Хабру удалось решить проблему.


    1. manwe
      25.04.2016 17:56
      +3

      Спасибо за репорт, мы помним и исправляемся :-)
      О любых проблемах поддержки — пишите мне в личку, я разберусь…

      Евгений Кузнецов, руководитель группы технической поддержки Mail.ru


  1. 381222
    25.04.2016 16:42
    +2

    И какая в итоге точность получилась? Что то подобное еще в эпоху байесовских спам фильтров использовали. Кстати на gmail мне спам не приходит, в отличие от mail.ru.


    1. ashchus
      25.04.2016 17:00
      +3

      На тестовых выборках получили значение f-меры около 0.98. А по поводу спама: если это рассылки, то просто отпишитесь от них. Если же это нежелательные письма (и при этом не являются рассылками), то жмите «это спам». Таким образом вы дадите нам обратную связь и количество спама значительно снизится.


      1. 381222
        25.04.2016 20:49
        +2

        Это нежелательные письма вроде только что пришедшего письма с заголовком «Buy Cheap Meds. Save up to 88%. New 21 products. Deliver to your home.»
        Похоже, что анализ взломанности аккаунта у вас работает гораздо лучше, чем спам фильтры.


        1. Pakos
          26.04.2016 11:31

          Это Вы ремблеровские не видели, он 99% мусора пропускает (не смотря на «Это спам»), зато всякие инет-магазины с рекламой стал в спам отправлять (только удалял, пусть и не всегда читая само письмо).
          А к мейловским спам-фильтрам претензий нет (они индивидуальные? во времена активной переписки и «засвета» ящика несколько лет назад много нажимал «Это спам» и «грузчики из Киева» (утащили контакты киевского знакомого и пошёл украинский спам) больше не беспокоят. Изредка в спам-папке появляется очередная нигерийская принцесса, даже забавно почитать.


        1. ashchus
          26.04.2016 13:36

          Кликайте «это спам». Проблема достаточно быстро решится.


    1. melt
      26.04.2016 08:54
      +1

      Поддержу насчет спама. Тоже мучался на почте от мэйла, удалил аккаунт на моем мире — стало лучше, несколько месяцев вообще тишина была. Но вот опять началось, хотя ящик не свечу нигде, просто залогинен на сервисах мэйла. Грешу вот на это, интересно, есть ли связь? А на гугл мне тоже приходит спам, хотя я использовал его на некоторых сервисах, наверно попал в какую-нибудь нехорошую базу из-за этого. Было бы круто, если кто-нибудь разработал очень стойкую защиту от спама. Хотя мэйл молодцы, их анонимные ящики — очень крутая идея!


      1. ashchus
        26.04.2016 13:44

        Проверьте, пожалуйста, что приходящие письма не являются рассылками. Возможно, вы когда-то оставляли ящик Mail.Ru при регистрации, а теперь сторонние сервисы присылают вам обновления, акции, рекламу и прочее. От таких рассылок можно просто отписаться (внизу есть кнопка «отписаться»). Если же это действительно спам, то кликайте «это спам». Антиспам использует обратную связь от пользователей: чем больше обратной связи вы дадите, тем чище будет ваш ящик.


  1. Nik0l
    25.04.2016 17:12
    +1

    Интересная статья, спасибо. Несколько вопросов:

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

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

    Третий вопрос — отказ от классификатора в пользу логических правил в первую очередь связан с техническим трудностями? Наверное, 80% юзеров пользуются мылом с определенными паттернами в течение продолжительного времени, но ведь полно разных «юз-кейсов» которые в идеале можно попытаться выучить каким-либо классификатором (можно, конечно, перестараться и перетренить его, конечно). В идеале такой классификатор мог бы дать более точные результаты, не так ли?

    Предпоследний вопрос — логические правила строятся на истории одного пользователя или группы пользователей? Как я понял, Маршал же вместо классификатора юзает hardcoded правила, вытащенные из истории одного пользователя и эти правила применяются к этому же пользователю?

    Последний вопрос — правила были вытащены «ручками» в результате анализа данных множества пользователей или с помощью какого-либо алгоритма вроде decision trees?

    Я понимаю, что, наверное, некоторые технические детали Маршала являются секретом или ноухау, но было бы интересно услышать немного деталей ^.^


    1. ashchus
      25.04.2016 17:34
      +2

      Коля, здравствуй.

      Отвечаю по пунктам.

      1. Чтобы пользователи не озверели, мы оцениваем уровень ложных срабатываний по описанному алгоритму. Если уровень ложных срабатываний превысит некоторый порог, то мы начнем поиск причины, по которой это произошло. Чтобы убедиться в том, что система приносит пользу, мы следим за количеством заблокированных аккаунтов. Если оно упадет ниже критического порога, то мы так же начнем искать причину, по которой это произошло. Два этих параметра дают представление о качестве работы системы.

      2. Мы уже это делаем. Профили перестраиваются через определенные промежутки времени.

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

      4. Профиль строится для каждого пользователя. В этом смысле модели индивидуальные. Сколько пользователей, столько и моделей.

      5. Так получилось, что в какой-то момент эти закономерности стали очевидными.


  1. ilya_pu
    25.04.2016 17:21
    +1

    Тема «антиспам в mail.ru» раскрыта не полностью (я бы даже сказал — подменена темой «антивзлом», что не есть одно и то же).

    Как насчёт писем, которые улетают в спам, причём совершенно независимо от их содержания и отправителя?

    В конце прошлого года — начале этого лично столкнулся с ситуацией, когда в ящики на mail.ru не было доставлено несколько моих писем (ладно бы поздравительные открытки, так ведь нет — достаточно важные документы). А недавно обнаружили, что и с корпоративного аккаунта почта на mail.ru категорически не хочет приходить — проверили папку «спам», оказалось, mail.ru всё туда сгрузил… техподдержка посоветовала мне попросить (!) получателя проверить папку «спам». нда… знаете, это не всегда возможно и корректно (как это — я присылаю партнёру деловое письмо и прошу его найти в спаме… вы шутите?!)


    1. ashchus
      25.04.2016 18:07
      +1

      Спасибо за обратную связь. Пожалуйста, пришлите образцы писем на мою рабочую почту (a.shchus@corp.mail.ru). Мы разберемся почему письма попали в папку «спам» и примем меры, чтобы в будущем такого не произошло.


  1. Zverik
    25.04.2016 17:39
    +3


    1. ashchus
      25.04.2016 17:51
      +1

      Спасибо.


  1. saboteur_kiev
    25.04.2016 21:19
    +4

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

    Могу я надеяться, что в профайле пользователя будет опция «отключить мониторинг подозрительного поведения», которую один раз отключил и забыл?

    Более чем достаточно сделать дополнительный резервный емайл и телефон (или на выбор), которые регистрируются один раз.
    Чтобы изменить альтернативный емайл — подтверждение через альтернативный емайл.
    Чтобы изменить телефон — подтверждение высылается через смс.

    Все.


    1. ashchus
      26.04.2016 15:01
      +1

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


  1. MichaelBorisov
    25.04.2016 23:15

    Ну вот, теперь хакеры узнают подробности работы вашей системы и скорректируют методы своей работы.

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

    Особенно ужаснуло вот это:

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

    А вдруг взломщик каким-то образом сохранил доступ к аккаунту жертвы и продолжает заниматься там черными делами, а вы оставляете его в покое?

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


    1. lostpassword
      26.04.2016 07:59
      +2

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


    1. ashchus
      26.04.2016 14:26
      +1

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


  1. DonAlPAtino
    26.04.2016 10:08

    Вспоминая заблокированный во время поездки во Вьетнам почтовый ящик жены, появилось предложение добавить кнопку «я еду в отпуск». Или настройку «любимые места для отпуска». Чтобы система так болезненно не реагировала…


    1. tavel
      26.04.2016 13:40

      У меня был совершенно тот же опыт в путешествиях. Однако эту проблему уже давно решили в некоторых банках. Например в своем интернет-банкинге я могу включить/отключить списание со своей карты для определенных стран (одной или нескольких). Обычно у меня включена одна страна, но, когда я еду путешествовать, я добавляю в список страны назначения. После возвращения из поездки — удаляю эти страны из списка. И никаких запоздалых списаний от отелей или проката машин :) Было бы отлично иметь такой фильтр и в почте. Фильтр по IP для меня всегда был бесполезен, учитывая количество NAT-сетей в моей среде, а вот фильтр по гео бы пригодился.


    1. ashchus
      26.04.2016 14:42

      Я думаю, что ящик заблокировался по каким-то другим причинам. Вы можете прислать мне этот адрес на a.shchus@corp.mail.ru, я проверю, что с ним было.


      1. DonAlPAtino
        27.04.2016 14:37

        Естественно эта была совокупность из отъезда во Вьетнам, мобильного клиента mail.ru и привычки жены не вчитываться в сообщения софта, а тыкать пальцами в экран «вдруг проскочит». Почему именно там мобильный клиент решил «забыть» и немедленно переспросить пароль я не знаю. Подозреваю что по команде вашей системы. Кстати у меня он стабильно «забывает» и переспрашивает пароль в метро, когда я подключен к Metro WiFi. «Случайность? Не думаю» :-).


        1. ashchus
          27.04.2016 16:26

          Marshal не переспрашивает пароль. Он закрывает вход в аккаунт, а далее просит восстановить к нему доступ, подтвердив свою личность (через телефон, дополнительный адрес или службу поддержки). Тут что-то другое. Более точно смогу вам ответить, если вы отправите на мою корпоративную почту адреса ваших ящиков и приблизительное время поездки во Вьетнам.


  1. Lomil
    26.04.2016 11:20

    При использовании дополнений типа frigate, которые могут автоматом менять прокси по истечению временного интервала, предупреждений о возможном взломе не приходило, просто выбрасывало с почты и просило ввести еще раз пароль. Интересно, это система научилась понимать, что если юзер каждые n минут заходит с другого географического региона, то он сидит за проксей/VPN/еще чем нибудь и его лучше не трогать? Или у вас просто прописан где-нибудь список используемых подобными дополнениями ip-шников?


    1. 381222
      26.04.2016 12:47

      Устройство то же, сессия та же. Странно, что вообще просит ввести пароль)


    1. ashchus
      26.04.2016 14:47

      К сожалению, не могу раскрыть вам всех деталей. Но, в общем, мы сумели заточить эту систему под пользователей, которые работают под прокси/VPN и пр.


      1. Lomil
        26.04.2016 18:24
        +1

        И спасибо вам за это. Microsoft мне пару раз в день слал письма типа «А докажи что ты это ты». Благо, недавно и они одумались и добавили возможность отписаться от подобной рассылки.


  1. varagian
    27.04.2016 12:49

    Возможно, что это артефакт упрощения в примерах, но транзакции — это последовательности действий (они упорядочены аля «search-search-check»), а паттерны у вас множества (не упорядочены, не встречается чего-то в духе «check-read-check-send»). Это выглядит довольно странно, есть какая-то причина почему так сделано? Или на самом деле всё последовательности и это упрощение примеров?


    1. ashchus
      27.04.2016 14:24
      +1

      Алгоритм работает с транзакциями как с множествами. Именно в этой задаче порядок действий оказался не критичным. А вообще, существуют модификации этого алгоритма, которые учитывают порядок элементов в транзакциях и строят упорядоченные паттерны