Open Source im professionellen Einsatz

Newsletter abonnieren
Seite durchsuchen

HEFTARCHIV | NEWS | E-BIBLIOTHEK | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO | SHOP

user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2009  »  02  »  Spam kartieren  

RSS-Feed der aktuellen News von Linux-Magazin Online Folgen Sie Linux-Magazin Online auf Twitter
Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark

© Windrose, Pixelio.de

Perl-Skript zeichnet Spam-Karten nach Webserver-Logs

Spam kartieren

von Michael Schilli
Erschienen im Linux-Magazin 2009/02

Eine Kombination aus IP-Adressen-Datenbank und Googles Chart-Service verrät, aus welchen Regionen die Link-Spammer einer Webseite kommen.

Ich fände es äußerst befriedigend, könnte ich das Büro eines Spammers oder Telemarketingers aufspüren, hinfahren und den PC des Fernwerbers in Kleinholz verwandeln. Eigentlich genau so, wie in dem amerikanischen Werbespot der Firma Snickers [2]. Leider ist das aus legalen und logistischen Gründen oft nicht möglich. Im wahren Leben erledigen außerdem nicht die Gauner selbst die Drecksarbeit, sondern Botnetze infizierter PCs. Trotzdem wäre es interessant, einmal grafisch darzustellen, aus welchen Regionen der Welt die meisten Spammer-Aktivitäten so kommen.

Fährte aufnehmen

Das Internet ist die ideale Plattform für anonyme Gaunereien, aber eine Spur hinterlassen die Verbrecher dennoch: Jeder eingehende Request führt die IP-Adresse des Senders mit sich (Abbildung 1). Die lässt sich zwar auch manipulieren, aber das ist nicht ganz so einfach und den meisten Spammern zu umständlich.


Abbildung 1: Link-Spammer hinterlassen im Access-Log des Webservers eine IP-Adresse.

Das DNS, das Hostnamen ihre IP-Adresse zuweist, versteht sich auch auf die umgekehrte Zuordnung. Falls der Provider alles ordnungsgemäß aufgesetzt hat, nimmt ein so genannter DNS-Reverse-Lookup eine IP-Adresse entgegen und gibt - wie beispielsweise das Skript »revlookup« (Listing 1) in Abbildung 2 - einen qualifizierten Hostnamen aus, der auf den Provider schließen lässt.

Listing 1:
»revlookup«

01 #!/usr/local/bin/perl -w
02 use strict;
03 use Socket;
04
05 my $host = $ARGV[0] or
06   die "usage: $0 ipaddr";
07
08 print reverse_lookup($host) || "unknown",
09       "n";
10
11 ###########################################
12 sub reverse_lookup {
13 ###########################################
14   my ($ip) = inet_aton $_[0];
15
16   return (gethostbyaddr($ip, AF_INET))[0];
17 }

Abbildung 2 zeigt, dass die beim Spammen erwischte IP 69.162.110.146 dem Provider Lstn.net gehört. Eine freundliche E-Mail an dessen Webmaster mit genauer Angabe der Adresse, der Uhrzeit (wichtig, da diese Adressen unter Umständen dynamisch vergeben werden) bringt mit etwas Glück den Spammer zum Schweigen.


Abbildung 2: Ein Reverse-DNS-Lookup bringt oft die einer IP-Adresse zugeordnete Domain zum Vorschein.

Wer bist du?

Die Funktion »inet_aton()« aus dem Modul Socket nimmt eine IP-Adresse in String-Darstellung (»x.x.x.x«) entgegen und gibt eine Datenstruktur für einen Aufruf der Perl-Funktion »gethostbyaddr()« zurück. Letztere führt den DNS-Reverse-Lookup aus und liefert im Erfolgsfall einen String mit dem Hostnamen, im Fehlerfall »undef«. Der Vorgang kann allerdings einige Sekunden dauern, je nachdem, wie beschäftigt der genutzte DNS-Server gerade ist und wie viele Kollegen er zur Beantwortung der Frage konsultiert.

