premmadishetty/AWS-Honeypot-Deployment
GitHub: premmadishetty/AWS-Honeypot-Deployment
在 AWS 上部署 T-Pot 蜜罐并集成威胁情报,构建从捕获到分析的安全研究管道。
Stars: 0 | Forks: 0
# T-Pot 蜜罐在 AWS 上 | 来自边缘的威胁情报
### 在 7 天内部署欺骗网络,捕获、分析和归因 150,247 次真实攻击
[](https://aws.amazon.com/)
[](https://github.com/telekom-security/tpotce)
[](https://ubuntu.com/)
[](https://www.elastic.co/)
[](https://attack.mitre.org/)
[](LICENSE)
**在 us-west-1(加州北部)的 AWS EC2 上部署了一个完整的 SOC 分析师级 T-Pot 蜜罐,暴露在公共互联网中 7 天。捕获了来自 74 个国家的 7,371 个独立 IP 的 150,247 次攻击事件,每个 IP 均通过 GreyNoise 和 AbuseIPDB 进行威胁情报 enrichment,所有 TTPs 映射到 MITRE ATT&CK,并将观察结果整理为具体的加固路线图。**
[架构](#architecture) · [部署](#deployment) · [发现](#findings) · [MITRE 映射](#mitre-attck-mapping) · [预算](#budget) · [路线图](#future-roadmap)
## 目录
- [执行摘要](#executive-summary)
- [架构](#architecture)
- [使用的 AWS 服务](#aws-services-used)
- [蜜罐栈](#honeypot-stack)
- [部署](#deployment)
- [发现](#findings)
- [攻击量时间线](#attack-volume-timeline)
- [地理归因](#geographic-attribution)
- [顶级攻击者](#top-attackers-enriched-with-threat-intelligence)
- [凭据尝试](#credential-attempts)
- [攻击端口](#attacked-ports)
- [捕获的恶意软件](#malware-captured)
- [Kibana 仪表板](#kibana-dashboard)
- [攻击流程 walkthrough](#attack-flow-walkthrough)
- [MITRE ATT&CK 映射](#mitre-attck-mapping)
- [威胁情报 enrichment](#threat-intelligence-enrichment)
- [预算](#budget)
- [安全控制](#security-controls)
- [发现与建议](#findings-and-recommendations)
- [未来路线图](#future-roadmap)
- [仓库结构](#repository-structure)
- [作者](#author)
## 执行摘要
| 指标 | 值 |
|---|---|
| **部署区域** | us-west-1(加州北部) |
| **实例类型** | t3.xlarge(4 vCPU,16 GB RAM) |
| **采集窗口** | 7 天(2025 年 10 月 6 日至 10 月 12 日) |
| **总攻击事件** | 150,247 |
| **唯一源 IP** | 7,371 |
| **观察到国家数** | 74 |
| **恶意置信度** | 94.7%(交叉引用 GreyNoise + AbuseIPDB) |
| **捕获的恶意软件二进制文件** | 5 个家族共 1,838 个 |
| **总 AWS 支出** | $50.93 |
| **蜜罐被妥协事件** | 0 |
**关键结论:** 在一周内,单个中型 EC2 实例捕获的攻击遥测数据足以填充一个有意义的威胁情报馈送,且主机未被妥协,对任何生产工作负载无影响。欺骗表面按设计正常工作。
## 架构
该项目在独立的 AWS VPC 中部署开源 T-Pot 蜜罐框架。该实例向公共互联网暴露一组精选的 7 个蜜罐,同时将管理员与 ELK 仪表板锁定到单个管理员 IP。所有日志通过 Logstash 传输,附带 GeoIP 和威胁情报 enrichment,索引到 Elasticsearch 并在 Kibana 中可视化。

设计原则:
1. **默认隔离。** 蜜罐 EC2 没有任何路径访问其他 AWS 资源。其 IAM 实例配置文件仅拥有 CloudWatch 的只读权限。
2. **最小化管理面。** EC2 实例上仅限制两个端口(64295 用于 SSH 管理,64297 用于 Kibana HTTPS),两者均锁定到管理员 /32。
3. **最大化蜜罐表面。** 14 个诱饵端口对 `0.0.0.0/0` 开放,因为蜜罐的价值与其作为目标的吸引力成正比。
4. **出口限制。** 蜜罐仅能连接到软件包镜像、Docker Hub 和威胁情报 API;被妥协的主机无法随意呼叫回连。
5. **证据保留。** 每行日志实时传输到带有每日快照到 S3 的索引 Elasticsearch 集群,确保任何事件保留取证价值。
## 使用的 AWS 服务
| 服务 | 用途 | 配置 |
|---|---|---|
| **EC2** | T-Pot 主机 | `t3.xlarge`,Ubuntu 22.04,128 GB gp3 |
| **VPC** | 网络隔离 | 单个公共子网,无 NAT 网关 |
| **安全组** | 流量过滤 | 14 个蜜罐端口开放,2 个管理端口锁定 |
| **弹性 IP** | 静态公共端点 | 需要一致的 DNS 和 Shodan 索引 |
| **CloudWatch** | 指标 + 日志聚合 | CPU、网络、自定义蜜罐指标 |
| **CloudTrail** | API 审计跟踪 | 所有管理平面活动记录 |
| **GuardDuty** | 威胁检测 | 对 VPC 流日志的 ML 异常检测 |
| **S3** | 日志归档 | Elasticsearch 快照,14 天生命周期转存至 Glacier |
| **IAM** | 访问控制 | 两个角色:SOC 分析员(只读)和蜜罐管理员 |
## 蜜罐栈
选择了 **聚焦的 7 个蜜罐栈**,而非 T-Pot 的默认全开配置。此权衡有意牺牲广度以换取信号质量:每个服务在其规范端口上运行,具备足够的真实性以维持交互式攻击参与,而非呈现大量低交互 shell。

| 蜜罐 | 捕获内容 | 为何纳入栈 |
|---|---|---|
| **Cowrie** | SSH/Telnet 会话 | 最高价值的攻击交互,完整命令回放 |
| **Heralding** | 跨协议的凭据收集 | 协议无关的凭据收集 |
| **Honeytrap** | TCP 捕获所有 | 填补未覆盖端口的空白 |
| **Dionaea** | 恶意软件二进制文件 | 捕获通过 SMB、MSSQL、FTP 投放的实际载荷 |
| **ElasticPot** | Elasticsearch 漏洞利用 | 跟踪 CVE-2015-1427 风格的持续攻击 |
| **Log4pot** | Log4Shell 漏洞利用 | 跟踪 CVE-2021-44228 的长尾利用 |
| **Mailoney** | SMTP 滥用 | 垃圾邮件中继探测和凭据填充 |
完整配置:[`configs/docker-compose-focused.yml`](configs/docker-compose-focused.yml)
## 部署
### 1. EC2 启动
```
aws ec2 run-instances \
--region us-west-1 \
--image-id ami-0f8e81a3da6e2510a \
--instance-type t3.xlarge \
--key-name tpot-keypair \
--security-group-ids sg-tpot-mis690 \
--subnet-id subnet-0abcd1234 \
--block-device-mappings 'DeviceName=/dev/sda1,Ebs={VolumeSize=128,VolumeType=gp3,Encrypted=true}' \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Project,Value=TPot-MIS690},{Key=Owner,Value=Prem-Madishetty}]'
```
### 2. T-Pot 安装
```
# 通过管理端口 SSH(不是默认的 22,Cowie 现已占用)
ssh -p 64295 -i tpot-keypair.pem ubuntu@
# 更新并安装 T-Pot
sudo apt update && sudo apt upgrade -y
git clone https://github.com/telekom-security/tpotce
cd tpotce/iso/installer
sudo ./install.sh --type=user
# 选择 STANDARD 安装,然后替换为聚焦的 compose 文件
sudo cp /opt/tpot/etc/compose/standard.yml /opt/tpot/etc/compose/standard.yml.bak
sudo cp docker-compose-focused.yml /opt/tpot/etc/compose/standard.yml
sudo systemctl restart tpot
```
### 3. 安全组
所有 14 个蜜罐端口均被故意暴露。管理员访问受限到单个 CIDR。参见 [`configs/security-group.json`](configs/security-group.json) 获取完整配置。
| 端口 | 服务 | 来源 |
|---|---|---|
| 22 Cowrie SSH | `0.0.0.0/0`(诱饵) |
| 23 | Cowrie Telnet | `0.0.0.0/0`(诱饵) |
| 445, 1433 | Dionaea SMB/MSSQL | `0.0.0.0/0`(诱饵) |
| 9200 | ElasticPot | `0.0.0.0/0`(诱饵) |
| 8080 | Log4pot | `0.0.0.0/0`(诱饵) |
| 25, 465 | Mailoney SMTP | `0.0.0.0/0`(诱饵) |
| 64295 | SSH 管理 | 仅管理员 /32 |
| 64297 | Kibana HTTPS | 仅管理员 /32 |
### 4. IAM 角色
两个最小权限角色按职责分离定义:
- **[SOC 分析员](configs/iam-soc-analyst-policy.json)**:仅读访问 CloudWatch 日志、GuardDuty 发现和 S3 中的归档日志。无法修改任何基础设施。
- **[蜜罐管理员](configs/iam-honeypot-admin-policy.json)**:可启动/停止/创建实例快照、管理安全组并写入日志归档。明确拒绝 IAM 修改。
## 发现
### 攻击量时间线
蜜罐的暴露曲线遵循教科书式的 Shodan/Censys 索引模式。第 1 天 9,823 次事件在 7 天内增至 30,534 次事件,因为全网扫描器发现并指纹识别了目标。

| 天 | 事件数 | 唯一 IP | 备注 |
|---|---|---|---|
| 第 1 天(10 月 6 日) | 9,823 | 412 | 预索引,仅机会性扫描器 |
| 第 2 天(10 月 7 日) | 14,216 | 687 | 首次检测到 Shodan 爬取 |
| 第 3 天(10 月 8 日) | 18,934 | 891 | Censys 捕获到目标 |
| 第 4 天(10 月 9 日) | 22,541 | 1,104 | 僵尸网络牧人开始包含此 IP |
| 第 5 天(10 月 10 日) | 25,782 | 1,287 | 稳定态扫描量 |
| 第 6 天(10 月 11 日) | 28,417 | 1,422 | 可见凭据填充活动 |
| 第 7 天(10 月 12 日) | 30,534 | 1,568 | 峰值日,为第 1 天的 3.1 倍 |
### 地理归因

地理分布大致符合 GreyNoise 2026 年《边缘状态报告》:中国、俄罗斯和美国主导原始扫描量。但该图表未显示的是,相当一部分“美国来源”流量源自充当代理出口节点的被妥协住宅 IP。因此,仅凭国家归属是弱信号,IP 级别的 enrichment 比国家级别更重要。

### 顶级攻击者(经威胁情报 enrichment)
所有攻击者 IP 均交叉比对 GreyNoise(全网扫描遥测)和 AbuseIPDB(社区提交报告)。前十名均被判定为高置信度恶意。

值得注意的模式:
- **AS4134(中国网)** 在前十中出现两次,与 GreyNoise 2026 年边缘报告中记录的僵尸网络聚类模式一致。
- **AS200019(AlexHost Bulgaria)** 同样出现两次,历史上与 Mirai 变种 C2 基础设施相关。
- **167.99.70.245(DigitalOcean)** 提醒我们,云提供商自身也托管大量攻击基础设施。合法的云 IP 不应被无条件信任。
### 凭据尝试
Cowrie 和 Heralding 共捕获 72,928 次凭据尝试,涉及 1,412 个唯一的用户名/密码组合。分布呈现极重尾特征——前 15 组凭据占所有尝试的 71%。

顶级尝试几乎完美对应 Mirai 默认凭据列表,该列表自 2016 年起传播并仍被积极使用。这是一个廉价信号:任何真实系统中如果 `root / 123456` 仍有效,它会被第一个尝试它的僵尸网络立即吸收。
### 攻击端口

SSH 端口 22 单独吸收了 52.2% 的流量。加入 Telnet(端口 23)和备用 SSH(端口 2223)后,“远程 shell 表面”总计达 70.6%。剩余 30% 分散在恶意软件投放(SMB、MSSQL)、凭据填充(RDP)和机会性漏洞利用(Elasticsearch、Log4Shell)。
### 捕获的恶意软件
Dionaea 在 7 天内捕获 1,838 个不同的恶意软件样本。所有样本均隔离在 Dionaea 的二进制文件目录中,未在主机上执行。
| 家族 | 样本数 | 首次出现 | 备注 |
|---|---|---|---|
| Mirai 变种 | 847 | 第 2 天 | 经典 IoT 僵尸网络,针对 Telnet 默认凭据 |
| XMRig 挖矿程序 | 412 | 第 3 天 | SSH 暴力破解成功后投放 |
| Gafgyt / Bashlite | 298 | 第 2 天 | IoT DDoS 僵尸网络,Mirai 前身 |
| Mozi 僵尸网络 | 187 | 第 4 天 | 针对路由器和 DVR 的 P2P 僵尸网络 |
| Tsunami / Kaiten | 94 | 第 5 天 | IRC 控制的 Linux DDoS 木马 |
## Kibana 仪表板
ELK 栈在 T-Pot 中预配置了攻击可视化、GeoIP 地图、凭据表格和时间序列图表。所有仪表板均可通过 `https://:64297` 访问——仅限管理员 IP。

## 攻击流程 walkthrough
下图追踪单个攻击事件(攻击者 `218.92.0.114`,数据集中排名最高的扫描器)从 TCP SYN 到 SOC 告警的端到端全过程。总管道延迟从网络入口到 Kibana 仪表板更新:不到 4.2 秒。

## MITRE ATT&CK 映射
每个捕获的攻击事件均标记至 MITRE ATT&CK 框架。下图显示分布:55% 的事件集中在“初始访问”战术(暴力破解、喷洒、利用公开面向的应用),而持久化和防御规避活动几乎不存在。

**解读:** 我们观察到的大部分是机会性且自动化的行为。定向 APT 活动会呈现相反的模式——安静的初始访问伴随大量持久化和防御规避工作。我们捕获的是互联网背景辐射:僵尸网络、挖矿程序部署者和凭据填充者。这对 IOC 馈送有价值,但不指示特定对手。
| 技术 | 战术 | 数量 | 占比 |
|---|---|---|---|
| T1595.001 | 侦察 - 扫描 IP 块 | 43,817 | 29.2% |
| T1110.001 | 初始访问 - 暴力破解 | 38,942 | 25.9% |
| T1110.03 | 初始访问 - 凭据喷洒 | 17,284 | 11.5% |
| T1190 | 初始访问 - 利用公开面向应用 | 12,847 | 8.5% |
| T1059.004 | 执行 - Unix Shell | 9,218 | 6.1% |
| T1110.004 | 凭据访问 - 凭据填充 | 8,412 | 5.6% |
| T1071.001 | 命令与控制 - Web | 7,893 | 5.3% |
| T1496 | 影响 - 资源劫持(挖矿) | 6,241 | 4.2% |
| T1053.003 | 持久化 - Cron 作业 | 3,412 | 2.3% |
| T1070.003 | 防御规避 - 清除命令历史 | 2,181 | 1.4% |
## 威胁情报 enrichment
每个观察到的攻击 IP 自动通过两条并行流水线 enrichment:
### GreyNoise(全网扫描遥测)
- 7,371 个 IP 中 6,892 个(93.5%)有先前的 GreyNoise 观察记录
- 6,533 标记为 `malicious`,287 为 `unknown`,72 为 `benign`(合法扫描器如 Shodan 和 Censys)
- 常见标签:`SSH Bruteforce`、`Mirai`、`RDP Crawler`、`Log4Shell Scanner`、`Cisco ASA Scanner`
### AbuseIPDB(社区信誉)
- 平均信誉置信度为 78/100
- 4,214 个 IP 的置信度高于 85(社区验证的恶意)
- 主要类别:SSH 暴力破解(类别 22)、Web 应用攻击(类别 21)、端口扫描(类别 14)
交叉引用两个来源产生 **94.7% 的联合分类置信度**——任何被两者同时标记的 IP 可安全加入 WAF 阻断列表,误报风险极低。这是下文 [路线图](#未来路线图) 中 WAF 自动阻断列表功能的基础。
## 预算
7 天采集窗口总 AWS 支出为 **$50.93**,远低于每月 60 美元预算上限。

### 成本优化说明
- **EC2 占主导(71%)**。3 年预留实例可降低 58% 成本。
- **Spot 实例替代**:us-west-1 的 t3.xlarge Spot 均价约 $0.095/小时,可将 EC2 成本降至约 $18。权衡是中断风险,对研究蜜罐可接受,但需快照与重启自动化。
- **数据传输出**是第二大开销($7.56),主要为蜜罐响应流量,因架构所限难以避免。
- **未使用 NAT 网关**。EC2 置于公网子网并绑定弹性 IP,相比私有子网 + NAT 每月节省约 $32。
- **CloudWatch 日志**为 $3.41,反映 5 GB 自定义指标摄入。可通过在 Logstash 层聚合后再传输来降低。
### 若扩展至 30 天
粗略 30 天预估约为 **$218**。若使用 Spot 实例并购买 1 年预留,价格可降至约 **$95**。
## 安全控制
### 保护蜜罐不沦为威胁的因素
1. **出口过滤。** 安全组仅允许出站 TCP 80、443 和 UDP 53。若蜜罐被妥协,攻击者无法自由呼叫回连。
2. **IAM 最小权限。** EC2 实例配置文件仅具备 CloudWatch 写入权限;无 S3 写入、无 IAM 读取、无 KMS、无 Secrets Manager。成功妥协一无所获。
3. **GuardDuty 启用。** 对 VPC 流日志的实时 ML 异常检测;任何出站 C2 模式将在数分钟内触发告警。
4. **ELK 数据只读。** Kibana 通过 HTTPS 在仅管理员 /32 绑定的端口暴露,无外部写入入口。
5. **每日 EBS 快照。** 支持完整的事后取证回滚。
### 安全组明确阻断
- 所有入站 SSH(端口 22)除蜜罐自身外拒绝(端口 22 为 Cowrie,非真实 SSH)
- 管理员平面访问(Kibana、真实 SSH 管理)仅允许来自管理员 /32
- 所有出站流量仅限上述三种必需协议
完整安全组配置:[`configs/security-group.json`](configs/security-group.json)
## 发现与建议
基于 7 天攻击遥测,提出以下适用于任何面向互联网的 Linux/AWS 工作负载的建议:
1. **完全禁用 SSH 密码认证。** 观察到的 70% 攻击流量针对远程 shell 端口。强制仅密钥认证 + SSO 证书认证。无密码即无暴力破解。
2. **将管理端口移出默认值。** 即使将 SSH 从 22 移至 64295(与 T-Pot 相同),观察到管理端口攻击下降超过 99%。虽非独立安全控制,但显著降低噪声。
3. **订阅信誉馈送。** 7,371 个攻击者中,4,214 个可在 AbuseIPDB 置信度高于 85 时预先阻断。将信誉馈送集成至 WAF 或安全组。
4. **启用 GuardDuty 挖矿检测。** 412 个捕获样本均为 XMRig 变种,均在 SSH 暴力破解后部署。GuardDuty 检测 `CryptoCurrency:EC2/BitcoinTool.B` 命中率高。
5. **快速修补边缘设备。** GreyNoise 2026 边缘报告指出,特定 CVE 的扫描激增通常早于披露约 6 周。若 VPN、防火墙或负载均衡器出现异常扫描,应视为 6 周早期预警。
6. **防范 Log4Shell 长尾。** 3,582 次 Log4Shell 探针在 CVE 披露 4 年后仍被捕获。遗留 Java 服务仍是持续的攻击目标。
## 未来路线图
按预期 SOC 价值排序的六项后续工作:
### 1. 自动 IP 阻断列表馈送至 AWS WAF
Lambda 作业每 15 分钟读取 Elasticsearch,提取恶意事件超过 5 次的 IP,并推送到附加在生产工作负载上的 AWS WAF IP 集合。打通检测与预防的闭环。
### 2. SDSU 基础设施早期预警
实时关联 T-Pot IOCs 与 SDSU 公网 IP 范围。若攻击者命中蜜罐后短时间内探测 SDSU 资产,自动通过 Slack 或 PagerDuty 告警。将蜜罐转变为面向校园基础设施的主动防御信号。
### 3. Cowrie 会话 ML 攻击分类
基于 Cowrie 命令序列使用随机森林 + TF-IDF 自动分类攻击者意图:挖矿程序部署、僵尸网络招募、仅侦察或数据 exfiltration。训练数据为已捕获的 87,142 个 Cowrie 事件。
### 4. 自动化恶意软件沙箱流水线
Dionaea 捕获的每个二进制文件自动提交至 Cuckoo Sandbox API。基于行为特征自动生成 YARA 规则并回推至 T-Pot 以实现未来匹配,构建自强化检测闭环。
### 5. 蜜罐凭证作为陷阱
向 Heralding 注入伪造但看似真实的凭据(如 `sdsu_backup_admin`)。注册为可追踪令牌服务中的陷阱。若其在互联网其他位置被使用,可证明横向移动并识别链条。
### 6. MISP 威胁情报共享
将 enrichment 后的 IOCs(攻击者 IP、恶意软件哈希、凭据列表)从 T-Pot 推送至 MISP 实例,使发现回馈至全球防御社区。赋予研究超越项目生命周期的持久影响。
## 仓库结构
```
T-Pot-AWS-Honeypot/
├── README.md # This file
├── LICENSE # MIT
├── assets/ # All SVG visuals
│ ├── diagram-01-architecture.svg
│ ├── diagram-02-attack-map.svg
│ ├── diagram-03-kibana.svg
│ ├── diagram-04-attack-flow.svg
│ ├── chart-01-countries.svg
│ ├── chart-02-honeypots.svg
│ ├── chart-03-timeline.svg
│ ├── chart-04-top-attackers.svg
│ ├── chart-05-credentials.svg
│ ├── chart-06-ports.svg
│ ├── chart-07-budget.svg
│ └── chart-08-mitre.svg
├── configs/
│ ├── iam-soc-analyst-policy.json # Read-only investigator role
│ ├── iam-honeypot-admin-policy.json # Instance management role
│ ├── security-group.json # Network rules
│ └── docker-compose-focused.yml # 7-honeypot T-Pot stack
├── docs/
│ ├── INCIDENT_RESPONSE.md # IR playbook for honeypot ops
│ └── SUPPORT_PLAN.md # 3-month maintenance + RACI
└── data/
└── attack_dataset.json # Full numeric dataset powering all charts
```
## 作者
**Prem Madishetty**
网络安全专业人士 | SOC 分析员 | AI 安全研究员
[](https://www.linkedin.com/in/madishettyprem/)
[](https://github.com/premishetty)
[](https://the-matrix-awakens.vercel.app/)
[](mailto:prem131298@gmail.com)
*作为 SDSU 网络安全管理课程 MIS 690 的项目成果制作。威胁情报背景参考自 GreyNoise 2026 年《边缘状态报告》及 AbuseIPDB 社区数据。*
**如果本项目对您有帮助,请给仓库一颗星。**
标签:AbuseIPDB, AWS EC2, Cloudflare, Elasticsearch, ELK, GreyNoise, IP封禁, masscan, MITRE ATT&CK, 公开暴露, 反欺诈, 威胁情报, 威胁情报平台, 威胁情报管道, 底层分析, 开发者工具, 情报驱动防御, 攻击捕获, 攻击溯源, 欺骗网络, 硬安全化, 自动化阻断, 蜜罐, 证书利用, 请求拦截