project-haris/vsat-honeypot
GitHub: project-haris/vsat-honeypot
该项目是一个模拟 Cobham SAILOR 900 海事卫星终端管理界面的高仿真蜜罐,用于捕获和分析针对卫星地面站的未授权访问与攻击行为。
Stars: 0 | Forks: 0
# VSAT Honeypot - SAILOR 900 VSAT Ka 模拟
一款海事 VSAT Honeypot,旨在模拟 Cobham SAILOR 900 VSAT Ka Installation Manager 界面,用于授权的安全研究和威胁情报收集。
**仅供授权研究使用。请在隔离的实验室环境中部署。**
[]()
[](https://github.com/ahmdngi/vsat-honeypot/actions/workflows/secret-scan.yml)
[]()
[](https://github.com/ahmdngi/vsat-honeypot)
## 描述
该 Honeypot 模拟 SAILOR 900 VSAT Ka 终端的 Web 界面,捕获攻击者的交互行为、凭据和探测模式。它旨在对常规扫描和基础指纹识别尝试表现出逼真的响应。
## 功能
- SAILOR 900 VSAT Ka Web 界面模拟
- 模拟 RF 遥测和船舶导航数据
- 支持多组凭据的登录捕获
- 记录所有变更的虚假配置页面
- 用于捕获命令的诊断控制台
- 用于收集 payload 的文件上传捕获
- 零依赖的 Perl HTTP 服务器
## 快速开始
```
cd vsat-honeypot
perl server.pl
```
打开 `http://127.0.0.1:8080`。
## Nix Shell
如果您需要一个可复现的本地测试 Shell 环境:
```
nix-shell
```
这将提供 `perl`、`curl`、`docker`、`docker-compose`、`jq` 和 `git`。
## Docker
本地构建并运行:
```
docker build -t vsat-honeypot .
docker run --name vsat-honeypot \
-p 8080:8080 \
-e VSAT_BIND=0.0.0.0 \
-v "$(pwd)/config:/app/config" \
-v "$(pwd)/data:/app/data" \
-v "$(pwd)/logs:/app/logs" \
--restart unless-stopped \
vsat-honeypot
```
或使用 Compose:
```
docker compose up -d --build
```
该容器目前支持以下运行时环境覆盖:
- `VSAT_BIND`,在 Docker 中默认为 `0.0.0.0`
- `VSAT_PORT`,默认为 `8080`
- `VSAT_TRUST_PROXY_HEADERS`,在反向代理后运行时设置为 `true`
- `VSAT_RATE_LIMIT_WINDOW_SECONDS`
- `VSAT_RATE_LIMIT_MAX_REQUESTS`
## Tailscale 访问
要从 tailnet 中的任意节点访问该 Honeypot:
1. 在 Docker 宿主机上安装并连接 Tailscale。
2. 在该宿主机上启动此容器并发布端口 `8080`。
3. 从另一个 Tailscale 节点,打开 `http://:8080` 或 `http://:8080`。
注意事项:
- 应用程序必须在容器内绑定到 `0.0.0.0`,上述 Docker 设置已经完成了此操作。
- 如果您只需要 tailnet 访问,请使用宿主机防火墙限制暴露,确保端口 `8080` 仅可从 Tailscale 接口访问,而不对公共互联网开放。
- 如果您倾向于使用 HTTPS 和稳定的 tailnet 名称,请将其置于 `tailscale serve` 或宿主机上的反向代理之后。
## 默认凭据
该 Honeypot 接受以下凭据(所有尝试均会被记录):
| 用户名 | 密码 | 访问级别 |
|----------|----------|--------------|
| admin | 1234 | Administrator |
| service | service | Service |
## 配置
服务器会在首次运行时自动创建 `config/honeypot.json`。
编辑以下字段:
- `navigation.mode`:`honeypot` 或 `scrape`
- `navigation.refreshSeconds`:轮询间隔
- `navigation.vesseltracker.shipName`:用于构建 Vesseltracker URL 的船舶名称
- `navigation.vesseltracker.imo`:用于构建 Vesseltracker URL 的 IMO 编号
- `navigation.vesseltracker.url`:可选的显式 URL 覆盖
Honeypot 配置示例:
```
{
"server": {
"bind": "127.0.0.1",
"port": 8080,
"trustProxyHeaders": false,
"rateLimit": {
"windowSeconds": 60,
"maxRequestsPerWindow": 180
}
},
"navigation": {
"mode": "honeypot",
"refreshSeconds": 30,
"vesseltracker": {
"shipName": "Honeypot",
"imo": "0000000",
"url": ""
}
}
}
```
Scrape 配置示例:
```
{
"server": {
"bind": "127.0.0.1",
"port": 8080,
"trustProxyHeaders": true,
"rateLimit": {
"windowSeconds": 60,
"maxRequestsPerWindow": 120
}
},
"navigation": {
"mode": "scrape",
"refreshSeconds": 30,
"vesseltracker": {
"shipName": "SHIP_NAME",
"imo": "IMO_NUMBER",
"url": ""
}
}
}
```
## 日志
- `logs/requests.log` - 包含元数据的所有 HTTP 请求
- `logs/auth.log` - 身份验证尝试与会话
- `data/state.json` - 当前模拟的设备状态
## 部署注意事项
- 应在反向代理之后使用以进行 TLS 终止
- 隔离在 DMZ 或 Honeypot 网络段中
- 阻止来自 Honeypot 宿主机的出站互联网访问
- 考虑使用海事 ASN 范围内的 IP 以提高真实性
## OpSec
该 Honeypot 返回真实的特征指标:
- Server header:`Allegro-WebServer/3.2.1`(与真实的 SAILOR 设备匹配)
- 导航数据使用真实的海事坐标
- 固件版本与已知的 SAILOR 发行版匹配
- 序列号遵循 SAILOR 的命名规范
## 参考文献
- SAILOR 900 VSAT Ka: https://cobham-satcom.com/product/sailor-900-vsat-ka
- Installation Manager 参考: https://www.linksystems-uk.com/wp-content/uploads/support/SAILOR900IM-98-133400-F-var-A-screen.pdf
## 许可证
请参阅 LICENSE 文件。
标签:Perl, PKINIT, 卫星通信, 威胁情报, 工控安全, 开发者工具, 版权保护, 网络信息收集, 蜜罐, 证书利用, 请求拦截