前言
好久不见,今天来聊聊威胁情报-telegram消息监控
一般需要监控的威胁情报来源包含以下几个方面:
1、暗网论坛和交易网站
2、黑客论坛
3、聊天群组
4、公共渠道
而需要监控的内容大多都是0day情报、数据泄漏事件等,由于上述内容质量参差不齐,更有内容纯粹是诈骗,所以针对相关数据来源需要进行二次鉴别,并只能做为信息参考。此外,如果有相关情报产生,厂商也应第一时间进行排查,确定消息真伪,并做好防护。
telegram消息监控
telegram上存在很多数据、漏洞、shell贩卖的行为,虽然消息大多都是假的,但是如果我们能对相关群聊进行监控,发现有相关行为,提取关键内容发送到指定地点,可以大大帮助我们做好威胁情报支撑工作。经过查询,telegram 机器人和一些库都可以实现群聊监控功能,这里使用真实用户+telethon库。
1.前置准备
- 访问my.telegram.org,登陆后创建app,获取app api_id和app api_hash
- 下载库:pip install telethon
2.脚本编写
from telethon import TelegramClient, events from telethon.errors.rpcerrorlist import AuthKeyError from telethon.sync import TelegramClient as SyncTelegramClient api_id = xxxx api_hash = 'xxxxxx' session_name = 'my_session' chat_names = ['Test', 'groupid'] keywords = ['123', 'keyword2'] try: client = TelegramClient(session_name, api_id, api_hash) client.start() except AuthKeyError: client = SyncTelegramClient(session_name, api_id, api_hash) client.start() @client.on(events.NewMessage(chats=chat_names)) async def handle_new_message(event): message_text = event.message.message for keyword in keywords: if keyword in message_text: chat = await event.get_chat() title = chat.title sender = await event.get_sender() sender_name = sender.first_name print(f"Keyword '{keyword}' found in message from {sender_name} in chat '{title}': {message_text}") print(f"Listening for messages containing {keywords} in chats {chat_names}...") client.run_until_disconnected()
第一次执行时会让你登陆认证,注意这里手机号是需要加国际区号的,例如+86
最终效果如下图:
Tips:脚本最好放在国外服务器上跑,本地加代理会由于网络不稳定导致脚本中断
总结
这只是一个简单的脚本,我们通过telethon还能做其他很多的事情,另外还有一种监控方式是通过机器人进行监控,但是不推荐,具体原因感兴趣可以去踩踩坑。