Abbiamo parlato tante volte di come la maggior parte dei gruppi criminali e delle attività illecite si sia spostata in gran massa dal dark web a Telegram, poiché è in grado di offrire un simile livello di anonimato ma con la semplicità di utilizzo ed accessibilità di un applicazione di messaggistica.
Nell’universo della cybersecurity, una piattaforma di comunicazione cifrata e decentralizzata, come Telegram, è l’ideale per coordinarsi, scambiare strumenti di attacco, condividere informazioni su vulnerabilità zero-day e persino vendere dati rubati.
Per un Security Operations Center (SOC), quindi, integrare uno strumento di scraping di Telegram nel workflow del proprio team di Cyber Threat Intelligence (CTI) è diventato non solo utile, ma essenziale. Vediamo perché e come farlo.
Perché Monitorare Telegram?
1. La Centralità di Telegram nelle Attività Malevole
Telegram è diventato una piattaforma privilegiata per i cybercriminali nel corso degli ultimi anni. Alcuni esempi di contenuti che è possibile intercettare includono:
- Scambi di credenziali rubate.
- Malware e exploit condivisi in gruppi specifici.
- Discussioni sulle tendenze nelle tecniche di attacco.
- Segnalazioni di nuove vulnerabilità.
Riuscire a raccogliere informazioni direttamente dalle “fonti nemiche” permette ai team di CTI di anticipare le mosse degli attaccanti, fornendo intelligence tempestiva che può essere utilizzata per migliorare le difese e creare allarmi proattivi.
Telegram è vasto e in continuo movimento. Monitorare manualmente i suoi contenuti è inefficiente e soggetto a errori. Uno scraping ben implementato può invece raccogliere dati in modo sistematico e completo.
Alcuni vantaggi tangibili che questa attività alle operazioni SOC sono:
- Threat Intelligence proattiva: Individuare nuove minacce prima che colpiscano.
- Risposta più rapida: Informazioni tempestive aiutano i team di incident response a reagire meglio.
- Conoscenza approfondita del panorama delle minacce: Capire i trend emergenti e i principali attori malevoli.
Come Implementare lo Scraping di Telegram?
1. Preparazione: Definire gli Obiettivi
Prima di implementare uno strumento di scraping, è fondamentale definire i target:
- Canali e gruppi rilevanti: Identifica i canali noti per attività sospette.
- Parole chiave: Configura ricerche basate su termini sensibili, come “RDP”, “botnet”, o “zero-day”.
2. Strumenti Utilizzabili
Esistono diversi strumenti open-source e framework che possono essere adattati per scraping di Telegram, tra cui:
- Telethon: Una libreria Python per interfacciarsi con l’API di Telegram. Ideale per automatizzare la raccolta di messaggi.
- Telegram API: L’API ufficiale permette di accedere ai contenuti di canali pubblici e di effettuare ricerche programmatiche.
- Custom Bots: Creare bot personalizzati per raccogliere dati strutturati o attivare alert basati su trigger specifici.
3. Implementazione Tecnica
In questo articolo vedremo un esempio semplificato di scraping, sfruttando la libreria opensource Telethon:
from telethon import TelegramClient
# Configurazione del client
api_id = 'API_ID'
api_hash = 'API_HASH'
client = TelegramClient('session_name', api_id, api_hash)
async def main():
# Connessione a un canale pubblico
async for message in client.iter_messages('nome_canale'):
print(message.text) # Log dei messaggi
with client:
client.loop.run_until_complete(main())
Questo script permette di raccogliere i messaggi da un canale specifico. Può essere ulteriormente arricchito con filtri e analisi di testo.
Vediamo un caso pratico: supponiamo di essere interessati a monitorare le compromissioni ransomware per individuare criticità nella supply chain della nostra organizzazione. Individuiamo un canale Telegram di nostro interesse, come RansomWatcher.
A questo punto, dobbiamo adattare lo script python al canale in questione.
Come prima cosa, sarà necessario inserire i seguenti parametri:
api_id # Il tuo API ID
api_hash # Il tuo API Hash
phone_number # Il tuo numero di telefono
Per i primi due, dovrai accedere al tuo account Telegram: https://my.telegram.org.
Successivamente, dovrai andare su “API development tools” e compilare il breve form per la tua applicazione.
Fatto ciò, potrai ottenere le chiavi api_id e api_hash necessari per l’autorizzazione utente. Ricorda, ogni numero può essere associato ad un solo api_id.
Complichiamo un po’ le cose e introduciamo la possibilità di fare scraping su più canali contemporaneamente. Inoltre, probabilmente non avremo bisogno di tutti i messaggi della chat: proviamo ad ottenere solo i messaggi dell’ultimo giorno.
Purtroppo, l’API di Telegram (e quindi anche la libreria Telethon) non fornisce un parametro per richiedere direttamente solo i messaggi delle ultime 24 ore. Questo significa che non esiste un modo nativo per fare uno scraping mirato con un solo comando API.
L’approccio più vicino a una richiesta mirata è limitare il numero di messaggi da scaricare e applicare un filtro temporale manuale.
from telethon import TelegramClient
from datetime import datetime, timedelta, timezone
import csv
# Variabili principali
api_id = 123456 # Il tuo API ID
api_hash = 'abcdef1234567890abcdef1234567890' # Il tuo API Hash
canali = ['canale_pubblico1', 'canale_pubblico2'] # Sostituisci con i nomi/ID dei canali
# Connessione al client
client = TelegramClient('session_name', api_id, api_hash)
async def scrape_messages():
# Periodo di tempo: ultime 24 ore, ora "aware" con timezone UTC
ventiquattro_ore_fa = datetime.now(timezone.utc) - timedelta(days=1)
# Apriamo un file CSV per salvare i dati
with open('messaggi_ultime_24_ore.csv', 'w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(['data', 'canale', 'mittente', 'messaggio'])
for canale in canali:
print(f"Scraping dei messaggi dal canale: {canale}")
async for message in client.iter_messages(canale, limit=1000):
# Confronta solo messaggi delle ultime 24 ore
if message.date and message.date > ventiquattro_ore_fa:
if message.text:
writer.writerow([message.date, canale, message.sender_id, message.text])
else:
break
with client:
client.loop.run_until_complete(scrape_messages())
Infine, per massimizzare l’efficienza, potresti usare più istanze parallele di Telethon:
- Usa il parametro limit per scaricare solo un numero specifico di messaggi recenti (es. limit=1000).
- Questo riduce i dati processati.
4. Analisi dei Dati
Dopo lo scraping, i dati devono essere analizzati per estrarre insight utili. Utilizza tecniche di text mining e machine learning per identificare pattern, correlazioni e anomalie.
Conclusione
Lo scraping di Telegram rappresenta un’importante opportunità per rafforzare le capacità del team CTI all’interno di un SOC. Non solo consente di intercettare le minacce emergenti, ma contribuisce a costruire un ecosistema di sicurezza informatica basato sull’intelligence. In un mondo sempre più complesso e minacciato, sapere dove guardare può fare la differenza tra subire un attacco e prevenirlo.






