mehedi-hasan-sami98/credential-attacks-explained

GitHub: mehedi-hasan-sami98/credential-attacks-explained

一份以防御为导向的教育资料,系统讲解凭据填充与密码喷射攻击的概念、检测逻辑,并附带日志异常检测脚本。

Stars: 0 | Forks: 0

# 凭据填充与密码喷射 — 概念、检测与防御 [![MITRE ATT&CK](https://img.shields.io/badge/MITRE%20ATT%26CK-T1110-red)](https://attack.mitre.org/techniques/T1110/) [![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![Status](https://img.shields.io/badge/Type-Educational%20%2F%20Blue%20Team-green)](#) ## ⚠️ 法律与道德声明 本仓库**严格用于教育目的**。它仅记录攻击*概念*,供防御、蓝队和经授权的红队学习使用。它**不**包含可直接使用的攻击工具、绕过速率限制/CAPTCHA 的技术或有效的漏洞利用代码。 - 仅测试您**拥有**或获得**明确书面授权**的身份验证系统。 - 未经授权访问计算机系统在孟加拉国的 **Digital Security Act / Cyber Security Act** 及全球同等法律(美国的 CFAA、英国的 Computer Misuse Act 等)下均属违法行为。 - 作者 (Mehedi Hasan Sami) 和本仓库不对任何滥用行为负责。 ## 📖 目录 1. [它们是什么?](#-what-are-they) 2. [攻击者为何使用它们](#-why-attackers-use-them) 3. [它们的工作原理(概念上)](#-how-they-work-conceptually) 4. [关键区别](#-key-differences) 5. [现实世界的影响](#-real-world-impact) 6. [MITRE ATT&CK 映射](#-mitre-attck-mapping) 7. [检测策略](#-detection-strategies) 8. [防御与缓解](#-defense--mitigation) 9. [检测工具包(本仓库)](#-detection-toolkit-this-repo) 10. [参考资料](#-references) ## 🔑 它们是什么? ### Credential Stuffing (凭据填充) 一种攻击方式,将之前**泄露的用户名/密码对**(从过去无关服务的数据泄露中流出的)自动尝试用于*不同的*目标应用程序,利用了许多用户在多个网站上重复使用相同密码这一事实。 ### Password Spraying (密码喷射) 一种攻击方式,将**一小部分常用密码**(例如 `Summer2026!`、`Welcome123`)尝试用于**大量用户名列表**,每次在所有账户中尝试一个密码,以避免触发单账户锁定阈值。 | | Credential Stuffing | Password Spraying | |---|---|---| | **输入** | 已知从数据泄露中获取的(用户,密码)对 | 已知的用户名 + 猜测的常见密码 | | **目标** | 在其他地方重复使用泄露的凭据 | 在整个组织内找到至少一个弱密码 | | **量级模式** | 多个密码,每个账户尝试次数少 | 一个密码,多个账户 | | **规避检测** | 分布式 IP / 僵尸网络 | 低速慢速,分散在不同时间 | ## 🎯 攻击者为何使用它们 - **密码重用极为普遍** — 研究一致表明,很大一部分用户在不同服务间重复使用密码,因此从站点 A 泄露的数据通常可以解锁站点 B 上的账户。 - **低成本,高规模** — 无需破坏加密或查找软件漏洞;这两种攻击都滥用了合法的登录功能。 - **易于自动化** — 可以轻松编写脚本并针对 API、登录表单、VPN、O365/Azure AD、RDP 网关等进行扩展。 - **绕过账户锁定策略** — 密码喷射专门设计为保持在单账户失败尝试阈值之下。 - **初始访问的高投资回报率 (ROI)** — 一次成功的登录可能导致账户接管、商业电子邮件妥协 (BEC),或为进一步的横向移动建立立足点。 ## ⚙️ 它们的工作原理(概念上) ### Credential Stuffing — 一般流程 1. 攻击者获取包含 `email:password` 组合的泄露数据(来自泄露论坛、粘贴网站或泄露数据库)。 2. 编译列表并进行去重,通常会与目标已知的用户格式(例如 `firstname.lastname@company.com`)进行交叉比对。 3. 自动化工具向目标的身份验证 endpoint 提交登录尝试。 4. 请求分布在代理/住宅 IP 池和随机 user-agent 中,以规避基于 IP 的速率限制和机器人检测。 5. 成功的登录("命中")将被记录下来,用于后续的账户接管。 ### Password Spraying — 一般流程 1. 攻击者枚举或猜测有效的用户名(例如,通过 OSINT、LinkedIn 命名约定或用户名枚举漏洞)。 2. 选择一小部分常见/季节性密码列表(基于密码策略模式,例如,“必须包含大写字母 + 数字” → `Companyname2026!`)。 3. 将**一个密码**尝试用于**所有用户名**,然后攻击者会等待(通常为 30 分钟以上,遵守锁定重置窗口),然后再尝试下一个密码。 4. 这种“低速慢速”的节奏使每个单独账户的失败尝试次数保持在锁定阈值之下。 5. 单次有效的命中提供了初始访问权限,通常针对 VPN、O365/Azure AD 或 VDI 门户。 ## 📊 现实世界的影响 - 在事件响应报告(Verizon DBIR、Microsoft 数字防御报告)中,这两种技术一直位居顶级初始访问向量之列。 - 密码喷射被归咎于许多针对 VPN 网关和云身份提供商的民族国家和网络犯罪活动。 - 凭据填充推动了针对银行、电子商务和流媒体平台的大规模账户接管活动,通常通过账户转售或欺诈来变现。 ## 🗺️ MITRE ATT&CK 映射 | 技术 | ID | 战术 | |---|---|---| | Brute Force: Password Spraying | [T1110.003](https://attack.mitre.org/techniques/T1110/003/) | Credential Access | | Brute Force: Credential Stuffing | [T1110.004](https://attack.mitre.org/techniques/T1110/004/) | Credential Access | | Valid Accounts | [T1078](https://attack.mitre.org/techniques/T1078/) | Initial Access, Persistence | ## 🔍 检测策略 表明任一攻击正在进行的蓝队指标: - **不可能的旅行 / 地理速度异常** — 在短时间窗口内从地理位置相距甚远的地方登录。 - **高失败登录与唯一用户名比例** — 单个 IP/user-agent 在许多不同账户上失败(喷射特征)。 - **每个账户的低失败登录与唯一密码比例** — 许多用户名,尝试相同或非常少的密码(喷射)。 - **来自不熟悉的 ASN/IP 范围的失败登录激增**,尤其是数据中心或住宅代理范围。 - **使用不存在的用户名进行身份验证尝试**,随后是有效的用户名 — 喷射前枚举的迹象。 - **时间集中的失败,随后是单次成功** — 典型的凭据填充“命中”模式。 - **在非工作时间出现身份验证高峰**,相对于组织的正常工作时间/时区。 ## 🛡️ 防御与缓解 | 控制 | 有效性 | |---|---| | 到处使用**多因素身份验证 (MFA)** | 影响最大 — 即使密码正确,也能中和大多数基于凭据的攻击 | | 在注册/重置时进行**泄露密码筛查**(例如 HaveIBeenPwned Pwned Passwords API) | 阻止重用已知的泄露密码 | | **智能/自适应账户锁定**(基于风险,而不是简单的单账户计数器) | 降低喷射的可行性 | | 在登录 endpoint 上进行**速率限制和 CAPTCHA** | 减慢自动化尝试 | | **基于地理/IP 异常的条件访问**(例如 Azure AD Conditional Access) | 阻止不可能的旅行登录 | | **无密码 / FIDO2 安全密钥** | 完全移除密码攻击面 | | **集中式登录监控和 SIEM 关联**(Wazuh、Splunk、Sentinel) | 实现整个组织的早期检测 | | **关于密码重用的用户教育** | 减少根本原因 | | 在密码策略中**列入常见/季节性密码黑名单** | 降低喷射成功率 | ## 🧰 检测工具包(本仓库) `scripts/log_anomaly_detector.py` — 一个防御性的 Python 脚本,它解析标准的 Web 服务器/身份验证日志(Apache/Nginx 风格或 JSON 身份验证日志),并标记符合凭据填充或密码喷射特征的模式: - 每个唯一 IP 的高唯一用户名比率(喷射信号) - 每个唯一用户名的高唯一 IP 比率(填充/分布式攻击信号) - 短时间窗口内的失败登录爆发 有关用法,请参见 [`scripts/README.md`](scripts/log_anomaly_detector.py)。 ## 📚 参考资料 - OWASP — [Credential Stuffing](https://owasp.org/www-community/attacks/Credential_stuffing) - MITRE ATT&CK — [T1110 Brute Force](https://attack.mitre.org/techniques/T1110/) - NIST SP 800-63B — Digital Identity Guidelines (Authentication) - Microsoft — [Azure AD Password Spray Investigation Guidance](https://learn.microsoft.com/en-us/security/operations/incident-response-playbook-password-spray) - Have I Been Pwned — [Pwned Passwords API](https://haveibeenpwned.com/Passwords) ## 👤 作者 **Mehedi Hasan Sami** 初级渗透测试员 | BlackHawk & BlackVault 安全团队 | 孟加拉国达卡 - GitHub: [@mehedi-hasan-sami98](https://github.com/mehedi-hasan-sami98) *属于进攻/防御安全研究和检测工程项目的持续作品集的一部分。*
标签:凭据填充, 安全, 密码喷洒, 漏洞靶场, 超时处理, 逆向工具, 防御检测