Двухфакторная аутентификация (2FA) без фишинга и MITM

22 декабрь, 2018 - 23:05Арсен Бандурян

В последнее время много новостей о том, что 2FA (двухфакторная аутентификация) в опасности из-за качественно выполненных фейковых страниц. Конечно, 2FA бывают разные. В некоторых "особо продвинутых" европейских банках до сих пор пор можно разжиться листиком с одноразовыми TAN-кодами.

Но уже несколько лет как индустрия не стоит на месте, и вместо одноразовых TAN/PIN-кодов прилетающих по SMS или через приложения типа RSA Token, Steam Guard, Google Authenticator есть и другие варианты.

Вот видео, нас интересует самый первый сценарий. Что происходит?

Вкратце:

  1. Пользователь логинится в приложение. Приложение не выполняет аутентификацию само - оно перенаправляет пользователя в его систему контроля доступа.
  2. Система контроля доступа (IAM - Identity & Access Management, SSO - Single Sign On) активирует приложение для Single Sign On на смартфоне пользователя.
  3. Пользователь видит на экране смартфона, что пришел запрос (кто, откуда и т.д.), аутентифицируется и разрешает доступ
  4. Система IAM получает зеленый свет и возвращает пользователя в приложение, прилагая параллельно разрешение на доступ.

Вопросы:

  • Q1: Где здесь пользватель вводил что-то в свой компьютер?
  • Q2: Куда дружным строем отправлятся фейковые страницы?.

Я понимаю, что теперь могут возникнуть и другие вопросы, поэтому

Подробнее

1. Пользователь логинится в приложение. Приложение не выполняет аутентификацию само - оно перенаправляет пользователя в его систему контроля доступа.

* Работает это не только для веб-сайтов, но и для десктопных и мобильных приложений. Типичный пример в бизнес-среде: приложения из MS Office 2013+ (реально 2010+, но там всё было очень кривенько).

* Стандартам и протоколам для интеграции с системами IAM/SSO (SAML, OAuth, OpenID Connect) уже много лет, за ними стоят такие гиганты как Google, Facebook и представители OpenSource сообщества. Есть куча библиотек, SDK и т.д. Так что не интегрируется только ленивый.

* Интеграция подразумевает обмен сертификатами между SSO/IAM и приложением - удачи в подделке 

2. Система контроля доступа (IAM - Identity & Access Management, SSO - Single Sign On) активирует приложение для Single Sign On на смартфоне пользователя.

* Нормальные и продвинутые системы позволяют гибко настраивать параметры 2FA

  • по приложениям (почта/финансы - важно, расписание корпоративного спортзала - можно и без 2FA),
  • по типу аутентификации в приложении-аутентификаторе (почта - палец/PIN, финансы - полный длинный пароль)
  • контексту и т.д. (диапазон IP - внутри из офиса или из аэропорта; с какого устройтва, является ли устройство корпоративным; соответствует ли оно Compliance Policy и т.д.).

* Таким образом можно реализовать интересные сценарии. Например, тот же доступ к финансовому приложению:

  • Корпоративный лаптоп в офисе - SSO через сертификат, пользователь просто заходит без вопросов, но только если лаптоп прошел проверку Health Attestation (антивирус, файрволл и т.д. отписались, что всё ОК)
  • Тот же лаптоп вне офиса (дома, в пути) - 2FA
  • [опционально] Тот же лаптоп вне офиса в VPN - пароль 
  • Свой лаптоп - доступ запрещен, и даже знание пароля и установленный VPN-клиент не помогут, т.к. к проверкам подключается корпоративная MDM-система.
  • Но посмотреть расписание корпоративного спортзала можно и со своего лаптопа/телефона - но через 2FA
  • А если хочется со своего и без 2FA - регистрируй устройство в корпоративном MDM (с разделением приватного и фирменного) и тогда можно и без 2FA

3. Пользователь видит на экране смартфона, что пришел запрос (кто, откуда и т.д.), аутентифицируется и разрешает доступ

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

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

* Также, нигде не фигурирует реальный пароль пользователя, и ничто не пишется в веб-страницу/приложение - фейковое или реальное

4. Система IAM получает зеленый свет и возвращает пользователя в приложение, прилагая параллельно разрешение на доступ.

* Разрешение (SAML Assertion) подписано ЭЦП системы IAM и действительно только для этой сессии - просто так не подделать

* Разрещение может содержать дополнительные параметры доступа: роль, ограничения (закрытие определенных разделов портала), временное окно для реаутентификации и т.д.

* И что тоже очень полезно (но должно поддерживаться с обеих сторон) - Just in time Provisioning - т.е. динамическое создание аккаунта в приложении.

Если в компанию пришло 10 человек, и каждому нужно создать 10 аккаунтов - какова вероятности, что админы где-то напортачат и сколько это потом исправлять? С помощью JIT Provisioning приложение получает данные из системы IAM и автоматом всё создает. Хороший пример - Salesforce.

В завершение.

Тему можно развивать долго. Вариантов много. Важно, что всё описанное выше - не космос, а вполне реальные вещи, которые может себе позволить любая организация числом от 1 до 100000 чел.

Естественно, если есть много корявых старых приложений, то всё будет сложнее, но в типичных сценариях сроки внедрения <1 мес - реальны.

Важным нюансом является то, что система IAM должна уметь работать с MDM (система управления мобильными устройствами, включая лаптопы/ПК) - иначе должный уровень безопасности не обеспечить (сохраняя вменяемый уровень простоты).

Два крупнейших решения (согласно Gartner MQ 2018):

* Microsoft Azure AD Premium P2 + Intune или MS 365 E3/E5

Отлично вписывается в формат организаций (особенно крупных), внедряющих Office 365 или двигающихся в облако Azure, есть пара подводных камней в лицензировании (типа отдельной платы на 2FA за каждую аутентификацию в отдельных пакетах), что компенсируется кучей всевозможных интеграций с другими продуктами MS и Azure  (в т.ч. мобильными приложениями), аналитикой, ИИ и т.д.

Как вариант, MS ADFS (Active Directory Federation Services) позволяет многое реализовать самому и без облака (в т.ч. что, чего Azure до сих пор не умеет, но приходится буквально сшивать лоскутное одеяло, интегрируя и поддерживая различные продукты от разных вендоров

* VMware WorkSpace ONE

VMware купила в 2014 абсолютного (по сей день, включая MQ 2018) лидера MDM/EMM рынка AirWatch и расширила функциональность своими решениями.

Наворотов не так много как у Microsoft, зато работает не только в облаке, больше возможностей для интеграции, больше поддерживаемых платформ (и зачастую больше функциональности - Mac, Android) экосистема (не заточена на Microsoft, как Intune/AzureAD, куча интеграций со специализированными вендорами безопасности, Threat Intelligence, Threat Management), проще лицензирование и, как результат, малые организации могут позволить себе "взрослые" фишки без доплаты.

Оба решения поддерживают управление Windows 10 Modern Management, т.к. MDM-протокол для Win10 разрабатывался (насколько мне известно) с привлечением AirWatch.


В общем, пора закругляться. Думаю дырки в повествовании еще остались. Если есть вопросы - задавайте.