29 Dec, 2009
Honeypot e Mail trappola anti-spam in PHP
Scritto da: Gabriele Guizzardi In: PHP|Programmazione|Sicurezza|Spamming
Se fosse per me ci sarebbe già da parecchi anni, in Italia, una Legge severissima sugli spammer, con pene simili allo stalking e paragonabili a quelli sulla violenza e l’abuso. Chi invia sistematicamente (non parliamo delle offerte di mercato che un’azienda invia un paio di volte l’anno solo ai propri clienti) mail e messaggi senza esplicita richiesta del destinatario e per pubblicizzare materiale assolutamente fuori luogo sempre per il destinatario (mi riferisco per esempio a messaggi in inglese riguardanti la vendita di viagra indirizzati a casalinghe o minorenni che ritengo difficile abbiamo asplicitamente richiesto tali informazioni) dovrebbe essere interdetto dall’uso di Internet. E’ molto complesso ovviamente mettere in pratica questo ma qualche sforzo in più si potrebbe fare.
Lo spam, per chi non lo sapesse, genera, inoltre, traffico di rete e conseguente rallentamento delle operazioni, potrebbe capitare, per esempio, che un vostro mail di lavoro (penso a chi lavora con titoli di borsa o con banche) raggiunga il destinatario ormai troppo tardi a causa del rallentamento dei server di gestione della posta elettronica. Rallentamento dovuto alla mole di messaggi di spam da processare.
Come fanno i programmi che scandagliano la rete a trovare il vostro indirizzo mail e a scrivervi il tutto automaticamente? Per fare questo sono stati realizzati software che si collegano ai siti Internet e leggono il contenuto delle pagine web alla ricerca di indirizzi di posta o di siti.
Per divertirsi a combattere gli spammer con le loro stesse armi possiamo realizzare diversi sistemi-trappola, ne descrivo un paio qui di seguito.
Honeypot eMail
Un honeypot email (esistono anche gli honeypot server) è sostanzialmente un email trappola (mail fake), cioè un indirizzo mail realizzato appositamente per farsi catturare dagli spammer e raccogliere informazioni su di loro. Un software che raccoglie indirizzi mail navigando in rete difficilmente è programmato per riconoscere honeypot (barattoli di miele) quindi tende a registrare tutti gli indirizzi che trova.
L’honeypot viene quindi strutturato per riportare alcune informazioni basilari sullo spammer come per esempio l’indirizzo IP e il momento della cattura, ecco un esempio:
-
<?php
-
// Esempio di Honeypot in PHP
-
// Scritto da Gabriele Guizzardi, Brain & Bytes, 2009.
-
?>
che crea sul vostro sito un link al seguente indirizzo:
ipspam-79.123.1.1-Tuesday-29-Dec-09-01-02-54-GMT@dominio.it
Noterete la particolare formattazione della data che riporta informazioni sufficienti a comprendere quando è stato catturato l’indirizzo da parte dello spammer. Il dominio invece deve essere reale così che i futuri mail di spam siano correttamente inviati e ricevuti. Potete ovviamente modificare tale sintassi aggiungendo altre informazioni oppure, nel caso della data, aiutandovi con quanto messo a disposizione dalle classi del PHP:
http://www.php.net/manual/en/class.datetime.php
Ricordate ovviemente di sostituire la punteggiatura non supportata dagli indirizzi email che per esempio non digeriscono gli slash.
Bene, a questo punto abbiamo sulla pagina del nostro sito un email fasullo generato ad ogni visualizzazione con i dati del momento. Passiamo ora a realizzare un server di posta elettronica. Per far questo potete configurare un computer con Microsoft Exchange Server oppure con IceWarp oppure ancora Kerio MailServer.
Fake eMail
Un secondo metodo, se non vi interessa analizzare le attività di spamming o creare dati statistici sulla posta-spazzatura generata visitando le vostre pagine web, può essere la creazione di email fasulli da riempire i database degli spammer e creargli un flusso dati di ritorno da posta inevasa che possa quanto meno disturbarne l’operato.
Il codice qui sotto riportato genera 10 indirizzi email falsi ma sintatticamente corretti per i motori di raccolta dati degli spammer, i cosidetti spambot:
-
<?php
-
// Esempio di FakeMail in PHP
-
// Scritto da Gabriele Guizzardi, Brain & Bytes, 2009.
-
$n_mail = 10; //numero di email da visualizzare
-
//calcolo casualità
-
function mailfake()
-
{
-
return $word;
-
}
-
$dominio = mailfake();
-
$id = mailfake();
-
//compone l’indirizzo mail casualmente
-
for($i = 0;$i <= $n_mail; $i++)
-
{
-
{
-
"nome2",
-
"nome3",
-
"nome4",
-
"nome5",
-
"nome6",
-
"nome7",
-
"nome8",
-
"nome9",
-
"nome10" );
-
}
-
{
-
"cognome2",
-
"cognome3",
-
"cognome4",
-
"cognome5",
-
"cognome6",
-
"cognome7",
-
"cognome8",
-
"cognome9",
-
"cognome10" );
-
}
-
{
-
"net",
-
"it",
-
"org" );
-
}
-
?>
-
<table>
-
<tr>
-
<td>
-
$n$c@$dominio.$est</a>"; ?>
-
</td>
-
</tr>
-
</table>
-
<?
-
}
-
?>
Potete variare il numero di email generate e i dati in esso contenuti cambiando gli array dai quale attinge la funzione per comporre l’indirizzo.
Se posizionate lo script per esempio in fondo ad una pagina web e cambiando magari il colore degli indirizzi con lo stesso colore di fondo per renderli “invisibili” agli utenti ma non agli spambot avrete una serie di indirizzi email intercettabili dagli spammer ma che non disturberanno i navigatori umani della pagina. Il risultato sarà quello di riempire i database degli spammer con email inesistenti e conseguente traffico di ritorno di email inevase.









