KeerthiPrabhakar/Credential-Stuffing-Analyzer
GitHub: KeerthiPrabhakar/Credential-Stuffing-Analyzer
一个用于分析登录日志并检测凭证填充、密码喷射及账户接管攻击的 Python 工具,具备 IP 风险评分功能。
Stars: 1 | Forks: 0
# 凭证填充分析器
导入加密货币交易所的登录日志,识别 IP 和用户级别的攻击模式,并为每个可疑 IP 分配风险评分。所有发现均标记为 [OWASP API 安全 Top 10 (2023)](https://owasp.org/www-project-api-security/)。
## 项目结构
```
Credential-Stuffing-Analyzer/
├── analyzer.py # Detection engine and CLI reporter
├── dummy_data.py # Synthetic login log generator
├── credential_stuffing_report.json # JSON output written at runtime
├── test_analyzer.py # Basic regression checks
├── .gitignore
└── README.md
```
## 设置
```
# 创建并激活 virtual environment
python3 -m venv .venv
source .venv/bin/activate
# 安装 dependencies
pip install rich
```
## 用法
```
python3 analyzer.py
```
输出内容将打印到终端,并保存至 `credential_stuffing_report.json`。
## 检测项
| 检测项 | 描述 | OWASP 参考 | 严重程度 |
|-----------|-------------|-----------------|----------|
| **IP 喷射** | 单个 IP 针对多个用户账户进行重复失败登录尝试 —— 表明存在自动化的密码喷射攻击 | [API4:2023 — 不受限制的资源消耗](https://owasp.org/API-Security/editions/2023/en/0xa4-unrestricted-resource-consumption/) | HIGH / CRITICAL |
| **凭证填充** | 多个 IP 针对同一账户进行尝试 —— 表明存在利用泄露数据进行的分布式凭证填充 | [API4:2023 — 不受限制的资源消耗](https://owasp.org/API-Security/editions/2023/en/0xa4-unrestricted-resource-consumption/) | HIGH / CRITICAL |
| **账户接管 (ATO)** | 在无 MFA 的情况下,经历大量失败尝试后立即登录成功 —— 高置信度的账户被盗用 | [API2:2023 — 身份验证失效](https://owasp.org/API-Security/editions/2023/en/0xa2-broken-authentication/) | CRITICAL |
## 检测阈值
阈值在 `CredentialStuffingAnalyzer` 中定义为类常量,可以在不更改检测逻辑的情况下进行调整。
| 常量 | 默认值 | 描述 |
|----------|---------|-------------|
| `SPRAY_IP_FAIL_THRESHOLD` | `10` | 触发喷射检测所需的来自单个 IP 的最少失败次数 |
| `SPRAY_USER_THRESHOLD` | `5` | 确认喷射模式所需针对的最少唯一用户数 |
| `STUFFING_ATTEMPT_THRESHOLD` | `8` | 跨任意 IP 针对单个账户的最少失败次数 |
| `ATO_FAILURE_WINDOW` | `4` | 在登录成功前触发 ATO 标记所需的最少失败次数 |
## 风险评分
每个 IP 都会根据加权因子获得一个介于 **0 到 100** 之间的综合风险评分。
| 因子 | 权重 | 描述 |
|--------|--------|-------------|
| 失败率 | 30 | 失败尝试的比例 |
| 尝试量 | 20 | 原始尝试次数(上限为 50) |
| 用户多样性 | 15 | 被针对的唯一账户数量 |
| IP 多样性 | 15 | 不同 IP 的数量(单个 IP 评分 = 0) |
| 地理异常 | 10 | 是否包含高风险国家代码 (RU, CN, KP, UA, NG) |
| 失败后成功 | 10 | 在连续 3 次或更多次失败后记录到成功登录 |
**风险标签:**
| 评分 | 标签 |
|-------|-------|
| 75–100 | CRITICAL |
| 50–74 | HIGH |
| 25–49 | MEDIUM |
| 0–24 | LOW |
## 模拟数据
`dummy_data.py` 生成 VaultX 加密货币交易所的合成登录日志。攻击组合:
| 模式 | 比例 | OWASP |
|---------|-------|-------|
| 凭证填充 | ~20 % | API4:2023 |
| 密码喷射 | ~15 % | API4:2023 |
| 账户接管 | ~3 % | API2:2023 |
| 正常登录 | ~62 % | — |
使用了 40 个合成交易员账户 (`trader_XXXXX@vaultx.io`) 以及分布在高风险 CIDR 范围内的 8 个攻击者 IP。
## 输出
写入 `credential_stuffing_report.json` 的 JSON 报告包含:
```
{
"meta": { "tool": "...", "logs_analysed": 500, "run_at": "..." },
"summary": { "total_findings": 60, "critical": 60, "high": 0 },
"findings": {
"ip_spray": [...],
"credential_stuffing": [...],
"account_takeover": [...]
},
"ip_risk_scoreboard": [...]
}
```
每项发现包含 `finding_id`、`severity`、`owasp`、`owasp_url`、`description` 以及 `remediation` 步骤。
生成器保证精确生成请求的记录数、唯一的 `log_id` 值,以及包含成功事件前出现大量失败尝试的明确 ATO 序列。
## OWASP 参考
| ID | 标题 | URL |
|----|-------|-----|
| API2:2023 | 身份验证失效 | https://owasp.org/API-Security/editions/2023/en/0xa2-broken-authentication/ |
| API4:2023 | 不受限制的资源消耗 | https://owasp.org/API-Security/editions/2023/en/0xa4-unrestricted-resource-consumption/ |
标签:AMSI绕过, API安全, ATO检测, Homebrew安装, IP评分, JSON输出, OWASP Top 10, Python, 加密货币交易所, 威胁检测, 安全分析器, 密码喷洒, 异常检测, 撞库检测, 文档结构分析, 无后门, 网络安全, 蛮力攻击, 认证安全, 账户接管, 逆向工具, 防御 evasion, 隐私保护