Статья Поведенческая биометрия и непрерывная аутентификация: как это работает и как обойти

Ночная лаборатория: ноутбук с кодом перехвата нажатий клавиш и монитор с тепловой картой движений мыши в холодном сине-зелёном свечении экранов.


На внутреннем пентесте финтех-компании я захватил сессию менеджера через украденный session cookie - Use Alternate Authentication Material: Web Session Cookie (T1550.004, Lateral Movement). Через двенадцать минут сессию убили. Не timeout, не logout, не ротация токена - behavioral analytics движок зафиксировал, что паттерн движений мыши и ритм скроллинга не совпадают с профилем легитимного пользователя. Двенадцати минут хватило на беглый recon внутренних эндпоинтов, но для полноценного lateral movement - маловато. С того проекта я начал системно разбирать, как устроена поведенческая биометрия, что она реально измеряет и где у неё слабые места для red team-оператора.

Как поведенческая биометрия устроена: разбор для red team​

Поведенческая биометрия - пассивная аутентификация, работающая непрерывно на протяжении всей сессии. Классический MFA проверяет пользователя один раз при логине и дальше доверяет сессии до expiry. Непрерывная аутентификация строит поведенческий профиль и сверяет каждое действие с baseline. Вендоры вроде BioCatch защищают сотни миллионов пользователей в финансовом секторе и обрабатывают миллиарды сессий - масштаб, при котором ошибка в обходе обходится дорого. Подробнее - в нашем обзоре атаки на аутентификацию.

Категории поведенческих сигналов

Чтобы планировать обход, нужно точно знать, какие сигналы система собирает. По enterprise-руководствам по адаптивной аутентификации выделяется пять категорий:

Динамика нажатий клавиш (keystroke dynamics). Время между нажатиями (flight time), длительность удержания клавиши (dwell time), частота опечаток, паттерны использования модификаторов Shift/Ctrl. У каждого человека свой "клавиатурный почерк" - самый исследованный и самый стабильный поведенческий идентификатор.

Движения мыши (mouse movement patterns). Траектории курсора, скорость, ускорение, микродвижения при наведении на элементы UI. Система фиксирует не только целевые клики, но и "путь" между ними - у каждого оператора он свой.

Тачскрин-взаимодействие. На мобильных - давление касания, площадь контакта пальца, характерные жесты свайпов. Самый сложный вектор для подделки из-за привязки к аппаратным сенсорам.

Обращение с устройством. Данные акселерометра и гироскопа: как пользователь держит смартфон, угол наклона, характер тремора. При удалённом доступе воспроизвести практически нереально.

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

ML-pipeline: от сбора до решения​

Архитектурно pipeline behavioral analytics состоит из четырёх звеньев. JavaScript-агент или мобильный SDK собирает сырую телеметрию - координаты мыши с частотой 50-100 Гц, события keydown/keyup с миллисекундными таймингами, данные сенсоров устройства. Модуль feature extraction выделяет признаки: средний flight time, стандартное отклонение dwell time, средняя скорость курсора, количество микрокоррекций.

Для каждого пользователя формируется baseline - обычно one-class classifier (One-Class SVM, Isolation Forest) или автоэнкодер, обученный исключительно на "нормальном" поведении. В runtime каждое окно телеметрии (30-120 секунд) прогоняется через модель и генерирует risk score.

Три исхода: Allow (score ниже порога - проход без трения), Step-up (запрос дополнительной верификации), Block (завершение сессии и уведомление SOC). Именно эта триада - то, что red team должен обмануть. Задача не "набрать нулевой score", а удержаться ниже порога step-up достаточно долго для выполнения задачи.

Место непрерывной аутентификации в цепочке атаки

1783164109168.webp

Непрерывная аутентификация - единственный защитный механизм, работающий после успешного initial access. Традиционный MFA отвечает на вопрос "кто логинится?" один раз, затем доверяет сессии до expiry. По данным CyberMaxx (2025), 60% фишинговых инцидентов используют техники полного обхода MFA - прежде всего AiTM-прокси, перехватывающие session cookie в реальном времени.

