PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : es ist zum mäuse melken



Sugus
27.05.2006, 05:07
diese @#*!<.£*+@ spammer kosten mich noch den letzten nerv...

sorry, erst mal hi

ich betreibe seit 2 jahren eine relativ kleine seite, welche seit 3 monaten regelrecht mit spam bombadiert wird (vorallem das gästebuch).

ip-sperren, wort-blacklists etc haben nichts gebracht, im gegenteil, die haben sich offenbar regelrecht auf meine seite eingeschossen :mad:

mittlerweile rotiert sogar mein hoster, weil zum teil bis zu 20 spams/sekunde eintrudeln und der gesharte server teilweise in die knie geht (auch andere kunden werden opfer des spamwahnsinns).

gestern abend hatte ich eine idee, hab sie sofort umgesetzt (die ganze seite ist php-handgestrickt, also nichts von der stange) und war dann erstaunt, als eine halbe stunde später die ersten spamversuche losgingen...

5 | 27052006 | xx:xx:xx | start.php | 59.25.20.208 | Country=unknown | menu=1 | amp;file=gbook.php | amp;sid= | amp;action=addnew | amp;id=-1 | name=Rulez666 | email=40430 [at] 40430.br | homepage=http://stratosphere.mig**here.com/stratosphere-las-vegas-roller-
coaster.htm | secure=4d9ab52d7ca4ebae9ce29032ad867789

wichtig ist das secure... das ist neu und der erste gästebuchaufruf nach der modifikation hatte eine solche ID: [ID filtered]

wie kann das sein ?

mittlerweile (also seit mitternacht bis jetzt) sind knapp 300 spamversuche unternommen worden, teilweise nach dem alten muster (ohne secure=hash) und teilweise mit dem neuen muster... und zwar immer ohne das sie das gb-formular zu gesicht bekommen haben.

ich habe jetzt die letzten 4 stunden damit verbracht, die logfiles zu durchsuchen, weil es ev. schon andere bots das mit dem secure versucht haben, aber im zeitraum anfang april-gestern konnte ich das nicht feststellen.

wie werde ich die nervensägen endlich los ?

verzweifelte grüsse
rené

exe
27.05.2006, 08:04
Hallo und willkommen im Forum. Zuerst mal den Standardhinweis auf meine Tippsammlung (http://www.antispam-ev.de/forum/showthread.php?t=10403). Aber wie ich sehe bist du ja schon ein paar Schritte weiter. Wenn der Druck auf ein Skript zu extrem wird würde ich folgendes tun:

Das Skript umbenennen
Gib dem Kind einen anderen Namen, zwar wird sich Spammy vielleicht auch das neue Skript einschießen, aber das kann dauern.

Das alte Skript ersetzen
Nimm das alte Skript und ersetz es mit einem, dass z. B. 100 Sekunden nichts macht (sleep). Wenn du etwas Glück hast bremst das Spammys Bot ordentlich. Stell aber sicher, dass vor dem sleep keine Ausgabe erfolgt, denn der Bot wartet sicher auf den HTTP 200er Header und den bekommt er "leider" erst nach 100 Sekunden.

HTH

Sugus
27.05.2006, 09:47
hi exe

ich habe Deine tippsammlung gestern schon gelesen ;) die hatte mich ja erst auf die idee gebracht...



Das Skript umbenennen
Gib dem Kind einen anderen Namen, zwar wird sich Spammy vielleicht auch das neue Skript einschießen, aber das kann dauern.


in den 3 monaten hatte ich das skript zum teil alle paar tage umbenannt (z.b. jkssfewirujvmrlf.php), hat auch nicht gebracht... es war höchstens ein paar stunden ruhe... selbst das inaktivsetzen aller seiten, bei denen man etwas hätte schreiben können, hatte keinen erfolg... ein paar stunden nach wieder aktiv setzen waren die geier wieder da...



Das alte Skript ersetzen
Nimm das alte Skript und ersetz es mit einem, dass z. B. 100 Sekunden nichts macht (sleep). Wenn du etwas Glück hast bremst das Spammys Bot ordentlich. Stell aber sicher, dass vor dem sleep keine Ausgabe erfolgt, denn der Bot wartet sicher auf den HTTP 200er Header und den bekommt er "leider" erst nach 100 Sekunden.


die ip-bremse (also 1 beitrag/tag/ip) besteht auf dem gästebuch immer noch.... bringt aber auch nichts, wenn ganze ip-bereiche ala xy.xy.xy.[0-255] verbraten werden... zum teil finden die spamattacken auch gleichzeitig und von völlig unterschiedlichen bereichen statt (usa, ukraine, vanutu *heisst das glaub*)... da bringt ein delay/sleep auch eher wenig :confused:

manchmal wünschte ich mir, ein antispam-bot-netz zu stricken... sobald ein spammer irgendwo aufschlägt, wird die entsprechende ip verteilt und dann ein ddos gestartet. ist zwar illegal und zumindest mein provider würde mir die hände abhacken, aber offenbar kann man die typen nur mit den eigenen mitteln schlagen...

werde jetzt mal den pc abschalten... sonst erwürg ich wegen der müdigkeit noch den :D ;)

