Злоумышленники, специализирующиеся на краже паролей, номеров банковских карт и другой личной информации, появились еще в прошлом веке и с тех пор их число только растет. Согласно отчету Лаборатория Касперского , от 9% до 13% их пользователей в России сталкиваются с фишингом.
Ежегодный ущерб от фишинга и других форм кражи личных данных во всем мире оценивается в 5 миллиардов долларов.
В целом это соответствует нашим наблюдениям и объясняет, почему любой более-менее популярный браузер имеет защиту от фишинга на основе черных списков.
В Яндекс Браузере тоже есть.
Казалось бы, зачем изобретать что-то еще?
Безопасный просмотр
Наиболее очевидным решением защиты пользователей является использование готовой базы данных со списком фишинговых сайтов.Мы проверяем посещаемые вами страницы с помощью «черного списка» и предупреждаем вас, если обнаружено совпадение.
На этой идее основана защита с помощью технологии Safe Browsing, которая работает в Яндекс Браузере с момента его создания.
Немного о том, как это работает. Браузер регулярно обновляет список плохих сайтов весом в несколько мегабайт. На самом деле опасных сайтов очень много, а степень сжатия ограничена, поэтому вместо явных адресов мы локально храним только префиксы (т. е.
начальную часть) их хешей.
Мы проверяем сайты, которые посещаем, используя локальную базу данных.
Если совпадение найдено, то отправляем префикс на сервер, в ответ получаем полные хэши, перепроверяем, если здесь есть совпадение, то показываем предупреждение.
Цепочка выглядит длинной, но работает за доли секунды, не производит запросы и, что самое главное, защищает пользователя.
Списки безопасного просмотра пополняются с помощью поисковых и антивирусных технологий Яндекса, подробности о которых не подлежат разглашению по понятным причинам.
Однако сторонние разработчики также могут использовать результаты в своих продуктах (включая браузеры), используя нашу API безопасного просмотра .
Защита с помощью списков плохих сайтов (будь то Safe Browsing от Яндекса, Google или других аналогов) уже давно является единственным методом, используемым в браузерной индустрии.
Проблема в том, что современные фишеры не такие медленные, как раньше.
Создание фейковых сайтов, их публикация, рассылка спама через социальные сети – все это уже давно автоматизировано.
К тому времени, как новая фишинговая страница дойдет до полной базы данных, а затем и до легкой локальной, она вполне может успеть кому-то навредить.
Нам пришлось научиться решать проблему при отсутствии точных знаний.
Защита паролем
Используя фишинг, злоумышленники активно крадут пароли от банков, платежных систем, социальных сетей и даже админки управления сервером.Как их защитить, если браузер еще не знает, хорошо или плохо в нем открыт сайт? Предупреждать каждый раз при вводе пароля и просить убедиться, что это тот же сайт? Это не только навязчиво, но и бесполезно в долгосрочной перспективе.
Если пользователь 100 раз подтвердит, что это настоящий сайт Сбербанка, а не фейковый, то в 101-й раз он просто не будет проверять сайт, который по закону подлости обязательно окажется мошенническим.
Кстати, существует распространенное заблуждение, что двухфакторная аутентификация на банковских сайтах убережет от кражи денег, даже если человек попался на фишинг.
Спасёт, конечно, но не всегда.
В нашей практике мы встречали примеры опасных сайтов, которые после ввода логина и пароля могли инициировать отправку СМС реальным банком.
Пользователь ввел код из СМС на уже открытой фишинговой странице, и злоумышленники использовали его, получив полный доступ к его личному кабинету.
Но мы отвлеклись.
Изначально идея была довольно простой.
Вам необходимо следить за паролями, уже сохраненными в вашем браузере.
Если пользователь вводит пароль на сайте, который явно не соответствует сайту из менеджера паролей в браузере, то его нужно остановить и предупредить.
Проблема в том, что не все используют встроенный менеджер паролей.
Даже рядовые пользователи, никогда не слышавшие о LastPass, KeePass или 1Password, не спешат сохранять свои пароли, зачастую предпочитая вводить их по памяти или из блокнота (бумажного, а не из Windows).
Более того, именно эта категория пользователей наиболее уязвима для фишинга, а значит, такое простое решение не подошло.
Использовать уже сохраненные пароли не было смысла, но вместо того, чтобы отказаться от всей идеи, мы научили Браузер самостоятельно запоминать хэши вводимых паролей.
Почему хеши? Потому что их вполне достаточно для сравнения паролей, а хранить хеши все же безопаснее.
Конечно, мы дали возможность отключить функцию для тех, кто не доверяет хешам.
Так, если пользователь хоть раз авторизовался, например, в реальном Альфа-Банке, то Браузер предупреждал его при попытке ввести пароль на фишинговых копиях.
Казалось бы, можно было пойти выпить шампанского, но не все так просто.
Память пользователей не подчиняется закону Мура, поэтому многие предпочитают придумывать один пароль для всех сайтов.
Это ужасно с точки зрения безопасности, но такова реальность.
Если бы мы включили защиту паролем для всех пользователей на всех сайтах, у нас была бы не только хорошая защита от фишинга, но и отличный способ отпугнуть аудиторию.
Поэтому по умолчанию защита включена только для наиболее популярных у мошенников сайтов.
Для любого другого вы можете включить его вручную.
Эта функция была представлена около года назад, и все это время она не только защищает от фишинга, но и привлекает внимание людей к теме безопасности паролей.
Но пароли — не единственный тип конфиденциальных данных, которые люди любят воровать.
Защита карты
Чтобы украсть деньги, не обязательно воровать пароли от онлайн-банков и продумывать логику обхода двухфакторной аутентификации.Вы можете просто украсть данные вашей банковской карты.
Не нужно также помнить о дополнительном 3-D Secure — пользователь не забудет ввести CVV-код на фишинговой странице.
После того как данные карты украдены, остается только придумать, как забрать оттуда деньги.
Есть разные методы.
Например, кто-то продает туристы получают билеты со скидкой 50%, фактически покупая их на украденную карту за полную стоимость.
С переменным успехом такие операции можно своевременно оспорить через ваш банк, но лучше этого не допускать и обезопасить данные своей банковской карты.
В отличие от защиты паролем, где пары «пароль-сайт» могут контролироваться однозначно, банковские карты можно использовать где угодно.
Мы можем контролировать крупные сайты, но длинный хвост интернет-магазинов мы все равно не охватим.
И что вообще означает «контроль»? Не разрешаете мне вводить номер карты? Если предупреждать, то о чем? Понимая, что на уровне Браузера вряд ли можно сделать однозначный вывод о плохих намерениях сайта, мы посмотрели на ситуацию под другим углом – с точки зрения шифрования.
Наличие SSL-сертификата является обязательным условием для любого веб-сайта, который работает с конфиденциальными данными пользователей, особенно с банковскими данными.
Если ресурс просит ввести номер карты, но не поддерживает безопасность и работает по HTTP, то возможны две разные проблемы.
Во-первых, кто-то может по пути перехватить ваши данные из открытого трафика.
Например, через незащищенную точку Wi-Fi в кафе.
Во-вторых, владелец такого ресурса как минимум не заботится о безопасности своих посетителей, а, возможно, просто ворует данные.
В любом случае не стоит вводить номер своей карты на таком сайте.
Если мы еще как-то решим проблему с перехватом с помощью функции Защита Wi-Fi , то шифрование канала не спасет вас от мошенника.
Точнее, он сохранит данные от мошеннических перехватчиков и доставит их в целости и сохранности мошенникам-фишерам.
И здесь нужно было что-то делать.
Итак, мы локализовали проблему.
Если пользователь заходит на HTTP-сайт, который просит ввести номер банковской карты, то это повод предупредить.
Но чтобы отобразить сообщение, сначала нужно распознать ввод карты.
Специальный тип банковской бирки вход его еще никто не придумал, но он относительно свежий атрибут для автозаполнения браузера автозаполнение=номер cc мало кто этим пользуется.
Команда Chromium, конечно же, не отказывается от идеи научить браузер самостоятельно подставлять номера карт и даже реализует эвристика , который угадывает по именам полей и некоторым другим данным, но работает не везде.
В общем, анализ полей ввода невозможен.
Но мы можем уловить ввод чисел.
Например, если пользователь ввел 16 цифр, то можно предположить, что это банковская карта.
Проблема в том, что это не всегда так.
К счастью, существует алгоритм Луна.
Думаю многие знают, что последняя цифра в номере карты нужна для проверки правильности всего номера.
А саму проверку можно легко провести с помощью алгоритма Луна.
Это довольно просто.
В каждой паре цифр номера карты умножаем первое число на 2. Если после умножения число становится больше 9, то нужно сложить составные числа.
А потом собрать все воедино.
Если общая сумма кратна 10, то мы знаем номер банковской карты.
С вероятностью ошибки 10%.
Алгоритм Luna значительно снижает вероятность ложных срабатываний.
Но есть дешевый способ еще немного уменьшить ошибку – контролировать первые цифры числа.
Именно в начале номера закодирована платежная система, поддерживающая карту.
Если в начале стоит 4, то это VISA. Что-то в диапазоне 51-55 — это MasterCard. 34-37 – это Американ Экспресс.
Аналогично и для некоторых других систем.
Вероятность ошибки, конечно, всегда остается, но на приемлемом уровне.
Мы научили Браузер распознавать ввод определенного количества цифр (от 15 до 19), проверять их по алгоритму Luna и на соответствие кодам известных платежных систем.
И все это работает полностью локально – Браузер никуда не отправляет и не хранит номер карты.
Если все условия соблюдены, пользователь увидит следующее предупреждение:
Аналогичное сообщение мы показываем и для ряда других опасных ситуаций.
Например, если сам сайт защищен по протоколу HTTPS, но номер введен в HTTP-фрейм.
Или если сертификат сайта недействителен.
Есть ситуации, при которых в силу их распространенности и относительной безопасности выводить предупреждение не стоит, но дать пользователям возможность разобраться все же необходимо.
Например, если форма ввода номера карты находится во фрейме на другом домене (и сайт, и фрейм HTTPS).
Это происходит постоянно, ведь интернет-магазинов много, но не все из них имеют возможность разработать собственный платежный модуль, предпочитая встраивать рамки популярных платежных систем.
Или другой пример.
Сайт не использует шифрование, а принимает карту через HTTPS-фрейм на собственном домене.
В таких ситуациях Браузер не показывает предупреждение, а добавляет значок карты в адресную строку.
Если нажать на нее, то можно узнать, кому именно вы доверяете свои данные.
Вся наша безопасность, описанная выше, основана на наличии сертификата SSL. Это оправдано, поскольку пользователи в большинстве своем еще не привыкли обращать внимание на замок в адресной строке, а у фишеров нет мотивации использовать сертификаты.
Но постепенно все меняется.
Установка бесплатного сертификата от Let's Encrypt больше не является проблемой.
Это значит, что рано или поздно мы снова вернемся к ситуации, когда нужно как-то защититься, а данных о клиенте недостаточно.
И чтобы в будущем не проиграть фишинговым сайтам, мы начали готовиться уже сейчас.
Машинное обучение
Любой сайт в Интернете имеет набор характеристик, по которым его можно оценить.Например, размер аудитории, время жизни, наличие SSL-сертификата, его надежность или даже уникальность адреса (фишеры любят использовать максимально похожие адреса).
И наше доверие к тому или иному сайту во многом определяется ими.
Опытный пользователь, заглянув на неизвестный сайт, может для себя решить, заслуживает ли этот сайт доверия.
С компьютером все сложнее.
Задача определения «подозрительности» сложна формализована и не укладывается в простые алгоритмы.
Понятно, что ляп в HTTPS — сильный критерий, но я говорю о гораздо более неочевидных случаях.
И здесь без машинного обучения не обойтись.
Яндекс уже несколько лет использует машинное обучение.
Наши технологии используются не только внутри компании (Поиск, Музыка, Маркет, Дзен ), но также доступны внешним клиентам через Фабрика данных Яндекса .
Именно машинное обучение позволяет компьютеру демонстрировать поведение, которое не было заложено в него явно.
А для нашей задачи — предупреждать пользователей при оплате на подозрительных сайтах — он идеален.
Чтобы научить машину искать подозрительные сайты, мы должны показать ей примеры заведомо плохих сайтов.
У нас с этим проблем нет – благодаря технологии Safe Browsing. С другой стороны, мы указываем ей уже упомянутые выше характеристики (факторы), на которые стоит обратить внимание.
А затем наш метод машинного обучения Matrixnet учится извлекать закономерности и строить формулы, в которые можно вводить адрес веб-сайта и в результате получать вердикт. В самом упрощенном виде это выглядит так:
Среди всех факторов хотелось бы выделить один особо.
Обычные пользователи, которые чаще других становятся жертвами фишинга, ориентируются в первую очередь на внешний вид сайта и не всегда смотрят на его адрес, блокировку и другие детали.
Злоумышленники этим пользуются.
Отличительной особенностью большинства фишинговых сайтов является копирование дизайна популярных ресурсов.
Поэтому с помощью технологий компьютерного зрения мы научили машину сравнивать внешний вид страниц с образцами популярных сайтов.
Если она найдет совпадение, то это сильный сигнал о возможной угрозе.
Результаты машинного обучения и компьютерного зрения доступны пользователям Яндекс.
Браузера начиная с версии 16.9.1. Если пользователь вводит номер карты на сайте, на сервер отправляется запрос с указанием страницы.
При наличии риска пользователь видит предупреждение.
Может показаться странным, что мы показываем предупреждение и только в ответ на ввод карты, а не используем полноэкранную блокировку сразу при загрузке.
Причина в том, что машина обучена выявлять сайты, на которых есть риск потерять деньги, и блокировать доступ ко всей информации было бы неправильно.
Кроме того, вероятность ложноположительных вердиктов никогда не равна нулю.
Если вы дочитали до конца, то уже знаете, что с фишингом можно (и нужно) бороться с помощью совершенно других технологий.
К сожалению, не все зависит только от них.
Знания и опыт самих пользователей во многом определяют их уязвимость перед злоумышленниками.
Но мы считаем, что если привлечь внимание к проблеме, рассказать об угрозах на уровне предупреждения, объяснить с помощью Браузера, почему важно использовать разные пароли и не вводить номера карт на сайтах без шифрования, то в конечном итоге люди станут более внимательно относятся к своей работе в сети.
Теги: #Машинное обучение #информационная безопасность #браузеры #пароли #фишинг #Яндекс #компьютерное зрение #команда Яндекс.
браузера #Яндекс.
браузер #банковские карты #безопасный просмотр
-
Розетка Для Esp8266 Esp-12
19 Oct, 24 -
В «Живой Журнал» Добавлена «Живая Газета»
19 Oct, 24