Статья Credential Stuffing атаки и Password Spraying: от утёкшего дампа до захвата аккаунтов

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


На пентесте финтех-компании в прошлом году мы получили initial access за четыре часа - без единого эксплойта. Публичный дамп Exploit.In (593 миллиона пар email:password, по данным Have I Been Pwned), фильтрация по домену заказчика, нормализация, прогон через OpenBullet 2 по корпоративному OWA - 23 учётки валидные. У семи не было MFA. Credential stuffing атаки - не взлом и не эксплуатация CVE, а масштабированное переиспользование чужих паролей. И оно до сих пор даёт initial access быстрее любого сканера уязвимостей.

Бизнес-логика: место credential stuffing в kill chain​

Credential stuffing атаки и password spraying атака - два подхода к одной задаче: получить валидные учётные данные для initial access. В MITRE ATT&CK обе техники живут под T1110 (Brute Force): credential stuffing - T1110.004, password spraying - T1110.003. Обе относятся к тактике Credential Access, но дальше пути расходятся.

Полная цепочка: утечка базы паролей -> нормализация дампа -> автоматизированная проверка на целевых сервисах -> account takeover атака -> lateral movement или exfiltration. По данным Okta State of Secure Identity Report (2023), около 24% попыток аутентификации на крупных identity-платформах - credential stuffing. Microsoft оценивает, что MFA остановила бы 99,9% автоматизированных атак на учётные записи (Alex Weinert, 2019). Современные целевые техники (AiTM, MFA fatigue) снижают эту цифру, но MFA отсутствует на значительной части корпоративных порталов, особенно внутренних.

Для атакующего это экономически выгодная операция: combo list бесплатен или стоит копейки, инструменты open source, а конверсия даже в 0,1% на базе из миллиона записей даёт тысячу скомпрометированных аккаунтов. OWASP относит слабую защиту аутентификации к A07:2021 - Identification and Authentication Failures, явно включая credential stuffing как квалифицирующий признак.

Credential stuffing vs password spraying атака: когда что применять​

Путаница между этими техниками - стандартная проблема даже у опытных пентестеров. Разница принципиальная, и от неё зависит выбор инструментов, скорость атаки и методы evasion.

КритерийCredential stuffingPassword spraying
Входные данныеРеальные пары login:password из утечекСписок логинов + 3-5 популярных паролей
ПредположениеПользователь переиспользует парольПользователь выбрал слабый пароль
СкоростьВысокая (тысячи попыток/мин)Низкая (low-and-slow, 1 пароль за цикл)
Шум в логахМножество failed logins с разных IP1-2 failed login на аккаунт, пауза
Срабатывание lockoutНет (1 попытка на аккаунт)Нет (ниже порога блокировки)
Kill chain positionInitial access через внешний web-порталInitial access через AD/SSO/VPN
КонтекстВнешний пентест, web-приложенияВнутренний пентест, AD-среда, Microsoft 365
MITRE ATT&CKT1110.004T1110.003

[Применимо: внешний пентест] Credential stuffing работает против веб-приложений с формой логина - e-commerce, SaaS-порталы, OWA, корпоративные VPN. Атаки с использованием утёкших паролей эффективны именно потому, что пользователи ставят один пароль на десяток сервисов. Банально, но работает раз за разом.

[Применимо: внутренний пентест, AD-среда] Password spraying - техника для корпоративных сред с доменной аутентификацией. Список доменных пользователей (через GetADUsers.py, Kerbrute или LDAP-запросы), затем прогон паролей вида Company2024!, Winter2025!, Welcome1. В 2024 году наблюдается тренд комбинирования password spraying с MFA fatigue и кражей session token. Группа Midnight Blizzard использовала password spraying для компрометации тестового аккаунта Microsoft, затем через OAuth-permissions получила доступ к почте security и legal-команд (MSRC blog, январь 2024). Один тестовый аккаунт без MFA - и вся переписка юристов утекла.

Пайплайн атаки с использованием утёкших паролей​

1781683884525.webp

Получение и нормализация дампов​

