Mike© : Erfahrungsbericht: Formularspam erfolgreich bekämpft

Moin @ All,

wir hatten hier innerhalb der letzten Wochen ja immer wieder das Thema bzgl. Formularspammings, welches ich auch immer aufmerksam verfolgt habe.

Und schwup die wup, hat es auch jemand bei mir versucht.
Das Formular ist ein Kontaktformular. From und To sowie Subject ist Fix im PHP hinterlegt. Nun erreichten mich Mails in dieser Form:

Nachricht von der LadenBuerger Homepage:

Absender:        in2044@ladenbuerger.de
Absender E-Mail: in2044@ladenbuerger.de
Gesendet am:     04/03/2006 - 17:40

Eingegebener Text:

in2044@ladenbuerger.de

Content-Type: multipart/alternative; boundary=084c81976e330b9c325c8d62386d5d49
MIME-Version: 1.0
Subject: its spray in columns of foam. he ladies, at
bcc: vickiebosworth@aol.com

This is a multi-part message in MIME format.

--084c81976e330b9c325c8d62386d5d49
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

t th right to make laws, but they have th priv lege iv breakin thim, which is betther. hey haven t th right iv a fair
thrile be a jury iv their peers but
--084c81976e330b9c325c8d62386d5d49--

.

=================================================

Das habe ich mal gelassen hingenommen, denn es zeigte mir, das die Mißbrauchversuch nicht erfolgreich waren.

Dennoch war ich verunsichert ob die Versuche tatsächlich vergebens waren, und für die "HP Besitzerinn" waren diese Mails allemal verunsichernd.

Zunächst verunsicherte mich insbesondere, das es im Abstand von Stunde immer nur 3 Mails waren. Das würde ja auf einen "zaghaften manuellen" Versuch schließen und nicht auf einen Bot.

Dann habe ich den Vorschlag, aus den Postings aufgegriffen, und haben eine Text-Area mit display:none eingebaut.

Siehe da, doch ein Bot. Das Feld wurde kurze Zeit später ausgefüllt.
Am liebsten hätte ich einen vituellen Stinkefinger gezeigt ;-)

Bei nochfolgenden Analysen habe ich auch festgestellt, das u.U. eine Kombination von verschiedenen Maßnahmen sinnvoll sein kann.

So war z.Bsp. der Referrer www.example.com und nicht, wie es hätte sein müßen, www.example.com/kontakt.php.

Also, hätte auch eine Abfrage auf den Referrer zielführend, für die Abwehr sein können.

Hier mal ein paar Verständnisfragen:

  • Warum wurden von diesem Bot immer nur 3 "Test"mails verschickt?
      Anstatt mal eben 200 los zu schicken.
  • Nachdem ich das display:none Feld eingebaut und ausgewertet habe,
      kamen nur noch 3 weitere Mails. Wurde diese "Hürde" vom Bot erkannt?
  • Und gründsätzlich: Wir wird die Page ../kontakt.php, per Bot, aufgerufen?

Mit einem HTTP Request, welcher die Post Daten schickt?

Ich hoffe Euch nicht gelangweilt zu haben. Anyway zeigt es, dass mitlesen lohnt, den mein Problem, auch wenn es nicht wirklich eines war, wurde schnell gelöst.

regds
Mike©