rgds
rené

Goofy
27.05.2006, 09:56
@Sugus

Könntest Du mal eine oder mehrere der im Spam beworbenen Domains posten?
(Oder evtl. PN an mich)

heinerle
27.05.2006, 10:38
Gegen wechselnde IPs etc. habe ich ganz gute Erfahrungen mit mehrstufigen Schutzmaßnahmen gemacht:

1. das Skript unerratbar umbenennen, z.B. gnrpfl.php
2. im <form eine Variable (z.B. geheimeVariable) als hidden definieren, die irgend einen Wert enthält, der sich aus der IP des Angreifers errechnet (z.B. plump in Buchstaben umrechnen oder so), DeinAlgorythmus()
3. im <form action= einen Skriptnamen einsetzen, der sich nach einem beliebigen Algorythmus aus geheimeVariable errechnet, z.B. md5 oder base64_encode


<?
$geheimeVariable=DeinAlgorythmus($_SERVER['REMOTE_ADDR']);
print "<form action='/guestbook/".md5($geheimeVariable).".php' method='POST'>";
print "<input type='hidden' name='geheimeVariable' value='".$geheimeVariable."'>";

4. in der .htaccess eine RewriteRule für das Skript definieren, die zu Deiner Berechnung aus 3. paßt

RewriteEngine On
RewriteBase /
# Hier fuer md5()
RewriteRule ^guestbook\/([0-9a-f]{32}).php$ /guestbook/gnrpfl.php [L]

5. im gnrpfl.php dann


function ErrExit() {
sleep(100);
header('403 forbidden');
die('403 forbidden');
}
if(basename($_SERVER['REQUEST_URI'], ".php") != md5($_POST['geheimeVariable'])) ErrExit();
if(DeinAlgorythmus($_SERVER['REMOTE_ADDR']) != $_POST['geheimeVariable']) ErrExit();

Den Namen der POST-Variablen geheimeVariable kannst Du natürlich auch noch variabel gestalten :)

Sugus
27.05.2006, 16:16
hi heinerle



1. das Skript unerratbar umbenennen, z.B. gnrpfl.php
2. im <form eine Variable (z.B. geheimeVariable) als hidden definieren, die irgend einen Wert enthält, der sich aus der IP des Angreifers errechnet (z.B. plump in Buchstaben umrechnen oder so), DeinAlgorythmus()
3. im <form action= einen Skriptnamen einsetzen, der sich nach einem beliebigen Algorythmus aus geheimeVariable errechnet, z.B. md5 oder base64_encode


2.) habe ich auch schon versucht...
secure=4d9ab52d7ca4ebae9ce29032ad867789...
ist ein ding aus ip, randomstringgenerator...
es verging eine halbe stunde, da haben die sich schon drauf eingeschossen (und zwar nur EIN aufruf, also ohne das gbook-formular sehen zu können)


5 | 27052006 | xx:xx:xx | start.php | 59.25.20.208 | Country=unknown | menu=1 | amp;file=gbook.php | amp;sid= | amp;action=addnew | amp;id=-1 | name=Rulez666 | email=40430 [at] 40430.br | homepage=http://stratosphere.mig**here.com/stratosphere-las-vegas-roller-
coaster.htm | secure=4d9ab52d7ca4ebae9ce29032ad867789


die anpassung ihrerseit ging sehr fix und was mich erschreckt, wie wussten die von der secure-variable (jaja, ich benenn das ding noch um, war halt ganz schnell gestrickt der code) ?!

ich raff das nicht und steh im wald, ohne die bäume zu sehen :confused:

mittlerweile haben es heute "nur" 20 spammer ins gästebuch geschafft :mad: , bots hat das skript bisher erfolgreich abgewimmelt :clap:

rgds
rené

heinerle
27.05.2006, 22:48
...
die anpassung ihrerseit ging sehr fix
Na wenn das Menschen und keine Bots sind dann geht das natürlich flott ...


und was mich erschreckt, wie wussten die von der secure-variable (jaja, ich benenn das ding noch um, war halt ganz schnell gestrickt der code) ?! ...
Vielleicht nimmst Du als Namen der secure-Variablen auch etwas algorythmisch erzeugtes, z.B.

$secureName=date("DWY"); // ergibt heute Sat212006
print "<form ...>";
print "<input type='hidden' name='".$secureName."' value=...>"; das prüfst Du im empfangenden Skript mit
$secureName=date("DWY");
if(isset($_POST[$secureName]]) auf Existenz und danach wie schon beschrieben auf den richtigen Inhalt.
Besser ist natürlich gleich
$secureName=md5(date("DWY")); und noch ein paar MD5s für andere Variablen, dann blickt keiner mehr, was welche Variable bedeutet und wie sie erzeugt wird :D

mittlerweile haben es heute "nur" 20 spammer ins gästebuch geschafft :mad: , bots hat das skript bisher erfolgreich abgewimmelt :clap:

rgds
rené
Lies auch mal das unter Idee um GB-Spam zu bekämpfen (http://www.antispam-ev.de/forum/showpost.php?p=59766&postcount=7) Verlinkte/Erwähnte durch, da gibt es noch mehr Anregungen mit Timestamp etc.