controllocked/TeleScope
GitHub: controllocked/TeleScope
TeleScope 是一款针对 Telegram 平台的实时威胁情报与 OSINT 检测平台,可将匹配到的威胁信号结构化推送至 SIEM 及事件响应系统。
Stars: 7 | Forks: 1

# Telescope
**针对 Telegram 的威胁情报与 OSINT 检测平台。**








Telescope 会监控你已有权限访问的 Telegram 频道,实时应用你的
规则,并将结构化的匹配结果推送到你的 SIEM、聊天应用或
工单处理 pipeline 中。它专为将 Telegram 视为
一等情报收集来源的安全团队而构建——涵盖 0-day 讨论、初始访问经纪人(IAB)挂牌、
勒索软件泄露站点、CVE 讨论、凭证泄露以及恶意软件即服务
生态系统。
它是**向**你的
SIEM(Splunk、Elastic、Sentinel)或事件响应栈(MISP、TheHive、
PagerDuty、Slack)输送数据的收集与检测层。
## 为什么选择 Telegram
Telegram 在 2025 年 3 月突破了 **10 亿月活跃用户**,并且继续
以每天约 250 万新用户的速度增长,截至 2026 年日活跃用户达到
**约 5 亿**。仅此规模就使其成为 Tier-1 收集源——但对于威胁情报而言,
供给侧发生的更具决定性的转变。
在 **2025 年 BreachForums 被查封**以及传统地下论坛(RaidForums、RAMP 等)面临更广泛打击之后,犯罪活动几乎在一夜之间转移到了
Telegram——频道和机器人在几周内填补了真空。
尽管 Telegram 在 2025 年移除了 **4350 万个**频道和群组,但相同的
操作者会在几天内以新的用户名重新出现。来自
[Flare](https://flare.io/learn/resources/blog/the-undergrounds-favorite-messenger-telegrams-reign-continues/)、
[CYFIRMA](https://www.cyfirma.com/research/telegram-as-the-new-operational-layer-of-cyber-threat-activity/)
和 [The Hacker News](https://thehackernews.com/expert-insights/2026/03/telegrams-crackdown-changed-how-threat.html) 的行业共识
是,Telegram 已成为**网络犯罪生态系统的
操作层**——它并非暗网的替代品,而是其主要的
实时通信和商业平台。
具体来说,Telegram 汇聚了 TI 团队关注的各种活动:
- **初始访问经纪人(IAB)**发布企业 VPN/RDP/AD 访问权限挂牌,
附带受害者所属行业、收入和地理位置特征
- **勒索软件团伙**(LockBit、Cl0p、BlackCat、Akira、RansomHub 等)
运营泄露站点公告频道和招募附属成员的机器人
- **漏洞市场讨论**——较低层级的直接出售报价、经纪人
收购帖子,以及对公开 PoC / 在野
利用的讨论。(Telescope 捕获的是商业级别的讨论层,而非国家级
的私下交易。)
- **窃密日志经济**——按企业 SSO 目标(Okta、Azure AD、M365、AWS、Salesforce)分类的
RedLine、Lumma、Vidar、Stealc 日志
- **凭证转储与组合列表**——UHQ/HQ 组合列表、新数据库
泄露、会话/cookie 交易市场(Genesis Market 关闭后)
- **钓鱼基础设施**——钓鱼工具包销售、AitM 面板(EvilGinx、Tycoon 2FA、
EvilProxy)、防弹 SMTP、短信钓鱼工具包、域名抢注协调
- **恶意软件即服务**——RedLine/Lumma 订阅服务、Cobalt Strike
破解版、FUD 加密器服务、RAT 面板
- **供应链入侵二次传播**——关于恶意
npm/PyPI 包、维护者账户劫持、植入木马的 GitHub 仓库的讨论。
(初步发现通常发生在 [Socket](https://socket.dev/)、
[Phylum](https://www.phylum.io/)、Snyk、GuardDog 和 Unit 42——例如,
Socket 在 2025 年将 1700 多个恶意包归因于 DPRK 行为者。
Telegram 是二次放大平台;Telescope 捕获的是
Telegram 上的讨论,而非原始检测。)
三个结构特性使 Telegram 对双方(恶意行为者和防御者)都具有特别的吸引力:
- **广播优先格式**——可以通过 API 抓取公共频道,
任何拥有链接的人都可以加入,不像
Discord 或封闭论坛那样需要邀请。这正是使大规模 TI
收集成为可能的原因。
- **机器人生态系统与自动化**——托管机器人、市场列表机器人、
附属成员入职机器人完全在 Telegram 内部运行,因此完整的
交易链路都是可观察的。
- **持久的表面积**——即使在 2025 年进行了 **4350 万次审核操作**,行为者也能通过快速重新创建来持久存在。市场并没有
分散到竞争对手那里;它依然留在 Telegram。
客观地讲:Telegram 是**主要的 TI 来源,但不是唯一的来源**。它
与暗网市场、粘贴网站和传统的地下论坛并存。Telescope 的输出会输送到你的 SIEM 或 TIP
([Splunk](https://splunkbase.splunk.com/)、[MISP](https://www.misp-project.org/)、
[TheHive](https://thehive-project.org/) 等),在那里它将与你
其他来源的信号汇聚。
## 它的功能
- 对跨越多个频道的传入消息进行**实时规则匹配**
- **基于标签的严重性**(`severity:critical|high|medium|low`)和自由格式
分类(`category:`、`actor:`、`family:`、`mitre:`,任何你想要的)
- **三种投递路径**:Telegram 收藏夹、Telegram 机器人或通用的
**HTTP webhook**,支持结构化 JSON(Slack / Discord / Splunk HEC / Sentinel
/ TheHive / 自定义接收端)
- 针对最常见 TI 场景的**精选威胁包**(见下文)
- 每次匹配的 **SQLite 审计日志**——`id`、来源、规则、原因、标签、
摘要、永久链接——可导出为 JSON 或 CSV
- **内容去重**,确保二次传播和复制粘贴不会生成
重复工单
- **论坛话题感知**——监控大型超级群组中的单个话题
- 启动时进行**补漏扫描**,确保你不会错过停机期间的匹配
- **TUI**(`telescope config`),无需修改 JSON 即可编辑规则、来源和通知
设置
## 用例
| 用例 | 威胁包 |
|---|---|
| 漏洞市场与 0-day 讨论(出售报价、经纪人、公开 PoC、0-click) | `examples/threat-packs/0day-marketplace.json` |
| 初始访问经纪人(IAB)挂牌(VPN/RDP/AD/窃密日志访问权限) | `examples/threat-packs/iab-listings.json` |
| 勒索软件泄露站点与附属活动(LockBit、Cl0p、BlackCat、Akira、RansomHub 等) | `examples/threat-packs/ransomware-leaks.json` |
| CVE 讨论与在野利用信号(针对你的技术栈) | `examples/threat-packs/cve-chatter.json` |
| 凭证转储与组合列表泄露(UHQ/HQ 组合、数据库泄露、会话/cookie 店铺) | `examples/threat-packs/credential-leaks.json` |
| 恶意软件即服务(窃密木马、加载器、加密器、RAT) | `examples/threat-packs/malware-raas.json` |
| 钓鱼基础设施(工具包、AitM/MFA-bypass、SMTP、短信钓鱼、域名抢注) | `examples/threat-packs/phishing-infrastructure.json` |
| 品牌 / 高管 / 客户数据监控(模板 - 填入你的标识符) | `examples/threat-packs/brand-monitoring.json` |
| 供应链入侵二次传播(npm / PyPI / GitHub) | `examples/threat-packs/supply-chain-compromise.json` |
| ICS / SCADA / OT / 关键基础设施定向攻击 | `examples/threat-packs/ics-scada.json` |
| 非 TI 监控(招聘、故障、诈骗、审核) | `examples/general-purpose-rules.json` |
每个包都是一个部分配置——将这些规则放入你的 `config.json` 的
`rules[]` 数组中(或通过 TUI 合并它们)。
## 架构

Telethon 使用你自己的用户会话通过 MTProto 连接到 Telegram,因此
Telescope 只能看到你的账户已经加入的频道。每一条传入的
消息都会流经一个小型 SIEM 风格的核心:源白名单 →
单源幂等性 → 多信号规则引擎(带有 `severity:` 和
`mitre:` 标签)→ 内容去重 → SQLite 中的只追加审计日志 →
通知器。三个可插拔的投递适配器(收藏夹、机器人、Webhook)
位于单个 `NotifierPort` 之后,因此结构化的匹配结果可以扇出到
你的 SIEM、MISP/TheHive 或任何 HTTP endpoint,而无需改动核心。
三个显式的分层使检测核心独立于 Telegram 和 SQLite:
```
src/core/ - rules engine, dedup, message processor, models
src/adapters/ - Telegram (Telethon) mapping/notifiers, SQLite storage, webhook
src/app.py - CLI, wiring, lifecycle
src/frontend/ - Textual TUI (rules editor, data browser, settings)
```
添加新的投递渠道 = 在 `src/adapters/` 中添加一个实现
`NotifierPort` 的文件。添加新的存储 = 添加一个实现 `StoragePort` 的文件。
## 安装
对于 Linux
```
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip install -e .
```
对于 Windows
```
python -m venv .venv
.\.venv\Scripts\activate
pip install -r requirements.txt
pip install -e .
```
## 配置
1. 复制并填写 env 文件:
cp .env.example .env
从 获取 `API_ID` 和 `API_HASH`。
2. 复制示例配置并进行编辑:
cp config.example.json config.json
`config.json` 已被 gitignore 忽略,因此你的来源和 token 永远不会离开你的本地机器。
最小化配置结构:
{
"sources": [
{ "source_key": "@example_channel", "alias": "Example", "enabled": true }
],
"rules": [
{
"name": "CVE mention",
"regex": ["\\bCVE-\\d{4}-\\d{4,7}\\b"],
"tags": ["severity:medium", "category:cve"],
"enabled": true
}
],
"notifications": { "notification_method": "saved_messages", "snippet_chars": 400 },
"dedup": { "mode": "per_source", "only_on_match": true, "ttl_days": 30 },
"catch_up": { "enabled": true, "messages_per_source": 50 }
}
3. (可选)合并一个或多个威胁包:
cat examples/threat-packs/cve-chatter.json
# 将 rules[] 条目复制到 config.json 的 rules[] 数组中
或者使用 TUI:`telescope config` → Rules 标签页 → Add rule。
### 源标识
| 格式 | 使用场景 |
|---|---|
| `@channel_username` | 公共频道 / 群组(小写) |
| `chat_id:-100123…` | 私有超级群组 / 频道 |
| `@channel#topic:42` | 公共聊天中的单个论坛话题 |
| `chat_id:-100…#topic:42` | 私有聊天中的单个论坛话题 |
要为你已归档的私有群组查找 `chat_id:` 值:
```
telescope discover
```
### 标签约定
标签是自由格式的字符串,但可以识别两个前缀:
- `severity:critical|high|medium|low` → 在告警标题中添加 `[CRITICAL]` / `[HIGH]` 等
- 其他所有标签(`category:cve`、`actor:lockbit`、`family:lumma`、
`mitre:T1566`、`priority:p1`)会传播到告警、SQLite 行和
webhook payload 中——但不会触发任何内置行为
这使得 schema 保持扁平化,并让每个团队决定自己的分类法。
## 运行
```
telescope run
```
## TUI

```
telescope config
```
标签页:
- **Sources** - 添加/编辑/禁用频道,设置别名
- **Rules** - 带有内联测试器的完整规则编辑器(粘贴文本,查看匹配的规则)
- **Settings** - 去重、通知方式、webhook URL/headers/timeout、日志记录
- **** - 浏览历史匹配记录,按标签过滤(例如 `severity:critical`),
导出为 JSON/CSV
## 投递:webhook 集成
将 `notification_method` 设置为 `webhook` 并配置目标:
```
"notifications": {
"notification_method": "webhook",
"webhook_url": "https://hooks.example.com/intake",
"webhook_headers": { "Authorization": "Bearer ..." },
"webhook_timeout": 5.0,
"snippet_chars": 400
}
```
每个匹配项都作为 JSON 进行 POST:
```
{
"source_key": "@channel",
"source_alias": "Underground channel",
"chat_id": 1234567890,
"message_id": 42,
"date": "2026-06-04T10:15:00+00:00",
"rule_name": "Initial Access Broker listings",
"reason": "keyword(s): vpn access for sale\nregex: \\b(vpn|rdp)...",
"tags": ["severity:critical", "category:iab"],
"text_snippet": "Selling Fortinet VPN access to a US manufacturing company...",
"text": "Selling Fortinet VPN access...",
"permalink": "https://t.me/c/1234567890/42"
}
```
### 集成方案
- **Splunk HEC**:将 `webhook_url` 指向 `https://splunk.example/services/collector/event`
并在 `webhook_headers` 中设置 `Authorization: Splunk `。
- **Slack**:直接使用 Slack webhook URL。(要实现更丰富的格式,请通过一个
小型桥接器运行 webhook,将 Telescope 的 payload 映射到 Slack blocks。)
- **MISP / TheHive**:转发到一个小型中继器(例如 n8n、Pipedream 或 30 行代码的
Flask 应用),将 Telescope 的 JSON 映射到 MISP 事件或 TheHive 告警。
- **自定义**:任何接受 JSON POST 的 HTTP endpoint 都可以工作。
### Telegram 投递(替代方案)
- `notification_method: "saved_messages"` - 发送到你自己的 Saved Messages
(零配置,适合单人使用)。
- `notification_method: "bot"`,并在 `.env` 中设置 `BOT_API` 以及
设置 `notifications.bot_chat_id` - 通过 Telegram 机器人路由(适合
团队频道)。
## 会话登录
Telescope 使用你的**用户会话**(而非机器人 token)进行身份验证,以便它可以
读取你个人账户所在的频道。首次运行时,它会通过 Telethon 创建一个本地
`.session` 文件。
登录方式:
- **二维码**(默认,推荐)
- **手机验证码**(短信 / Telegram 验证码)
可选的环境变量覆盖:
- `LOGIN_METHOD=qr` 或 `LOGIN_METHOD=phone`
- `PHONE=+1234567890`
- `2FA=your_password`
如果短信验证码未收到(在某些地区这是已知问题),请使用二维码流程。
## 路线图
可能的补充功能,由社区反馈驱动:
- STIX 2.1 / MISP 事件导出格式
- 可插拔的富化钩子(GeoIP、WHOIS、Tor onion 查询)
如果你需要其中某项功能,请提交一个 issue 并说明你的使用场景。
## 许可证
Apache-2.0。详见 `LICENSE`。使用受 [`ETHICAL_USE.md`](ETHICAL_USE.md) 约束。
标签:ESC4, OSINT, Python, Telegram监控, 云计算, 威胁情报, 实时处理, 开发者工具, 无后门, 规则引擎, 逆向工具