--
Freunde kommen und gehen. Feinde sammeln sich an.
  1. Moin!

    • Warum wurden von diesem Bot immer nur 3 "Test"mails verschickt?
        Anstatt mal eben 200 los zu schicken.

    Ich bin überzeugt, dass es sich sehr wohl um einen Bot handelt, aber um einen, der potentielle Spamversandstellen erkunden soll. Deshalb werden auch nur drei (ich meine, die in meinem Umfeld aufgetretenen Spamtests bestanden immer aus vier) Versandversuche unternommen, um nicht durch allzu großes Aufsehen Verdacht zu erregen.

    • Nachdem ich das display:none Feld eingebaut und ausgewertet habe,
        kamen nur noch 3 weitere Mails. Wurde diese "Hürde" vom Bot erkannt?

    Man weiß es nicht.

    • Und gründsätzlich: Wir wird die Page ../kontakt.php, per Bot, aufgerufen?

    Checke mal die Logfiles. Da besteht bei mir nämlich noch eine investigative Lücke. Ich könnte mir aber vorstellen, dass der Bot recht "gut" ist - er ruft in jedem Fall die Formularseite ab, um die enthaltenen Felder zu erkennen, und dürfte vermutlich auch Cookies beherrschen (wäre jedenfalls ein leichtes, das mit reinzuprogrammieren). Nur CSS kann er eben noch nicht - und er kann auch nicht darauf verzichten, diverse @-Zeichen und signifikante Mailheader als Text zu senden.

    Meine Vorgehensweise, deren Erfolg ich aber noch nicht genau nachgeprüft habe (dazu kommen die Bots dann doch zu selten, und offenbar gehen sie auch geplant-koordiniert vor und belästigen eine Fundstelle nicht endlos): Wenn im gesamten POST-Text (mit implode(" ", $_POST) zu einem String kombiniert) mehr als X @-Zeichen vorkommen, ist irgendwas faul. Eines kommt vor, weil der Absender seine Mailadresse angibt, ein weiteres kommt vielleicht vor, weil er in der Textarea nochmal eine komplette Mailsignatur inkl. Mailadresse reinschreibt, und eventuell schreibt er auch noch die Mailadresse seiner Frau und seines Chefs rein. Aber so ab 5 @-Zeichen wird die Sache dann doch suspekt.

    Dann zähle ich die im POST-Text gefundenen Wörter, und summiere die Vorkommen typischer Mail-Injection-Texte: "bcc:", "mime-type:", "7bit", ... - wenn von denen eine gewisse Anzahl enthalten ist, gebe ich einfach HTTP-Status 404 als Antwort auf den Sendeversuch zurück. Sozusagen mein virtueller Stinkefinger.

    - Sven Rautenberg

    --
    My sssignature, my preciousssss!
    1. Moin.

      ... mehr als X @-Zeichen vorkommen, ist irgendwas faul.

      Eine solche Abwehrmaßnahme hat mir schon einige Kommentare eingebracht, ich tausche nun @ gegen *at*, damit sind Mailadressen noch lesbar, aber ungefährlich, so das Script den Inhalt nicht sowieso als Spam deklariert, s.u.

      Aber so ab 5 @-Zeichen wird die Sache dann doch suspekt.

      Ein Bot kommt zum Testen mit einem @ aus, und zwar im zusätzlichen bcc: Damit zieht der Schutz nur, wenn z.B. versucht wird gleich massenhaft Mails zu versenden.

      Dann zähle ich die im POST-Text gefundenen Wörter, und summiere die Vorkommen typischer Mail-Injection-Texte: "bcc:", "mime-type:", "7bit", ... - wenn von denen eine gewisse Anzahl enthalten ist, gebe ich einfach HTTP-Status 404 als Antwort auf den Sendeversuch zurück. Sozusagen mein virtueller Stinkefinger.

      Das ist schon wesentlich wirkunsvoller - das Spamaufkommen eines so ähnlich überprüften Formulars ist bei mir auf 0 gesunken - Versuche gibt es trotzdem reichlich, wie ich am Logfile erkennen kann.

      Natürlich kennen die Bots diesen Schutz auch und versuchen es mit unterschiedlichen Schreibweisen (GROSS/klein) der "Schlüsselwörter". Der Formularschutzmechnismus muß damit umgehen können.

      Gruß Frank

  2. Hallo Mike,

    Und schwup die wup, hat es auch jemand bei mir versucht.

    *grr* bei mir war heute auch so einer (wenn nicht der gleiche, die AOL-E-Mailadresse war die gleiche wie bei dir) - allerdings in einem ganz normalen Loginformular, was garantiert keine E-Mails verschickt. Diese sch*** Bots tragen ihren Müll auch wirklich in alles ein was nicht bei drei auf den Bäumen ist ...

    Grüße aus Nürnberg
    Tobias