2019-08-12

Keine Macht dem Mail-Spam

spam

In letzter Zeit habe ich extrem viel Spam auf meine Haupt-Email-Adresse bekommen, die ich nicht so einfach blacklisten konnte. Seit ca. 2017 benutze ich für jeden Online-Dienst eine eigene E-Mail Adresse, z.B.

Spam auf die Haupt-Mail Adresse

Falls irgendwann auf einer bestimmten E-Mail-Adresse Spam geschickt werden sollte, könnte man mit sehr hoher Warscheinlichkeit herausfinden, welchem Anbieter man nie wieder seine Daten anvertrauen sollte, und könnte die Adresse einfach blacklisten und den lästigen Spam sofort loswerden.

Der Anbieter, der mir diese Spamflut eingebrockt hat (mehrere 100 Mails pro Tag), hatte leider noch keine spezifische Mail-Adresse, ich musste also kreativ werden, um nur die Mails zu blocken.

Spam Filtern mit Maildrop auf Uberspace

Zwar war der Betreff, und Body der E-Mails immer ähnlich aufgebaut, aber eine Klassifizierung der Mail nach Keywords, die in der Mail vorkommen könnten war mir immer noch zu fehleranfällig, aber zum Glück hatte jede Mail zumindest einen gemeinsamen Nenner: Einen einheitlichen Fake-Unsubscribe-Link:

unsubscribe link

Zwar war die URL und der Query-Parameter immer unterschiedlich, das "ub.php?" war jedoch in jeder Mail anzutreffen. Dieser String ist spezifisch genug, um so gut wie keine false-positives zu befürchten.

An dieser Stelle kommt Maildrop ins Spiel, Uberspace hat dafür auch ein super hilfreiches Tutorial im Wiki.

Mit Maildrop konnte ich eine Regel definieren die, wenn im Body der E-Mail genau dieser Textstring vorkam, diese in den Spam Ordner zu verschieben:

# Sollte Spam sein:
if ( /ub.php?.*/:b )
{
	MAILDIR="$MAILDIR/.Spam"
	`test -d "$MAILDIR/" || maildirmake "$MAILDIR/"`
	to "$MAILDIR";
}

/ub.php?.*/:b bedeutet soviel wie: Alle Mails, die im Body (:b) den String "ub.php?", und beliebig viele Zeichen danach (.*) aufweisen: Ab in den Spam Ordner!

So wandern nun seit einigen Monaten zuverlässig alle Spam Mails von diesem spezifischen Spammer in den Müll.

Spammer "Datamining"

Doch wer spammt dort überhaupt wie verrückt? Haben dort einfach mehrere Spammer meine E-Mail in die Finger bekommen, und benutzen alle das selbe Template, aber zeigen alle auf ihre eigenen Server, oder beliefert mich nur eine Person ehrenamtlich mit Daten?

Ziel war es erst einmal nur zu schauen, ob der "Unsubscribe"-Link immer auf genau einen Server zeigt.

Dafür brauchte ich zuerst einmal alle Links, die ich mir mit dem Befehl besorgen konnte:

cat ./spam/* \
 | egrep -E 'List-Unsubscribe' \
 | awk '{ print $2 }' \
 | sed -n -E "s/^.*http:\/\/(.*)\/ub.php.*/\1/p"

Dieser Command iteriert über alle Spam-Mails und erstellt mir eine Liste von alles Domains, die den Spammern gehören, der Query-Parameter wird durch sed abgetrennt.

Kleiner Ausschnitt:

mebelilinda.co
mdreallistings.com
geohyper.com
nexustechne.com
razlaghari.com
mercedestur.co
justclockit.com
naderidoost.com
araprp.com
knowtoworld.co
kackargezi.com
edenkratom.co
nexustechne.com
procars-shop-cz1.com
mgooir.com
supodeals.com
khansolangi.co
magnumseoul.com
stoneminders.com
toddsearles.com
mycheapcase.com
successpillar.com
toddsearles.com
asestvv.co
mmomax.com
mercedestur.co
suntstbnk.com
mehediphone.com
rjredcreations.co
areatalentshow.co
justclockit.com
...

Als nächstes habe ich alle gefunden Domains durch dig gejagt, und die Domains auf ihre zugehörige IP-Adressen gemapped:

while read p; 
do
	echo "$p"; 
	ip=`dig +short $p`;
	echo $ip; 
	echo "$ip -> $p" >> ~/spammapping;
done < ~/spam-domains

Diese Liste bereinigte Ich so noch von doppelten Einträgen:

cat ~/spammapping2 | sort | uniq -c

Heraus kam eine ziemlich lange Liste an Domains, die jedoch auf vergleichsweise wenig Servern in Ungarn zeigten, und eine ziemlich lange Liste an Sicherheitslücken aufwiesen.