Come produrre uno script “inquina-phishing”

di | 1 Giugno 2021

Ho avuto a che fare con un sito poco onesto, di cui vi parlerò più avanti, ma vi anticipo che è un sito che fa pubblicità ingannevole promettendo roba gratis e raccoglie informazioni personali senza privacy policy, per poi ricontattare rivelando la natura onesora del contratto e preparandosi alla spedizione.

Oltre alle segnalazioni alle dovute autorità ho deciso di fornire loro un po’ di lavoro e di ciò che bramano più di tutto: contatti e dati.

Peccato che siano inventati di sana pianta da uno scriptino che ho prodotto in un quarto d’ora (includendo una pausa acqua) e il cui sviluppo si è anche rivelato interessante, quindi ve lo racconto.

Fase 0: Capire come viene gestita la richiesta

Prima di tutto serve vedere il tipo di richiesta fatta: per farlo in modo semplice consiglio HTTP Toolkit, software open source, che permette di tracciare le richieste senza smanettare con i certificati.

Inserite nella richiesta qualche dato ben cercabile (non so, tipo nel nome “Paolino Paperino”) e avviare la cattura. Basta leggere il sorgente della pagina per sapere se serve cercare POST o GET e, una volta fatto, cercate nelle richieste fino a trovare quella incriminata.

Dovrebbe essere, nel caso di una POST, un blocco di testo separato in qualche modo, mentre nel caso di una GET dovrebbero essere nei parametri dell’URL.

Fase 1: Replicare la richiesta

Nel mio caso si trattava di una POST ed era gestita da un classico plugin per WordPress. In tali casi si può provare a replicare la richiesta in due modi:

  1. Agendo direttamente sul codice della richiesta
  2. Replicandone le componenti essenziali

Per questo punto consiglio di usare questo comodo sito che permette di fare richieste senza installare nulla. Nel mio caso, inviando alcune richieste vuote, scopro che sono necessari solo tre parametri: nome, indirizzo e numero di telefono, quindi scelgo di replicare quelli. Infatti, nella stragrande maggioranza dei casi, è decisamente più facile creare una richiesta da zero, specie se volete che funzioni…

Fase 2: Creare lo script

E passiamo alla parte divertente, ossia scrivere lo script. Ho usato, ovviamente, Python per creare “castigatore.py” e l’ho strutturato così:

Prima di tutto, importo i moduli necessari (time e requests) e poi definisco alcune variabili “generali” come l’url obiettivo, un contatore e un metodo di generazione: io ho semplicemente usato una lista di qualche nome, cognome, vie e città che viene creata randomicamente, ma nulla vi vieta di usare un’API di un servizio che crea false identità.

Poi c’è la parte in while True che fa le richieste, strutturata in modo semplice: genera nome e via dalle liste, un numero telefonico (realistico, ma con prefisso non funzionante) e li abbina in un dizionario che viene poi usato da requests per effettuare la richiesta POST, poi mi viene mostrata la risposta, per valutare eventuali risposte strane che possono indicare un ban o un qualche blocco.

Per fortuna, il plugin usato ha un campo nonce, che quindi richiederebbe uno script più difficile da scrivere, ma è facoltativo e qui non è attivato, quindi ogni iterazione dello script si riceve un confortante “mail_sent” come status.

Non c’è certezza che non ci sia un qualche plugin anti-spam altrove, sia chiaro, ma è ben più probabile che qualche operatore in attesa di persone da chiamare si sia trovato con un tot di richieste difficilmente scremabili, lasciando tre opzioni:

  1. Scartare in blocco tutte le richieste ricevute, incluse quelle eventualmente legittime
  2. Provare in blocco tutte le richieste, spendendo non poco tempo per farlo
  3. Provare a distinguere le richieste false da quelle vere, con rischio di sbagliare

In ogni caso, si ottiene quel che vuole: dare lavoro alle persone dietro. 😉

Poi, dopo lo script, c’è uno sleep, così da evitare blocchi sulla base di richieste eccessive.

Fase 2.5: si può migliorare?

Certamente. Ad esempio:

  1. Si potrebbe randomizzare anche il prefisso, da una serie di realistici, in modo da aumentare la casualità e rendere più difficile identificare i falsi
  2. Si potrebbe migliorare la randomizzazione, inserendo più nomi, cognomi e città, magari con controlli per evitare duplicati, così da rendere veramente arduo identificare un fake
  3. Si potrebbero usare dei proxy, così da rendere impossibile identificare i falsi dall’IP e sfuggire a eventuali blocchi per eccesso di richieste

Insomma, c’è spazio per la fantasia… Spero di avervi aiutato a scrivere i vostri script anti-phishing 🙂

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.