Das Kommandozeilen-Utility »whois« verkraftet auch IP-Adressen als Argumente. Abbildung 3 zeigt, dass der Provider Limestone Networks gleich eine E-Mail-Adresse für Beschwerden angibt, an die sich Spam-Opfer wenden können. Das Ganze geht auch in Perl, etwa mit dem CPAN-Modul Net::Whois::Raw, doch erfolgt der Lookup dabei über die Server der Firma Network Solutions, die nach etwa 100 Lookups in kurzer Folge den Zugang sperrt.


Abbildung 3: Der Whois-Eintrag für die ertappte IP-Adresse zeigt die Daten des Internetproviders des Spammers.

Viele Spammer arbeiten jedoch mit IP-Adressen, die keinen Reverse-Eintrag im DNS-System aufweisen. Aber auch dann ist eine Lokalisierung in gewissen Grenzen möglich, denn Service-Provider bekommen die Adressen in Blöcken zugewiesen und es existieren Datenbanken, die die geografische Lage der Provider verraten, denen eine bestimmte Adresse zugeteilt wurde.

Die Firma Maxmind bietet unter [3] eine Datenbankdatei an, die sich für nicht-kommerzielle Zwecke kostenlos nutzen lässt. Die genauen Lizenzbedingungen liegen im selben Ordner wie die Datenbank. Das CPAN-Modul IP::Country::MaxMind stellt ein passendes API zur Verfügung, damit niemand mit den Binärdaten direkt herumfuhrwerken muss. Die in der Datenbank gespeicherten IP-Zuweisungen ändern sich nur sehr langsam, sodass Updates nur alle paar Monate nötig sind.

Nach der Installation des Moduls, das zusätzlich noch ein weiteres CPAN-Mudul namens Geo::IP::PurePerl verlangt, liest der Konstruktor »open()« die angegebene lokale Datenbank ein und die Methode »inet_atocc()« liefert zu einer IP-Adresse den Ländercode zurück, zum Beispiel »DE« für Deutschland.

Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark
Ähnliche Artikel
Das Log als Ohrwurm Perl-Skript realisiert das singende, klingende Internet
Hilfe mit System Das Open Ticket Request System - freie Software für den Helpdesk
Für Durchblick sorgen Log-Analyzer für Apache im Vergleich
Draufsicht Geschäftsprozesse mit Nagios überwachen
Laufzeit-Tacho Profiler identifizieren Flaschenhälse in Perl-Programmen
Listenreich Mailinglisten-Software Sympa 6
Whitepaper
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele

Über die letzten Jahre hinweg haben sich Open Source Lösungen als fester Bestandteil des gesamten Datenintegrationsmarktes etabliert. Viele Unternehmen haben bereits das Open Source Modell für Ihre Datenintegrationsprojekte aufgegriffen. Das vorliegende White Paper illustriert anhand ausgewählter Fallstudien und Anwendungsbeispiele die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.

Download PDF (Registrierung erforderlich)
The Role of Open Source in Data Integration

Obwohl in den letzten Jahren viele technische Fortschritte erzielt werden konnten, verfügen die meisten Datenintegrationsprozesse nach wie vor nur über eine sehr begrenzte Automatisierung. Das vorliegende White Paper von dem Industry Analyst Mark Madson wird zunächst ein grundlegendes Verständnis von Daten Integration vermitteln, die Vorzüge von Open Source Lösungen für Daten Integration erläutern und Ihnen professionelle Empfehlungen geben, damit Sie Ihre Integrationsjobs noch einfacher und produktiver gestalten können.

Download PDF (Registrierung erforderlich)
Kommentare (2)
von
Andreas,
04.02.2009 16:01
Noch ein (kleiner) Fehler !?!
Im Listing 1, Zeile 9 sollte es sicher '"\n";' heissen.
von
Michael,
26.01.2009 14:49
Fehler in Listing2, Zeile 49
Statt
$by_country{ $country } = $norm;
sollte dort
$by_country{ $country } = $SYMBOLS[$norm];
stehen