Положение в kill chain:
  1. Initial Access - фишинг с AiTM-прокси, кража cookie через XSS, компрометация browser extension. Техники: Multi-Factor Authentication Interception (T1111, Credential Access), Steal Web Session Cookie (T1539, Credential Access).
  2. Foothold - атакующий применяет Web Session Cookie (T1550.004, Lateral Movement) для входа в приложение.
  3. Post-exploitation - здесь behavioral analytics включается в работу. Каждое действие в перехваченной сессии сверяется с профилем. Несовпадение -> step-up или kill session.
MFA Request Generation (T1621, Credential Access) в сочетании с AiTM делает классический MFA неэффективным - и именно поэтому zero-trust архитектуры смещают фокус на непрерывную аутентификацию по поведению пользователя.

Для red team-оператора behavioral analytics - второй барьер после EDR/SIEM, но с принципиальным отличием: его не отключить через AMSI bypass или indirect syscalls. Он работает на уровне приложения.

[Применимо: внутренний пентест и red team-операции с захватом web-сессий. На внешнем пентесте с recon-only скоупом не релевантно.]

Векторы обхода поведенческой биометрии

📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме

Ключевые метрики для записи:
  • Flight time - интервал между отпусканием одной клавиши и нажатием следующей (мс)
  • Dwell time - длительность удержания клавиши (мс)
  • Digraph timing - характерные интервалы для пар символов (th, er, on)
  • Error rate - частота и тип опечаток
Концептуальный пример записи на Python с pynput:
Python:
from pynput import keyboard
import time, json

events = []
def on_press(key):
    events.append({"type": "down", "key": str(key), "ts": time.perf_counter()})
def on_release(key):
    events.append({"type": "up", "key": str(key), "ts": time.perf_counter()})
    if key == keyboard.Key.esc:
        return False  # останавливает listener

with keyboard.Listener(on_press=on_press, on_release=on_release) as l:
    l.join()
# json.dump(events, open("profile.json","w"))
Из записанного профиля извлекаются статистики: средний dwell time, средний flight time для каждого диграфа, стандартные отклонения. При воспроизведении нельзя использовать точные записанные интервалы - нужно добавлять случайный jitter в пределах 1-2 стандартных отклонений для имитации естественной вариативности.

Когда техника НЕ работает: требует предварительного доступа к рабочему месту жертвы (для установки кейлоггера). На коротких текстовых вводах (логин, поисковая строка) пороги TypingDNA и аналогов настолько жёсткие, что jitter не спасает. Одновекторный replay (только клавиатура) выявляется системами с multi-signal fusion через кросс-корреляцию с mouse profile.

Mouse movement biometrics bypass​

Движения мыши - менее стабильный биометрический идентификатор. На них влияет разрешение экрана, DPI мыши, размер интерфейсных элементов. Это одновременно снижает точность профилирования и упрощает обход.

Основной подход - replay через pyautogui или аналоги с записанными траекториями. Проблема в другом: behavioral analytics системы отслеживают микротремор (мелкие непроизвольные колебания курсора), нелинейное ускорение и паузы при принятии решений. Программный replay генерирует "слишком идеальные" траектории - прямые линии, постоянная скорость, отсутствие коррекций. Робот выдаёт себя своей безупречностью.

Когда техника НЕ работает: все серьёзные вендоры (BioCatch, BehavioSec) явно ищут признаки роботизированного управления. На мобильных устройствах неприменимо - добавляются данные акселерометра.

Практическая разведка: fingerprinting behavioral analytics на цели​

1783164188854.webp

Перед планированием обхода нужно определить, развёрнута ли на цели поведенческая биометрия. Без этого шага имитация профиля - пустая трата времени.

Требования к окружению​

  • ОС: любая с браузером (Chrome/Firefox, DevTools)
  • Инструменты: Burp Suite Community/Pro, browser DevTools
  • Сеть: доступ к целевому web-приложению
  • RAM: 4 ГБ минимум (браузер + Burp)

Методы обнаружения​

JavaScript-анализ. В DevTools -> Sources ищите скрипты с массовой подпиской на события mousemove, keydown, keyup, touchstart, scroll. Вендорные SDK загружаются с характерных доменов - cdn.biocatch.com, api.typingdna.com, cdn.behaviosec.com. Network-панель покажет запросы к этим хостам.

