Criando um Bot de Exploits e Notificações de Segurança no Telegram
Introdução
Desenvolver um bot no Telegram não apenas aprimora suas habilidades em desenvolvimento de software, mas também pode ser uma maneira eficaz de aprofundar seus conhecimentos em segurança da informação. Neste artigo, vou compartilhar o processo de criação de um bot no Telegram que busca exploits e envia notificações sobre vulnerabilidades de segurança recentemente encontradas, e como esse projeto me ajudou a melhorar minhas habilidades na área de Segurança da Informação.
Por que criar um bot de exploits?
Sou o tipo de pessoa que gosta de aprender fazendo. Acredito que a melhor maneira de entender um conceito é aplicá-lo na prática, e pessoalmente tinha uma certa dificuldade em entender codificação de exploits, como funcionam, quem os reporta e como são corrigidos. Você pode se perguntar, mas por que não simplesmente pesquisar no Google? ou no ChatGPT? A resposta é tão simples que pode ser resumida em uma pergunta: “E qual a graça disso?”. Então tive a ideia de desenvolver uma ferramenta que pudesse não apenas facilitar o acesso a informações sobre vulnerabilidades e exploits, mas também fornecer notificações sobre ameaças em tempo real.
Com esse objetivo em mente, criei um bot de Exploits e Notificações de Segurança. Ele permite que os usuários busquem informações sobre vulnerabilidades específicas usando o identificador CVE (Common Vulnerabilities and Exposures) e também enviem notificações sobre as vulnerabilidades mais recentes.
O que o bot faz?
- /exploit
<CVE-ID>
<LANGUAGE>
: Pesquisa detalhes de uma vulnerabilidade específica por ID, incluindo descrição e referências.<CVE-ID>
é obrigatório.<LANGUAGE>
é opcional (padrão é inglês).
- /recent
<LANGUAGE>
: Retorna uma lista das vulnerabilidades mais recentes disponíveis.<LANGUAGE>
é opcional (padrão é inglês).
- /start: Exibe uma mensagem de boas-vindas e instruções de uso.
Talvez so de olhar o que o bot pode fazer, você já tenha percebido o porquê de eu ter escolhido faze-lo. Além de ser obrigado a entender como os exploits são reportados, corrigidos e divulgados, eu também tive que aprender a trabalhar com uma API de segurança, que consulta informações de vulnerabilidades de bases como a CVE Details ou CIRCL (Computer Incident Response Center Luxembourg), aprimorar minhas habilidades em Python e entender melhor como o Telegram funciona, como fazer traduções usando API do google Gratuitamente etc.
Vamos ao código
Para criar o bot, utilizei a biblioteca python-telegram-bot
, que facilita a interação com a API do Telegram. Aqui está um trecho do código que lida com a pesquisa de exploits por ID:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# src/commands/entry_points.py
async def exploit(update: Update, context: CallbackContext):
translator = Translator()
if context.args:
language = context.args[1] if len(context.args) > 1 else "en"
vuln_id = context.args[0]
logging.info(
f"Searching for exploit information for {vuln_id}, language: {language}"
)
info = "Searching for exploit information"
if language != "en":
translated_info = translator.translate(info, dest=language).text
await update.message.reply_text(f"🔍 {translated_info} ...")
else:
await update.message.reply_text(f"🔍 {info} ...")
result = await search_exploit(vuln_id, language)
logging.info(f"Search result: {result}")
await update.message.reply_text(result, parse_mode=ParseMode.HTML)
else:
logging.warning("No vulnerability ID provided.")
error_msg = "Please provide a vulnerability ID (eg: /exploit CVE-2021-34527)."
if language != "en":
translated_result = translator.translate(error_msg, dest=language).text
await update.message.reply_text(f"❌ {translated_result}")
else:
await update.message.reply_text(f"❌ {error_msg}")
Neste trecho, o bot recebe um comando /exploit
seguido de um identificador CVE e, opcionalmente, um idioma. Ele então chama a função search_exploit
para buscar informações sobre a vulnerabilidade e retorna os resultados ao usuário.
Como executar o bot
Leia o README.md do projeto para saber mais detalhes de como executar o bot. Basicamente você precisa de um token do Telegram. Você pode obter um token criando um novo bot no BotFather e seguindo as instruções.
Como o Projeto Melhorou Minhas Habilidades em Segurança
O desenvolvimento deste bot trouxe uma série de benefícios para minhas skills em Segurança da Informação:
Aprimoramento em Monitoramento de Vulnerabilidades: Ao usar o bot para verificar as vulnerabilidades mais recentes, fiquei mais familiarizado com a dinâmica dos sistemas de monitoramento. Isso é crucial para antecipar possíveis falhas em sistemas de produção.
Conhecimento de Exploits e CVEs: Trabalhar diretamente com a API de CVEs me deu um conhecimento mais profundo sobre como essas vulnerabilidades são categorizadas e publicadas. Isso me permite estar mais atento a vulnerabilidades críticas e seus respectivos patches.
Automatização de Tarefas de Segurança: O bot me ajudou a entender a importância de automatizar notificações e respostas a incidentes, algo essencial para um profissional de segurança que lida com um fluxo constante de novas ameaças.
Conclusão
Esse projeto foi uma excelente maneira de combinar meu interesse por desenvolvimento e segurança da informação. Criar um bot que interage com APIs de segurança, envia notificações e facilita a consulta de vulnerabilidades me ajudou a compreender melhor como ferramentas automatizadas podem ser utilizadas para manter sistemas seguros e atualizados. Se você está em busca de melhorar suas habilidades em segurança da informação, recomendo trabalhar em projetos práticos como este, que não só testam suas habilidades de programação, mas também aumentam sua familiaridade com o ecossistema de segurança.
Próximos Passos
- Notificações automáticas: Enviar alertas quando novas vulnerabilidades críticas forem encontradas.
- Integração com mais bancos de dados de exploits: Tornar o bot mais robusto ao buscar informações de várias fontes.
- Filtros avançados de CVE: Permitir que os usuários filtrem vulnerabilidades por categorias, como sistemas operacionais ou gravidade.
Você pode encontrar o código completo do bot no nosso repositório do GitHub. Pull requests são bem-vindos!