Elvis-180/aws-ssh-brute-force-detection
GitHub: Elvis-180/aws-ssh-brute-force-detection
该项目是一个基于 AWS EC2 和 Splunk 的云端 SOC 安全实验,演示了针对 SSH 暴力破解攻击的完整检测、调查与事件响应流程。
Stars: 1 | Forks: 0
# AWS EC2 上的 SSH 暴力破解检测与事件响应






## 概述
本项目演示了对针对 AWS EC2 Ubuntu 实例的模拟 SSH 暴力破解攻击进行端到端检测、调查和响应的过程。
使用 Kali Linux 攻击系统发起 Hydra 密码攻击,同时 Splunk Enterprise 持续实时监控身份验证日志。本次事件的调查遵循 **NIST SP 800-61 事件响应框架**,记录了从准备到事件后活动的每个阶段。
该项目展示了实用的 SOC 分析师技能,包括云安全监控、日志分析、事件调查以及专业的事件文档编写。
# 目标
- 部署基于云的 SOC 监控环境
- 使用 Splunk SIEM 检测 SSH 暴力破解攻击
- 调查身份验证日志
- 识别攻击者行为
- 将攻击者技术映射到 MITRE ATT&CK
- 执行遏制和恢复操作
- 使用 NIST 事件响应框架记录调查过程
# 使用的技术
| 类别 | 技术 |
|-----------|------------|
| 云平台 | AWS EC2 |
| 操作系统 | Ubuntu 22.04 |
| SIEM | Splunk Enterprise |
| 攻击机 | Kali Linux |
| 攻击工具 | Hydra |
| 侦查 | Nmap |
| 云日志 | AWS CloudTrail |
| 身份验证日志 | `/var/log/auth.log` |
| 系统日志 | `/var/log/syslog` |
| 框架 | NIST SP 800-61 Rev. 2 |
# 实验架构
```
Kali Linux
│
│ SSH Brute Force (Hydra)
▼
Internet
│
AWS Security Groups
│
AWS EC2 Ubuntu Server
│
Authentication Logs
(/var/log/auth.log)
│
Splunk Enterprise SIEM
│
SOC Investigation
```
# 攻击场景
攻击者在针对 AWS EC2 Ubuntu 服务器发起 SSH 暴力破解攻击之前,使用 Nmap 进行了侦查。
Splunk 实时监控身份验证日志,并检测到来自单一 IP 地址的超过 **126 次失败的身份验证尝试**。
该攻击通过 SSH 速率限制被成功遏制,防止了未经授权的访问。
# 事件摘要
| 字段 | 值 |
|-------|-------|
| 事件 ID | INC-2026-001 |
| 攻击类型 | SSH 暴力破解 |
| 严重程度 | 高 |
| 目标 | AWS EC2 Ubuntu |
| 目标端口 | TCP 22 |
| 检测工具 | Splunk Enterprise |
| 攻击者工具 | Hydra |
| 成功登录 | 0 |
| 失败尝试 | 126+ |
| 框架 | NIST SP 800-61 |
# 调查过程
本次调查遵循 NIST 事件响应框架的四个阶段。
## 阶段 1 — 准备
- AWS EC2 部署
- Splunk 安装
- 身份验证日志监控
- 启用 CloudTrail
- 配置安全组
## 阶段 2 — 检测与分析
通过 Splunk 对 SSH 身份验证日志的监控识别出了本次攻击。
调查包括:
- 失败的身份验证分析
- 源 IP 识别
- 时间线重建
- 用户名分析
- 影响评估
## 阶段 3 — 遏制、根除与恢复
执行的操作包括:
- SSH 速率限制
- 安全组验证
- 禁用密码身份验证
- SSH 密钥身份验证验证
- 系统验证
## 阶段 4 — 事件后活动
项目总结包括:
- 经验教训
- 安全建议
- 检测规则创建
- 事件指标
- 最终文档
# Splunk 搜索示例
### 统计失败登录
```
index=main sourcetype=linux_auth "Failed password"
| stats count
```
### 识别攻击者 IP
```
index=main sourcetype=linux_auth "Failed password"
| rex "from (?P\d+\.\d+\.\d+\.\d+)"
| stats count by src_ip
| sort -count
```
### 攻击时间线
```
index=main sourcetype=linux_auth "Failed password"
| timechart span=5m count
```
### 目标用户名
```
index=main sourcetype=linux_auth "Failed password"
| rex "Failed password for (?:invalid user )?(?P\S+)"
| stats count by username
| sort -count
```
# 检测规则
```
index=main sourcetype=linux_auth "Failed password"
| rex "from (?P\d+\.\d+\.\d+\.\d+)"
| stats count by src_ip
| where count > 10
```
**触发条件**
来自单一 IP 地址的失败 SSH 登录尝试超过 10 次。
# 关键指标
| 指标 | 结果 |
|---------|--------|
| 平均检测时间 | < 1 分钟 |
| 平均响应时间 | 2 分钟 |
| 攻击持续时间 | 38 秒 |
| 失败登录 | 126+ |
| 成功登录 | 0 |
| 被泄露的数据 | 无 |
# 安全改进
- 禁用 SSH 密码身份验证
- 使用 AWS 安全组限制 SSH 访问
- 启用 MFA
- 部署 Fail2Ban
- 启用 AWS GuardDuty
- 启用 VPC Flow Logs
- 定期轮换 SSH 密钥
# 截图
Nmap 扫描
Splunk 运行中
# 展示的技能
- 安全运营中心 (SOC)
- 事件响应
- SIEM 操作
- 日志分析
- 威胁检测
- 云安全监控
- 安全文档
## 作者
**Tem Elvis**
SOC 分析师
Splunk 运行中
# 展示的技能
- 安全运营中心 (SOC)
- 事件响应
- SIEM 操作
- 日志分析
- 威胁检测
- 云安全监控
- 安全文档
## 作者
**Tem Elvis**
SOC 分析师标签:AWS, CTI, DPI, SSH爆破检测, 安全运营中心, 库, 应急响应, 网络安全, 网络映射, 隐私保护