Mrutyunjayamuduli1998/telegram-cti-monitor

GitHub: Mrutyunjayamuduli1998/telegram-cti-monitor

一款零成本的 Telegram 威胁情报监控工具,支持实时频道监听、关键词与 IOC 匹配告警,并自动将情报推送至 MISP 平台。

Stars: 0 | Forks: 0

# Telegram CTI 监控 用于网络威胁情报(CTI)的实时 Telegram 频道监控器。 摄取消息,匹配关键字和 IOC,并将命中结果推送到 MISP。 ![CTI Monitor 控制台](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/ef9ff5d001120309.png) ## 架构 ``` 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, 威胁情报, 实时处理, 开发者工具, 数据泄露, 无后门, 网络安全, 逆向工具, 隐私保护