Первый шаг - получение combo list. Источники: публичные дампы (Exploit.In - 593 млн записей), агрегированные базы на теневых форумах, Dehashed и аналоги для поиска по корпоративным email-доменам. Have I Been Pwned позволяет проверить, есть ли данные по конкретному домену, без раскрытия самих паролей.

Сырой дамп непригоден для атаки. Там мусор, дубли и битые строки. Типичный пайплайн нормализации:
  1. Фильтрация по целевому домену (grep по @company.com)
  2. Дедупликация - один email может встречаться в десятках утечек с разными паролями, все варианты сохраняются
  3. Очистка от мусора: битые строки, хеши вместо plaintext, невалидные форматы
  4. Формирование combo-файла в формате email:password - один аккаунт может дать 3-5 паролей из разных утечек базы паролей
Для компании с 500 сотрудниками после фильтрации крупных дампов обычно получается 2 000-10 000 пар. Конверсия 1-3% на организациях без MFA - стандартный результат. На практике хватает и десятка валидных учёток, чтобы зацепиться.

Инструменты для credential stuffing и автоматизация​

Автоматизация атак на авторизацию строится на специализированных credential checker'ах и классических брутфорсерах. Каждый занимает своё место в пайплайне.

ИнструментТипПрименениеОграниченияСтатус
OpenBullet 2Credential checkerWeb-формы, API, custom конфигиТребует написания конфигов под каждый targetАктивный, open source, .NET
SilverBulletCredential checkerWeb-формы, GUI-ориентированныйМеньше community-конфиговАктивный
Sentry MBACredential checkerWeb-формы с anti-bot bypassLegacy, хуже работает с современными CAPTCHAНе обновляется
HydraБрутфорсерSSH, FTP, HTTP-forms, SMBНет встроенной proxy-ротации, шумныйАктивный, open source
KerbrutePassword sprayerKerberos pre-auth в ADТолько Kerberos, только internalАктивный, open source, Go

Для credential stuffing через веб-формы основной рабочий инструмент - OpenBullet 2. Он позволяет создавать конфигурации (configs) под конкретный login-endpoint: определить маркеры успешного/неуспешного входа, настроить proxy-ротацию и задержки. Написание конфига - отдельное ремесло: нужно разобраться в потоке авторизации, найти CSRF-токены, правильно парсить ответы. Инцидент Roku в 2024 году (576 000 аккаунтов во второй волне, по данным Roku Security Notice) - типичный пример credential stuffing атаки; конкретный toolset публично не раскрыт, но механика стандартная.

Sentry MBA когда-то был королём credential stuffing'а, но сейчас это скорее музейный экспонат - с современными CAPTCHA и bot detection он справляется плохо.

Для password spraying в AD стандартная связка: Kerbrute для энумерации валидных пользователей через Kerberos pre-auth, затем DomainPasswordSpray.ps1 для прогона паролей. Согласно Atomic Red Team (тесты T1110.003), типовые сценарии включают Password Spray через DomainPasswordSpray-модуль PowerShell и spray через LDAP against domain controller (NTLM или Kerberos).

Что происходит после account takeover​

Account takeover - не конечная цель, а точка входа. Дальше всё зависит от контекста.

Внешний веб-портал: извлечение персональных данных, привязанных платёжных карт, API-ключей. В e-commerce - оформление заказов на чужие деньги, в корпоративном OWA - доступ к почте и вложениям для дальнейшей разведки.

Корпоративный SSO/VPN: lateral movement через VPN-туннель, доступ к внутренним ресурсам, privilege escalation. Скомпрометированный аккаунт с правами на Citrix/RDP - прямой путь к domain admin.

Microsoft 365: persistence через Federated SSO, доступ к SharePoint, OneDrive, Teams. Кейс Midnight Blizzard показателен: после password spraying они получили доступ через OAuth-permissions - классический пример того, как брутфорс учётных данных превращается в persistence без единого exploit'а (MSRC blog, январь 2024).

Evasion: обход защиты от перебора паролей​