Частота сбора событий. В консоли браузера:
JavaScript:
// Количество обработчиков событий на document
getEventListeners(document).mousemove?.length // >1 = вероятен behavioral tracking
getEventListeners(document).keydown?.length   // >1 = keystroke analytics
Поведенческий тест. Залогиньтесь и поработайте 5-10 минут штатно. Затем резко смените стиль - переключитесь на Tab-навигацию вместо мыши, измените скорость набора. Step-up challenge через 2-5 минут - почти гарантированный индикатор behavioral analytics. Я обычно начинаю с этого, прежде чем лезть в DevTools.

HTTP-трафик. В Burp Proxy отслеживайте POST-запросы с объёмными payload, содержащими массивы координат или таймингов. SDK обычно отправляет телеметрию пакетами каждые 5-30 секунд - поля mouseData, keyEvents, touchEvents, deviceMotion.

Recon через документацию. По ФЗ-152 обработка поведенческих данных может подпадать под ст.11 (биометрические ПДн) и требовать письменного согласия, либо осуществляться на основании ст.6 ч.1 п.5 (исполнение договора). На практике организация упоминает сбор в политике конфиденциальности - и это работает как индикатор для OSINT.

Ограничения техник: что не работает против production-систем​

Тут нужно быть честным - большинство описанных техник в чистом виде против зрелых систем не проходят.

BioCatch использует серверный анализ с корреляцией device fingerprint, геолокации и поведенческой телеметрии одновременно. Идеальный replay клавиатурного профиля провалится при несовпадении device fingerprint. Тысячи параметров обрабатываются параллельно - обмануть один вектор недостаточно.

TypingDNA фокусируется на keystroke dynamics с cloud-based matching. Пороги для коротких вводов (пароль, OTP) жёсткие - jitter в 1-2 стандартных отклонения часто не хватает. Replay работает надёжнее на длинных текстах, где статистика усредняется.

Системы с multi-signal fusion (BehavioSec и аналоги) - одновекторный replay (только клавиатура или только мышь) выявляется через кросс-корреляцию каналов. Если keystroke profile совпал, а mouse profile - нет, это сильный сигнал аномалии поведения пользователя.

Мобильные приложения - данные акселерометра и гироскопа невозможно подделать при удалённом доступе. Этот вектор остаётся непробиваемым для remote-операций. Тут без вариантов.

Вектор обходаCold startMature baselineMulti-signal fusionМобильные SDK
Cold start exploitationДаНетДа (если нет baseline)Да
Behavioral driftНеприменимоЧастично (дни)СложноСложно
Keystroke replayНеприменимоЧастичноНетНет
Mouse replayНеприменимоСлабоНетНеприменимо

Риск-ориентированная аутентификация на основе поведенческой биометрии - первый за долгое время защитный механизм, который реально меняет правила для red team. Классический MFA обходится через AiTM-прокси, session cookie крадётся через XSS - а continuous authentication бьёт по операциям после компрометации, когда атакующий уже внутри. Большинство пентестерских тулкитов заточены под обход точечных проверок: "пройди MFA - получи токен - работай до timeout". Behavioral analytics ломает эту модель.

Но вот что я наблюдаю на реальных проектах: часть организаций, развернувших поведенческую биометрию, держит её в passive-monitoring режиме - система логирует аномалии, но не блокирует сессии и не запрашивает step-up. Причина банальная: страх false positives и жалоб от бизнес-пользователей. В таком режиме behavioral analytics - красивый дашборд для SOC, а не реальный барьер для оператора. Ситуация изменится в ближайшие год-два, когда дозреют модели и вендоры решат проблему ложных срабатываний, но пока окно для операторов открыто.

Прогнозирую, что клиентский replay как техника обхода умрёт первым - вендоры переводят сбор и валидацию телеметрии на серверную сторону, где JavaScript-манипуляции бесполезны. Единственный устойчивый вектор - заставить легитимного пользователя выполнить нужные действия под контролем атакующего, оставаясь тем же "оператором" для системы. Это ближе к GUI Input Capture (T1056.002) и social engineering, чем к техническому bypass. Если хочется попрактиковать session hijacking и обход дополнительных слоёв аутентификации - web-категория на HackerLab.pro (https://hackerlab.pro) покрывает именно эти сценарии.
 
Последнее редактирование модератором:
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🧭 Навигатор · ИБ 2026
Не знаешь, какой трек твой?
5 направлений ИБ, реальные зарплаты и точка входа для каждого — в одном треде.
JuniorSenior+
100K → 600K+ ₽ /мес
Открыть навигатор →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab