Mrutyunjayamuduli1998/telegram-cti-monitor
GitHub: Mrutyunjayamuduli1998/telegram-cti-monitor
一款零成本的 Telegram 威胁情报监控工具,支持实时频道监听、关键词与 IOC 匹配告警,并自动将情报推送至 MISP 平台。
Stars: 0 | Forks: 0
# Telegram CTI 监控
用于网络威胁情报(CTI)的实时 Telegram 频道监控器。
摄取消息,匹配关键字和 IOC,并将命中结果推送到 MISP。

## 架构
```
Telegram Channels
│
▼
monitor.py ← Telethon listener (real-time + history backfill)
│
├──► alerter.py ← Keyword + regex IOC matching engine
│
├──► database.py ← SQLite storage (messages + alerts)
│
└──► misp_push.py ← Creates MISP events with IOC attributes
```
## 设置 (WSL2)
### 1. 安装依赖
```
cd ~/telegram-cti-monitor
pip install -r requirements.txt
```
### 2. 获取 Telegram API 凭证
1. 访问 https://my.telegram.org
2. 登录您的 Telegram 账号
3. 点击 **API Development Tools**
4. 创建一个新应用(名称/描述可任意填写)
5. 复制您的 **App api_id** 和 **App api_hash**
### 3. 获取您的 MISP auth key
1. 在浏览器中打开您的 MISP 实例
2. 进入 **Event Actions → Automation**
3. 复制页面顶部的 **Automation Key**
### 4. 配置
编辑 `config.yaml` 并填写:
- `telegram.api_id`
- `telegram.api_hash`
- `misp.url`(例如 `http://localhost`)
- `misp.auth_key`
### 5. 添加要监控的频道
编辑 `channels.txt` —— 每行一个频道:
```
@vxunderground
@darkwebinformer
@cybersecuritynews
```
您必须已经是私有频道的**成员**。
对于公开频道,监控器会自动加入。
### 6. 运行
```
python monitor.py
```
**首次运行:** Telethon 会要求您输入电话号码和发送到您
Telegram 应用的登录验证码。这将创建一个本地会话文件,因此您
只需执行一次此操作。
## 命令
```
# 开始监控
python monitor.py
# 使用不同的 config 或 channels 文件
python monitor.py --config myconfig.yaml --channels mychannels.txt
# 从数据库打印 stats 并退出
python monitor.py --stats
```
## 工作原理
### 启动时
- 使用您的 API 凭证连接到 Telegram
- 解析 channels.txt 中的每个频道
- 将每个频道最近的 100 条消息回填到 SQLite
- 启动实时监听器
### 每次收到新消息时
1. 根据所有关键字类别和 IOC 正则表达式模式扫描文本
2. 如果不匹配 —— 静默存储在数据库中
3. 如果匹配:
- 记录到终端(带有颜色编码)
- 保存到 SQLite 的 `alerts` 表中
- 创建 MISP 事件,包含:
- 来源元数据(频道、日期)
- 原始消息文本
- 触发的关键字
- 任何提取的 IOC 作为类型化属性(ip-dst, sha256, domain 等)
- 标签:tlp:amber, type:osint, source:telegram
- 向您的 Telegram(Saved Messages)发送一条摘要私信
### 速率限制
在消息之间应用可配置的延迟(`rate_limit_seconds`)
以避免触及 Telegram 的 API 限制。默认值为 1 秒。
## 关键字类别 (config.yaml)
| 类别 | 捕获内容 |
|-----------------|------------------------------------------------------|
| threat_actors | APT 组织名称、勒索软件团伙名称 |
| malware | 恶意软件家族名称、工具名称(Cobalt Strike 等) |
| vulnerabilities | CVE 编号、RCE、zero-day、PoC 相关提及 |
| data_leaks | 凭证转储、初始访问出售、组合列表 |
| ransomware | 勒索、泄露站点、双重勒索、受害者相关提及 |
| ioc_patterns | 正则表达式:IPv4、域名、MD5/SHA1/SHA256 哈希值 |
在 `config.yaml` 中自由添加/删除关键字 —— 无需修改代码。
## 数据库
SQLite 文件:`cti_monitor.db`
两张表:
- `messages` —— 摄取的每一条消息
- `alerts` —— 每一个关键字/IOC 命中记录,关联至 MISP 事件的 UUID
查询示例:
```
-- All ransomware alerts today
SELECT channel, matched_keyword, message_text, created_at
FROM alerts
WHERE category = 'ransomware'
AND date(created_at) = date('now')
ORDER BY created_at DESC;
-- Channels with the most alerts
SELECT channel, COUNT(*) as hits
FROM alerts
GROUP BY channel
ORDER BY hits DESC;
-- All MISP-linked alerts
SELECT * FROM alerts WHERE misp_event_id IS NOT NULL;
```
## 重要提示
- 尽可能**使用专门的 Telegram 账号** —— 避免使用您的
个人账号进行大规模监控,以防止被封禁
- 会话文件(`cti_monitor.session`)使您保持登录状态 ——
请妥善保管,切勿分享
- 切勿将 `config.yaml` 提交到 GitHub —— 它包含了您的 API 密钥
- MISP 事件默认以 `distribution: 0`(仅本组织)创建
- 历史回填仅存储到 SQLite —— 它不会推送到 MISP
以避免首次运行时导致您的实例超载
## 项目结构
```
telegram-cti-monitor/
├── monitor.py Core monitor and entry point
├── alerter.py Keyword and IOC matching engine
├── misp_push.py MISP event creation
├── database.py SQLite storage layer
├── config.yaml Configuration (fill this in)
├── channels.txt Channels to monitor
├── requirements.txt Python dependencies
└── README.md This file
```
标签:Python, Telegram, 威胁情报, 实时处理, 开发者工具, 数据泄露, 无后门, 网络安全, 逆向工具, 隐私保护