hett-patell/ShardLure
GitHub: hett-patell/ShardLure
一个基于 SSH 蜜罐的攻击者行为分析与威胁情报共享平台,通过指纹聚类将分散的攻击事件归并为同一攻击者画像,并自动导出可机读的威胁指标。
Stars: 2 | Forks: 0
# ShardLure
[](https://github.com/hett-patell/ShardLure/releases)
[](LICENSE)
[](https://goreportcard.com/report/github.com/networkshard/shardlure)
[](https://github.com/hett-patell/ShardLure/stargazers)
**SSH 蜜罐遥测的攻击者身份识别引擎。** 也就是说:它让机器人以为它们攻入了真正的生产服务器,然后完全曝光它们的攻击剧本。 ShardLure 根据**剧本指纹**(OpenSSH 日志行)或 **HASSH**(Cowrie 会话)对 SSH 机器人进行聚类,而不仅仅是 IP。同一个攻击者在三个不同的 IP 上?仍然是一个攻击者。不同攻击者使用同一个地址?不同行。核心思想是“用户名口味画像,而不是谁在门口”。它包含一个 VPS 安装程序、Cowrie 集成、实时数据摄取、取证 TUI 以及一个带有旋转地球仪的网络仪表板。 ``` attacker -> port 22 (Cowrie) -> JSON/journal ingest -> SQLite actors -> dashboard you -> port 2222 (SSH) -> real admin access via keys/Tailscale ``` ## 目录 - [功能特性](#features) - [快速开始](#quick-start) - [本地开发](#local-development) - [命令](#commands) - [配置](#configuration) - [部署](#deployment) - [角色与诱饵](#persona-and-bait) - [架构](#architecture) - [安全说明](#security-notes) - [故障排查](#troubleshooting) - [路线图](#roadmap) ## 功能特性 - **双重数据摄取:** OpenSSH 日志导出和 Cowrie JSON 日志。无供应商锁定,无需 SaaS 仪表板观察你的羞愧。 - **攻击者聚类:** 根据源 IP 对日志攻击者聚类,根据 HASSH 对 Cowrie 攻击者聚类。僵尸网络根据它们的 *气质*(HASSH + 用户名语料库)进行分类,而不仅仅是它们 NAT 弹弓落点。 - **意图分类:** 探测、代理、部署、混合或未知。“部署”类型是最刺激的——那是 `curl-bash-into-tmp` 的能量。 - **实时模式:** 从 Cowrie 和日志直接尾随到地球仪表板。实时碾压。 - **VPS 引导:** 安装 Cowrie,将真实 SSH 移动到私有端口,编写 systemd 单元,启动一切。一个命令,无需额外准备。 - **隐身角色:** Ubuntu 风格的横幅,假 `prod-app-server-01` 主机名,重新生成的主机密钥,这样你就不会被识别为“明显的蜜罐 #4892”。 - **诱饵文件:** 假的 `.env`、AWS 凭据、数据库凭据、部署密钥、nginx 站点。看起来像真,实为毒。 - **部署安全同步:** 通过 tar 经过 SSH,因为直接用 `scp` 传输 Go/Python 源代码会莫名其妙地变成 UTF-16。我们不会在这件事上欺骗你——详情见故障排查。 - **增量 Cowrie 数据摄取:** 跟踪文件偏移量 + inode,因此一个 100MB 的 `cowrie.json` 不会每 5 秒被重新扫描一遍。你的 I/O 会感谢我们。 - **幂等性:** 重新运行数据摄取会去重事件,而不是重复它们。过去的你不能欺负现在的你。 - **龙之主题:** 专为 SOC 设计的仪表板,带有侧边栏导航、Chakra Petch 字体、血红色/熔金配色方案、扁平面板、锐利几何。没有玻璃拟态——这是战时控制台。 - **仪表板部件:** 威胁等级表、攻击地理分布、暴力破解雷达、最常用凭据、实时攻击时间线。全部由实时 API 轮询提供数据。 - **一键上传至 MalwareBazaar:** 直接从载荷检查模态框将捕获的有效载荷分享到 abuse.ch。无需 CLI。 - **持久化地理缓存:** IP 地理位置结果存储在 SQLite 中,重启后依然保留。不再每次页面加载都显示“解析中…”。 ## 快速开始 在一台全新的 Ubuntu/Debian VPS 上。带上你的 SSH 密钥,把密码认证留在门外。 ``` git clone https://github.com/hett-patell/shardlure.git cd shardlure sudo python3 scripts/shardlure.py run ``` 安装程序替你考虑得很周到:如果找不到 `authorized_keys`,它拒绝将 SSH 从端口 22 移走;如果新的 sshd 配置未能通过 `sshd -t` 测试,它会自动回滚。不会出现“凌晨两点把自己锁在外面”的悲剧。 安装程序会询问以下设置: | 设置项 | 默认值 | 用途 | | --- | --- | --- | | 蜜罐端口 | `22` | 攻击者的 Cowrie 监听器 | | 管理员 SSH 端口 | `2222` | 真实 SSH,仅密钥 | | 仪表板端口 | `8080` | 实时仪表板 | 设置完成后: ``` sudo python3 scripts/shardlure.py status systemctl status cowrie shardlure-live ``` 在 `http://:8080` 打开仪表板。保持 `8080` 不暴露在公网——端口 `22` 是诱饵,你的仪表板不是诱饵,别搞混。
为了给仪表板增加额外保护,在运行 `web` 或 `live` 之前设置 `SHARDLURE_DASH_TOKEN`。
### 恢复设置
如果安装程序在 Cowrie/SSH 更改后中断:
```
sudo python3 scripts/shardlure.py finish
```
### 植入诱饵文件
```
sudo python3 scripts/shardlure.py plant-bait
```
在蜜罐 shell 中验证:
```
ls -la /opt/app/
cat /opt/app/.env
```
## 本地开发
```
git clone https://github.com/hett-patell/shardlure.git
cd shardlure
go mod tidy
make build
./shardlure ingest journal testdata/sample.journal --replace
./shardlure ingest cowrie /var/lib/shardlure/cowrie/var/log/cowrie/cowrie.json --replace
./shardlure actors
./shardlure actor show 188.84.0.25
./shardlure dashboard
./shardlure web :8080 --tailscale
./shardlure live :8080 --cowrie=/path/cowrie.json --tailscale
```
该二进制文件也可以启动 VPS 包装器:
```
sudo ./shardlure run
```
## 命令
### Go 命令行工具
| 命令 | 描述 |
| --- | --- |
| `ingest journal [--replace]` | 解析日志认证行并构建攻击者 |
| `ingest cowrie [--replace]` | 解析 Cowrie JSON 日志并构建攻击者 |
| `actors [--limit=N]` | 按最后出现时间列出攻击者 |
| `actor show ` | 显示一个攻击者的详细资料 |
| `dashboard`, `dash`, `tui` | 打开取证 TUI |
| `web [:8080] [--tailscale]` | 提供网络仪表板服务 |
| `live [:8080] [--cowrie=PATH] [--interval=5s] [--no-journal] [--tailscale]` | 运行实时数据摄取和仪表板 |
| `run` | 启动 VPS 包装器 |
| `status` | 打印事件和攻击者计数 |
| `ioc` | 导出一个小型 IOC 切片 |
| `share bazaar [--dry-run] [--limit N] [--sha SHA] [--since DURATION] [--anonymous] [--status]` | 将捕获的有效载荷上传至 MalwareBazaar (abuse.ch) |
| `version` | 打印版本 |
### 安装程序
| 命令 | 描述 |
| --- | --- |
| `run`, `setup` | 完整的 VPS 引导 |
| `finish` | 部分设置后恢复 |
| `plant-bait`, `bait` | 将诱饵文件注入 Cowrie 的虚拟文件系统 |
| `start`, `stop`, `status` | 管理服务 |
## CI
GitHub Actions 在推送和拉取请求时运行:
- `go mod verify`
- `go vet ./...`
- `go test -coverprofile=coverage.out ./...`
- `go build -o shardlure ./cmd/shardlure`
## 配置
安装程序写入 `/var/lib/shardlure/shardlure.yaml`。你也可以复制 `shardlure.yaml.example`:
```
data_dir: /var/lib/shardlure
admin_ips:
- 100.x.x.x # Tailscale IP or trusted admin workstation
ssh:
admin_port: 2222
honeypot_port: 22
dashboard:
port: 8080
# Change these to your VPS/operator location for the globe origin.
home_lat: 19.0760
home_lon: 72.8777
home_city: Mumbai
home_country: India
home_cc: IN
journal:
unit: ssh
cowrie:
home: /var/lib/shardlure/cowrie
json_log: /var/lib/shardlure/cowrie/var/log/cowrie/cowrie.json
```
使用 `-config /path/shardlure.yaml` 或 `SHARDLURE_CONFIG` 覆盖路径。
不要提交你的真实配置。`admin_ips` 可能泄露私有网络详情,例如 Tailscale IP。
## 部署
对于源文件,使用 tar 管道部署而不是直接使用 `scp`:
```
make deploy
# 或
bash scripts/push-sources.sh arm
```
在 VPS 上:
```
cd ~/ShardLure/shardlure
bash scripts/fix-go-sources.sh
sudo cp /tmp/shardlure /usr/local/bin/shardlure
sudo python3 scripts/shardlure.py finish
```
### 手动日志导出
```
sudo journalctl -u ssh -S "30 days ago" -o short-iso --no-pager \
| grep -E 'Invalid user|Failed password|Failed publickey|Accepted ' \
> ~/journal-ssh-30d.log
shardlure ingest journal ~/journal-ssh-30d.log --replace
```
## 角色与诱饵
`install/persona/` 包含一个简单的生产服务器伪装和诱饵文件。
| 虚拟路径 | 诱饵内容 |
| --- | --- |
| `/opt/app/.env` | 伪造的数据库、Redis、JWT、Stripe 和 AWS 值 |
| `/opt/app/config/database.yml` | 伪造的 Postgres 凭据 |
| `/home/ubuntu/.aws/credentials` | 伪造的 AWS 部署配置文件 |
| `/home/deploy/.ssh/id_rsa` | 伪造的部署密钥 |
| `/var/backups/nightly/db_credentials.txt` | 伪造的备份凭据 |
所有凭据都是故意伪造的。每次部署应重新生成诱饵值,这样多个蜜罐就不会因相同的诱饵而被识别。
## 威胁情报共享 (MalwareBazaar)
`shardlure share bazaar` 将捕获的有效载荷提交至 [abuse.ch MalwareBazaar](https://bazaar.abuse.ch/)。每次上传都会自动分类(ELF 架构、静态 vs 动态链接、脚本语言,以及少量知名家族指纹——RedTail、Mirai、Komari、Traffmonetizer、XMRig、c3pool)并打上标签。abuse.ch 的服务端分析(YARA、ClamAV、telfhash)会进一步添加重型签名。
**设置**
1. 在 注册并复制你的 Auth-Key。
2. 编辑 `shardlure.yaml`:
```yaml
intel:
bazaar:
api_key: "your-auth-key-here"
tags: ["shardlure", "honeypot"]
max_bytes: 33554432 # 32 MiB
freshness_days: 10 # abuse.ch fair-use: fresh samples only
```
3. 先试运行以检查哪些文件会被发送:
```bash
shardlure share bazaar --dry-run --limit 10
```
4. 当输出看起来正确后,去掉 `--dry-run`:
```
shardlure share bazaar --limit 10
```
重新运行是安全的:每个成功提交的 sha256(包括 `file_already_known` 响应)都会被记录在 `bazaar_uploads` 中,下次运行时会跳过。
你也可以从网络仪表板分享有效载荷:在任意捕获的工件上打开载荷检查模态框,点击 **分享到 MalwareBazaar**。为此需要在环境变量或 systemd 单元中设置 `SHARDLURE_BAZAAR_KEY`。红色团队选项卡的 MalwareBazaar 面板显示上传历史、家族分类和待处理计数。
**标志**
| 标志 | 默认值 | 含义 |
| --- | --- | --- |
| `--dry-run` | false | 打印分类和目的地而不实际 POST |
| `--limit N` | 10 | 限制每次运行的上传数量(0 = 不限制) |
| `--sha SHA` | – | 仅上传这个特定样本(绕过新鲜度检查) |
| `--since DUR` | 240h | 仅考虑在此时间窗口内捕获的工件 |
| `--anonymous` | false | 不署名提交,不与你的账户关联 |
| `--status` | – | 列出 `bazaar_uploads` 中的历史上传记录,而不是上传 |
**为什么选择 MalwareBazaar?** 它是蜜罐捕获的 Linux 恶意软件的事实标准共享中心。其提交政策(无 PUP/广告软件,无文件感染型病毒,样本不超过 10 天)在客户端(`share` 子命令尊重 `freshness_days`)和服务器端都得到执行。反复违规会导致账户被禁——参见 `internal/intel/bazaar/client.go` 中处理 `user_blacklisted` 致命状态并停止运行的逻辑。
## 架构
```
+-------------+ +--------------+ +-------------+
| Cowrie :22 | --> | cowrie.json | --> | |
+-------------+ +--------------+ | SQLite |
| actors | --> web :8080
+-------------+ +--------------+ | events | TUI
| journal ssh | --> | tail/seed | --> | |
+-------------+ +--------------+ +-------------+
```
- **日志攻击者:** `journal:`,根据用户名剧本聚类(他们尝试的用户名分布就是他们的个性)。
- **Cowrie 攻击者:** `cowrie:`,根据 HASSH 指纹(SSH 客户端身份的 TLS 性哈希)聚类。
- **管理员 IP:** 明确排除在聚类之外,这样你不会错误地将自己分类为“快速字典喷射”攻击者。
## 安全说明
- 在关闭原始会话**之前**,在另一个终端中验证 `ssh -p 2222 user@host`。“明天早上再修”的 SSH 故事通常结局不妙。
- 将仪表板放在 Tailscale 或其他私有网络上。将仪表板暴露在公网上就是我们所说的自我人肉搜索。
- 设置 `SHARDLURE_DASH_TOKEN` 以实现仪表板的纵深防御(常量时间比较,作为 `Authorization: Bearer …` 或 `X-ShardLure-Token` 发送)。
- 外部地理位置查询是可选加入的(`SHARDLURE_GEO_HTTP=1`)。建议使用 `SHARDLURE_IPAPI_KEY` 通过 ip-api Pro 进行 HTTPS 查询。仅在同时设置 `SHARDLURE_GEO_INSECURE_HTTP=1` 时使用明文 `http://ip-api.com`(会将攻击者 IP 泄漏到网络路径上)。
- Cowrie SSH 主机密钥在安装期间重新生成,这样你就不会与 Shodan 上其他每个懒惰的蜜罐共享相同的指纹。
- 保持诱饵凭据为假。真的,不要“几乎真实”地写如实凭据。
- SQLite 数据库自动设置为 `0600` 权限——其中可能包含攻击者提供的密码,这些密码有时会与他们*实际重复使用*的真实密码重叠。请像对待上膛的枪一样对待这个文件。
## 故障排查
### NUL 字节或 UTF-16 损坏
症状(你的编辑器/传输管道静默地重新编码了源文件):
- `SyntaxError: null bytes`
- `cannot execute binary file`
- `unexpected NUL in input`
这不是你的问题,而是工具的问题。解决方法:
```
bash scripts/push-sources.sh arm
```
在本项目中避免直接使用 `scp` 传输 Go/Python 源文件。我们还没到 `scp` 的时代。
### Cowrie PTY 或 Shell 失败
确保 `cowrie.cfg` 指向真正的 Cowrie 数据路径:
```
data_path = /var/lib/shardlure/cowrie/src/cowrie/data
state_path = /var/lib/shardlure/cowrie/var/lib/cowrie
[shell]
filesystem = /var/lib/shardlure/cowrie/src/cowrie/data/fs.pickle
```
### `plant-bait` 报告文件已存在
重新运行时无害。`do_load` 表示文件内容已加载。
### `fsctl ls` 不工作
`fsctl` 不实现 `ls`。通过蜜罐 shell 验证诱饵文件或检查 `honeyfs`:
```
ls /var/lib/shardlure/cowrie/honeyfs/opt/app/
```
## 路线图
- [x] Cowrie JSON 数据摄取(HASSH、命令、有效载荷)
- [x] 隐身角色和诱饵文件植入
- [x] 实时日志尾随和 Cowrie 追加数据摄取
- [x] 可配置的仪表板首页点
- [x] 增量 Cowrie 数据摄取(偏移量 + inode 跟踪,不再每 tick 扫描整个文件)
- [x] 幂等日志追加(对已有事件去重)
- [x] SIGINT/SIGTERM 优雅关闭(Ctrl-C 不再是战争罪行)
- [x] 数据库权限 0600 + sshd 配置自动回滚(如果重载失败)
- [x] MalwareBazaar 有效载荷共享(CLI + 一键仪表板上传)
- [x] 龙之主题——完整的 SOC 仪表板重新设计,带侧边栏导航
- [x] 仪表板部件:威胁等级表、地理分布、凭据、暴力破解雷达、实时时间线
- [x] 持久化地理缓存(基于 SQLite,重启后保留)
- [x] MalwareBazaar 仪表板部件(统计 + 上传历史 + 家族分类)
- [ ] GeoLite2 MMDB 富化(摆脱 ip-api.com 的速率限制)
- [ ] 实时 WebSocket 数据源(目前仪表板每 5 秒轮询一次,还不错但还有提升空间)
## FAQ(常见 vibe)
**问:这会让我的服务器更安全吗?**
答:略微。它将真实的 SSH 移到了私有端口(好事)并运行一个假的(有趣)。主要价值在于*情报*:你可以了解僵尸网络对看起来像你的机器做了什么。
**问:我会得到炫酷的地图吗?**
答:会。有一个地球仪,它会旋转。血红色的弧线汇聚到你家,就像你在 2007 年的黑客电影里一样。情报控制台有威胁等级表、暴力破解雷达和攻击地理分布面板。
**问:这个可以用于生产环境吗?**
答:它适用于“单 VPS、单人操作、跑在我的笔记本上”的场景。如果你想要一个集群,需要将 SQLite 前端换成支持多写入者的东西。欢迎 PR。
**问:为什么用 Go + Python?**
答:Cowrie 是 Python 的。数据摄取、分类器和仪表板用 Go 实现,因为在一核 VPS 上用 Python 解析一百万行日志简直是折磨。Python *只*用于安装程序。
**问:诱饵文件足够逼真吗?**
答:它们对机器人来说足够逼真。人类审计 30 秒就会发现伪造的 Stripe 密钥。这没问题——机器人是我们的客户。
## 许可证
MIT - 参见 [LICENSE](LICENSE)。
## Shard 生态系统
| 仓库 | 功能描述 |
|---|---|
| [ShardLure](https://github.com/hett-patell/ShardLure) | SSH 蜜罐 + 威胁情报仪表板 |
| [ShardC2](https://github.com/hett-patell/ShardC2) | Go 编写的红队 C2 框架 |
[ShardFlow](https://github.com/hett-patell/ShardFlow) | 二层局域网工作台(ARP、丢弃、限速) |
| [ShardShell](https://github.com/hett-patell/ShardShell) | PHP 后渗透 shell |
| [ShardPass](https://github.com/hett-patell/ShardPass) | 最小化 TOTP 认证器(Chrome MV3) |
| [ShardPet](https://github.com/hett-patell/ShardPet) | 像素宝可梦浏览器扩展 |
**SSH 蜜罐遥测的攻击者身份识别引擎。** 也就是说:它让机器人以为它们攻入了真正的生产服务器,然后完全曝光它们的攻击剧本。 ShardLure 根据**剧本指纹**(OpenSSH 日志行)或 **HASSH**(Cowrie 会话)对 SSH 机器人进行聚类,而不仅仅是 IP。同一个攻击者在三个不同的 IP 上?仍然是一个攻击者。不同攻击者使用同一个地址?不同行。核心思想是“用户名口味画像,而不是谁在门口”。它包含一个 VPS 安装程序、Cowrie 集成、实时数据摄取、取证 TUI 以及一个带有旋转地球仪的网络仪表板。 ``` attacker -> port 22 (Cowrie) -> JSON/journal ingest -> SQLite actors -> dashboard you -> port 2222 (SSH) -> real admin access via keys/Tailscale ``` ## 目录 - [功能特性](#features) - [快速开始](#quick-start) - [本地开发](#local-development) - [命令](#commands) - [配置](#configuration) - [部署](#deployment) - [角色与诱饵](#persona-and-bait) - [架构](#architecture) - [安全说明](#security-notes) - [故障排查](#troubleshooting) - [路线图](#roadmap) ## 功能特性 - **双重数据摄取:** OpenSSH 日志导出和 Cowrie JSON 日志。无供应商锁定,无需 SaaS 仪表板观察你的羞愧。 - **攻击者聚类:** 根据源 IP 对日志攻击者聚类,根据 HASSH 对 Cowrie 攻击者聚类。僵尸网络根据它们的 *气质*(HASSH + 用户名语料库)进行分类,而不仅仅是它们 NAT 弹弓落点。 - **意图分类:** 探测、代理、部署、混合或未知。“部署”类型是最刺激的——那是 `curl-bash-into-tmp` 的能量。 - **实时模式:** 从 Cowrie 和日志直接尾随到地球仪表板。实时碾压。 - **VPS 引导:** 安装 Cowrie,将真实 SSH 移动到私有端口,编写 systemd 单元,启动一切。一个命令,无需额外准备。 - **隐身角色:** Ubuntu 风格的横幅,假 `prod-app-server-01` 主机名,重新生成的主机密钥,这样你就不会被识别为“明显的蜜罐 #4892”。 - **诱饵文件:** 假的 `.env`、AWS 凭据、数据库凭据、部署密钥、nginx 站点。看起来像真,实为毒。 - **部署安全同步:** 通过 tar 经过 SSH,因为直接用 `scp` 传输 Go/Python 源代码会莫名其妙地变成 UTF-16。我们不会在这件事上欺骗你——详情见故障排查。 - **增量 Cowrie 数据摄取:** 跟踪文件偏移量 + inode,因此一个 100MB 的 `cowrie.json` 不会每 5 秒被重新扫描一遍。你的 I/O 会感谢我们。 - **幂等性:** 重新运行数据摄取会去重事件,而不是重复它们。过去的你不能欺负现在的你。 - **龙之主题:** 专为 SOC 设计的仪表板,带有侧边栏导航、Chakra Petch 字体、血红色/熔金配色方案、扁平面板、锐利几何。没有玻璃拟态——这是战时控制台。 - **仪表板部件:** 威胁等级表、攻击地理分布、暴力破解雷达、最常用凭据、实时攻击时间线。全部由实时 API 轮询提供数据。 - **一键上传至 MalwareBazaar:** 直接从载荷检查模态框将捕获的有效载荷分享到 abuse.ch。无需 CLI。 - **持久化地理缓存:** IP 地理位置结果存储在 SQLite 中,重启后依然保留。不再每次页面加载都显示“解析中…”。 ## 快速开始 在一台全新的 Ubuntu/Debian VPS 上。带上你的 SSH 密钥,把密码认证留在门外。 ``` git clone https://github.com/hett-patell/shardlure.git cd shardlure sudo python3 scripts/shardlure.py run ``` 安装程序替你考虑得很周到:如果找不到 `authorized_keys`,它拒绝将 SSH 从端口 22 移走;如果新的 sshd 配置未能通过 `sshd -t` 测试,它会自动回滚。不会出现“凌晨两点把自己锁在外面”的悲剧。 安装程序会询问以下设置: | 设置项 | 默认值 | 用途 | | --- | --- | --- | | 蜜罐端口 | `22` | 攻击者的 Cowrie 监听器 | | 管理员 SSH 端口 | `2222` | 真实 SSH,仅密钥 | | 仪表板端口 | `8080` | 实时仪表板 | 设置完成后: ``` sudo python3 scripts/shardlure.py status systemctl status cowrie shardlure-live ``` 在 `http://
对于源文件,使用 tar 管道部署而不是直接使用 `scp`:
```
make deploy
# 或
bash scripts/push-sources.sh arm
```
在 VPS 上:
```
cd ~/ShardLure/shardlure
bash scripts/fix-go-sources.sh
sudo cp /tmp/shardlure /usr/local/bin/shardlure
sudo python3 scripts/shardlure.py finish
```
### 手动日志导出
```
sudo journalctl -u ssh -S "30 days ago" -o short-iso --no-pager \
| grep -E 'Invalid user|Failed password|Failed publickey|Accepted ' \
> ~/journal-ssh-30d.log
shardlure ingest journal ~/journal-ssh-30d.log --replace
```
## 角色与诱饵
`install/persona/` 包含一个简单的生产服务器伪装和诱饵文件。
| 虚拟路径 | 诱饵内容 |
| --- | --- |
| `/opt/app/.env` | 伪造的数据库、Redis、JWT、Stripe 和 AWS 值 |
| `/opt/app/config/database.yml` | 伪造的 Postgres 凭据 |
| `/home/ubuntu/.aws/credentials` | 伪造的 AWS 部署配置文件 |
| `/home/deploy/.ssh/id_rsa` | 伪造的部署密钥 |
| `/var/backups/nightly/db_credentials.txt` | 伪造的备份凭据 |
所有凭据都是故意伪造的。每次部署应重新生成诱饵值,这样多个蜜罐就不会因相同的诱饵而被识别。
## 威胁情报共享 (MalwareBazaar)
`shardlure share bazaar` 将捕获的有效载荷提交至 [abuse.ch MalwareBazaar](https://bazaar.abuse.ch/)。每次上传都会自动分类(ELF 架构、静态 vs 动态链接、脚本语言,以及少量知名家族指纹——RedTail、Mirai、Komari、Traffmonetizer、XMRig、c3pool)并打上标签。abuse.ch 的服务端分析(YARA、ClamAV、telfhash)会进一步添加重型签名。
**设置**
1. 在
## 路线图
- [x] Cowrie JSON 数据摄取(HASSH、命令、有效载荷)
- [x] 隐身角色和诱饵文件植入
- [x] 实时日志尾随和 Cowrie 追加数据摄取
- [x] 可配置的仪表板首页点
- [x] 增量 Cowrie 数据摄取(偏移量 + inode 跟踪,不再每 tick 扫描整个文件)
- [x] 幂等日志追加(对已有事件去重)
- [x] SIGINT/SIGTERM 优雅关闭(Ctrl-C 不再是战争罪行)
- [x] 数据库权限 0600 + sshd 配置自动回滚(如果重载失败)
- [x] MalwareBazaar 有效载荷共享(CLI + 一键仪表板上传)
- [x] 龙之主题——完整的 SOC 仪表板重新设计,带侧边栏导航
- [x] 仪表板部件:威胁等级表、地理分布、凭据、暴力破解雷达、实时时间线
- [x] 持久化地理缓存(基于 SQLite,重启后保留)
- [x] MalwareBazaar 仪表板部件(统计 + 上传历史 + 家族分类)
- [ ] GeoLite2 MMDB 富化(摆脱 ip-api.com 的速率限制)
- [ ] 实时 WebSocket 数据源(目前仪表板每 5 秒轮询一次,还不错但还有提升空间)
## FAQ(常见 vibe)
**问:这会让我的服务器更安全吗?**
答:略微。它将真实的 SSH 移到了私有端口(好事)并运行一个假的(有趣)。主要价值在于*情报*:你可以了解僵尸网络对看起来像你的机器做了什么。
**问:我会得到炫酷的地图吗?**
答:会。有一个地球仪,它会旋转。血红色的弧线汇聚到你家,就像你在 2007 年的黑客电影里一样。情报控制台有威胁等级表、暴力破解雷达和攻击地理分布面板。
**问:这个可以用于生产环境吗?**
答:它适用于“单 VPS、单人操作、跑在我的笔记本上”的场景。如果你想要一个集群,需要将 SQLite 前端换成支持多写入者的东西。欢迎 PR。
**问:为什么用 Go + Python?**
答:Cowrie 是 Python 的。数据摄取、分类器和仪表板用 Go 实现,因为在一核 VPS 上用 Python 解析一百万行日志简直是折磨。Python *只*用于安装程序。
**问:诱饵文件足够逼真吗?**
答:它们对机器人来说足够逼真。人类审计 30 秒就会发现伪造的 Stripe 密钥。这没问题——机器人是我们的客户。
## 许可证
MIT - 参见 [LICENSE](LICENSE)。
## Shard 生态系统
| 仓库 | 功能描述 |
|---|---|
| [ShardLure](https://github.com/hett-patell/ShardLure) | SSH 蜜罐 + 威胁情报仪表板 |
| [ShardC2](https://github.com/hett-patell/ShardC2) | Go 编写的红队 C2 框架 |
[ShardFlow](https://github.com/hett-patell/ShardFlow) | 二层局域网工作台(ARP、丢弃、限速) |
| [ShardShell](https://github.com/hett-patell/ShardShell) | PHP 后渗透 shell |
| [ShardPass](https://github.com/hett-patell/ShardPass) | 最小化 TOTP 认证器(Chrome MV3) |
| [ShardPet](https://github.com/hett-patell/ShardPet) | 像素宝可梦浏览器扩展 |标签:AbuseIPDB, ADCS攻击, AMSI绕过, Ask搜索, CISA项目, Cloudflare, DNS解析, EVTX分析, Go语言, GreyNoise, HASSH, MITRE ATT&CK, OpenSSH, SQLite, SSH蜜罐, STIX 2.1, TUI界面, VirusTotal, VPS部署, Web仪表盘, 云存储安全, 威胁情报, 威胁检测, 开发者工具, 开源项目, 情报共享, 指标导出, 插件系统, 攻击溯源, 攻击者指纹, 数据展示, 日志审计, 程序破解, 红队, 网络安全, 网络扫描, 自动化告警, 蜜罐, 证书利用, 软件分析, 进程注入, 逆向工具, 隐私保护