1781683937304.webp

Rate limiting, account lockout, IP blocking - стандартные меры, которые не работают против грамотно настроенной credential stuffing атаки. Вот почему.

Proxy rotation. OpenBullet 2 и Sentry MBA умеют работать с residential proxy-пулами из коробки. Согласно OWASP, даже при высокообъёмных атаках per-IP request volume остаётся низким, потому что запросы распределяются через тысячи уникальных IP. Блокировка по IP бесполезна. OWASP рекомендует учитывать классификацию IP (residential vs hosting) и геолокацию - запросы с hosting-провайдеров можно маршрутизировать через CAPTCHA.

Low-and-slow. Вместо тысяч запросов в минуту - 2-3 попытки с рандомизированными задержками. Для WAF и rate limiter это выглядит как обычный пользовательский трафик. Брутфорс аутентификации в таком режиме занимает дни, но остаётся невидимым для пороговых детекторов. Терпение - главное оружие.

Fingerprint rotation. Современные инструменты рандомизируют User-Agent, TLS fingerprint (JA3/JA4), разрешение экрана и другие параметры device fingerprinting. OWASP предупреждает: client-side defenses могут быть подменены или обойдены, нужны дополнительные слои защиты.

CAPTCHA bypass. Сервисы решения CAPTCHA обрабатывают reCAPTCHA v2 за 10-30 секунд при стоимости ~$2-3 за тысячу решений. OWASP рекомендует мониторить CAPTCHA solve rates: аномально высокий процент решений указывает на автоматизированный bypass.

Когда evasion НЕ работает:
  • Adaptive MFA с risk-based triggers (login из нового гео, нового устройства, с proxy-IP) - останавливает атаку даже при валидных credentials
  • Behavioral analytics на уровне WAF (Cloudflare Bot Management, Akamai Bot Manager) - детектирует паттерны ботов даже при ротации fingerprints
  • FIDO2/WebAuthn - невозможно обойти через credential stuffing в принципе, hardware token не реплицируется. Точка.

Детектирование атак на аутентификацию в SIEM

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

  • SIEM: Splunk Enterprise 9.x+ или Elastic Security 8.x+ (ELK Stack)
  • Источники логов: Windows Security Event Log (Event ID 4625, 4624, 4771), web-server access logs, WAF logs
  • Для AD-среды: аудит Kerberos pre-auth failures (Event ID 4771) обязателен - без него password spraying невидим
  • Sigma-конвертер: sigma-cli или pySigma для трансляции правил в формат целевого SIEM

Sigma-правила и запросы для Splunk и Elastic​

В репозитории SigmaHQ есть 8 правил для детектирования password spraying (тег attack.t1110.003). Ключевые: win_security_susp_failed_logons_single_source_ntlm.yml (множественные NTLM-failures с одного источника), win_security_susp_failed_remote_logons_single_source.yml (failed remote logons с одного IP), win_security_susp_failed_logons_explicit_credentials.yml (failed logons с explicit credentials).

Базовый паттерн password spraying для Splunk - один источник, много целей:
Код:
index=wineventlog EventCode=4625
| eval LogonType=coalesce(Logon_Type, LogonType)
| where LogonType IN (3,8,10)
| stats count dc(TargetUserName) as unique_users by SourceNetworkAddress
| where count > 20 AND unique_users > 5
| sort -count
Для credential stuffing паттерн другой: множество источников, каждый делает 1-2 попытки. Нужна корреляция по velocity - аномальный всплеск login attempts за короткий период:
Код:
index=web_logs uri="/api/login" status=401
| bin _time span=5m
| stats count dc(src_ip) as unique_ips by _time
| where unique_ips > 50 AND count > 200

D3FEND и вендор-специфика детектирования​

Для T1110.003 MITRE D3FEND рекомендует пять defensive countermeasures:

D3FEND IDТехникаЧто мониторить
D3-CCSACredential Compromise Scope AnalysisСкомпрометированные credentials
D3-AEMApplication Exception MonitoringApplication logs (login failures)
D3-OPMOperational Process MonitoringEvent Log (4625, 4771)
D3-UGLPAUser Geolocation Logon Pattern AnalysisNetwork Traffic (geo anomalies)
D3-PMADProtocol Metadata Anomaly DetectionNetwork Traffic (protocol anomalies)

На практике D3-UGLPA (геолокационный анализ) даёт кучу false positives при VPN и remote-сотрудниках - замучаетесь разгребать. D3-PMAD эффективнее: детектирует аномальные TLS fingerprints и нестандартные HTTP-заголовки, характерные для автоматизированных инструментов.

Splunk Enterprise Security. Стандартный correlation search Brute Force Access Behavior Detected работает через порог failed logins, но обходится low-and-slow техникой. Рекомендация: добавить правило с корреляцией по src_ip + user_agent + geo_country для выявления аномальных сочетаний.

Elastic Security 8.x+. Встроенное ML-правило Spike in Failed Logon Events детектирует credential stuffing через anomaly detection. Для password spraying - EQL-правило Multiple Logon Failure from the Same Source Address. Ограничение: без winlogbeat на контроллере домена password spraying через Kerberos pre-auth остаётся невидимым. Поставили Elastic, но не настроили winlogbeat на DC - считайте, что password spraying для вас не существует.

CrowdStrike Falcon. Identity Protection модуль детектирует password spraying на уровне AD, включая Kerberos-атаки. Ограничение: только в лицензии Falcon Identity Threat Protection, не входит в базовую поставку.

Защита от credential stuffing: что реально работает​

1781683965943.webp

Согласно OWASP Credential Stuffing Prevention Cheat Sheet и рекомендациям Canadian Centre for Cyber Security (ITSP.30.035), эффективная защита строится послойно:
📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме

За последние полгода credential stuffing атаки перестают работать на крупных порталах с Cloudflare/Akamai Bot Management, но остаются убийственно эффективными на внутренних корпоративных порталах - OWA, Citrix Gateway, кастомные HR-системы - где WAF либо отсутствует, либо настроен на пропуск трафика из "доверенных" сетей. Пентест-проекты раз за разом показывают одно и то же: периметр укрепляется, а внутренние сервисы аутентификации живут с конфигурацией пятилетней давности.

Когда говорят "защита от перебора паролей", обычно подразумевают lockout после N попыток. Это не работает ни против credential stuffing (одна попытка на аккаунт), ни против password spraying (попытки ниже порога блокировки). Реальная защита - visibility: знать, какие аккаунты утекли, видеть аномалии в login patterns, реагировать до того, как атакующий найдёт валидную пару. Команды, которые внедрили мониторинг HIBP + velocity-based alerting в SIEM, сокращают время реакции с дней до минут. Те, кто полагается на account lockout, узнают о компрометации из тикета пользователя "почему у меня в почте чужие письма".

Отдельная история - password spraying в Active Directory. Типичная настройка по Microsoft Security Baseline / CIS Benchmark: 5 неудачных попыток -> lockout на 30 минут (в Default Domain Policy threshold по умолчанию = 0, lockout отключён). Атакующий с Kerbrute делает 4 попытки на аккаунт с паузой в 35 минут и проходит под радаром. Единственный способ поймать это - мониторинг Kerberos pre-auth failures (Event ID 4771) с корреляцией по времени и количеству уникальных аккаунтов.

А Event ID 4771 по умолчанию не включён в большинстве доменов.

Получается парадокс: одна из самых распространённых атак на AD-аутентификацию невидима в стандартной конфигурации логирования. Пока security-команда не включит Advanced Audit Policy для аккаунт-логонов, password spraying будет проходить незамеченным - вне зависимости от того, какой SIEM стоит за логами. Никакой Splunk не поможет, если в него не приходят нужные события. Проверьте прямо сейчас: auditpol /get /subcategory:"Kerberos Authentication Service" на вашем DC. Если результат - No Auditing - у вас та же проблема.
 
Последнее редактирование модератором:
Мы в соцсетях:

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

Похожие темы

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab