Matthias: Arbeitsweise von Spam-Bots

Hi,

ich beschäftige mich gerade mit dem Thema Spam-Bots in Bezug auf Gästebücher, Comments, Foren usw.
Als Schutzmaßnahmen findet man viele nützliche Einzel-Hinweise wie z.B. Captchas, Hidden-Fields in Formularen, Zeitsperren und Serverseitig generierte Hashes zur Authentifizierung des Formulars.

Um die Website vor Spam-Bots zu schützen sollte man ja zuerst einmal Wissen wie diese arbeiten. Jetzt wäre für mich mal interessant wie die Grundlegende Arbeitsweise eines Bots ist?

Gruss
Matthias

  1. Hi!

    Um die Website vor Spam-Bots zu schützen sollte man ja zuerst einmal Wissen wie diese arbeiten. Jetzt wäre für mich mal interessant wie die Grundlegende Arbeitsweise eines Bots ist?

    Welchen Bot genau meinst du? Grundlegend kann man nur antworten: Er tut das, was programmiert ist. Und wenn er aufgrund von Gegenmaßnahmen nicht mehr ans Ziel kommt, wird er eben umgeschrieben.

    Lo!

    1. Welchen Bot genau meinst du? Grundlegend kann man nur antworten: Er tut das, was programmiert ist. Und wenn er aufgrund von Gegenmaßnahmen nicht mehr ans Ziel kommt, wird er eben umgeschrieben.

      Lo!

      Im konkreten Fall geht es mir um Schutzmaßnahmen gegen Spam-Bots für ein Gästebuch und einer Shoutbox.

      1. Im konkreten Fall geht es mir um Schutzmaßnahmen gegen Spam-Bots für ein Gästebuch und einer Shoutbox.

        Also Bots die Formulare ausfüllen und absenden?

        Was sind deine "Arbeitsschritte" um auf einer Website ein Formular zu finden und auszufüllen?

        1. Im konkreten Fall geht es mir um Schutzmaßnahmen gegen Spam-Bots für ein Gästebuch und einer Shoutbox.

          Also Bots die Formulare ausfüllen und absenden?

          Was sind deine "Arbeitsschritte" um auf einer Website ein Formular zu finden und auszufüllen?

          Dem Link "Gästebuch" folgen, PHP-Skript wird aufgerufen, dieses übergibt Daten an das HTML-Template und die HTML-Seite mit dem Fromular wird dargestellt.

          1. Dem Link "Gästebuch" folgen,

            Wenn du nur gezielt in Gästebücher in deutscher Sprache spammen willst ok - was ist mit Links die guestbook oder Gastenboek im Titel tragen?

            Wenn du nur Spammen willst, ist es aber nicht sehr effizent - ich würde wahllos irgendwelche Links aufrufen und den Quelltext nach form-Elementen durchsuchen.

            PHP-Skript wird aufgerufen, dieses übergibt Daten an das HTML-Template und die HTML-Seite mit dem Fromular wird dargestellt.

            Nein, das machst du als Besucher einer Seite sicher nicht.

            Du bekommst ein HTML-Dokument ausgeliefert du füllst die Felder aus und klickst auf den Submit-Button.

            Dein Browser stellt daraufhin einen HTTP-Request (POST oder GET, je nach Wert des method-Attributs) und überträgt die ausgefüllten Daten.

            Wenn du nur den Quelltext betrachtest, musst du lediglich nach form-Elementen suchen und daraus die Codierung, die Methode und das Ziel ermitteln, die name-Attributen der Formular-Elemente suchen, dieses mit Werten befüllen und dann einen HTTP-Request ausführen.

            Ein wirklich einfacher Spambot ist so in etwa 50 Zeilen geschrieben.

            1. Moin!

              Wie funktioniert ein primitiver Spambot?

              1. Er benutzt Google:

              http://www.google.de/search?q=Kontakt+%2B%22Ihre+Nachricht%22

              (und erster Fehler der Betreiber)

              2. Daraus generiere man mit regulären Ausdrücken (oder primitiver) eine Liste der mutmaßlich anzugreifbaren Seiten.

              Für jede Seite in der Liste:

              3. Diese Seiten rufe man man ab.

              4. In den Quelltexten suche man einfach mit regulären Ausdrücken oder primitiver nach den Namen von Formularfeldern und dem Ziel des Formulars:"action=" sowie der Methode

              5. Man sende mit wget einen Request und nutze dessen Möglichkeiten, POST-Daten zu senden.

              6. Man speichere Ziel-URL und Namen der Formularfelder für die Wiederverwendung.

              Nächste Seite. Nächste Suche mit neuen Begriffen.

              Parallel:
              Für jede gespeicherte Ziel-URL nebst Namen der Formularfelder:
                 Man sende mit wget einen Request und nutze dessen Möglichkeiten, POST-Daten zu senden.
              Nächste Ziel-Url
              Liste durch? Update der Liste aus 6, Restart!

              Wie ich schon schrieb: Die schiere Masse an völlig ungeschützten Formularen leistet dem Einsatz eines solchen primitiven Skriptes Vorschub. Der übergroße Anteil dürfte nicht mehr leisten.

              MFFG (Mit freundlich- friedfertigem Grinsen)

              fastix

              1. http://www.google.de/search?q=Kontakt+%2B%22Ihre+Nachricht%22

                Das ist der eigentlich schwierige Teil ;) eine Liste mit möglichst vielen Formularen und möglichst wenigen false-positives zu erzeugen.

                Mit dem "Wahllos irgendwelche Links aufrufen" ging ich pauschal davon aus, dass man den Formulartitel oder ähnliches nicht kennt und auf verdammt vielen Seiten irgendwo ein Gästebuch oder eine Kommentarfunktion zu finden ist.

                Wahllos irgendwelche Seiten aufzurufen und links zu verfolgen erscheint mir hierbei nicht unbedingt abwegig - besonders wenn man bereits ein kleines Botnet hat wo Traffic "nichts kostet".

                Wie ich schon schrieb: Die schiere Masse an völlig ungeschützten Formularen leistet dem Einsatz eines solchen primitiven Skriptes Vorschub. Der übergroße Anteil dürfte nicht mehr leisten.

                Das sehe ich auch so.

                1. Er benutzt Google:
                  http://www.google.de/search?q=Kontakt+%2B%22Ihre+Nachricht%22

                Das nützt dir noch gar nichts.

                1. Daraus generiere man mit regulären Ausdrücken (oder primitiver) eine Liste der mutmaßlich anzugreifbaren Seiten.

                sehr mutmasslich.
                Was ist deine Intention?
                Letztlich willst du uris posten am Besten als html.
                Eventuell hast du andere Absichten.
                Eine Kontakt-Seite bringt da nichts. Du willst dass das resultat öffentlich angezeigt wird, also einen Blog-Kommentar oder einen Gästebucheintrag.
                Das bringt aber auch noch nichts.
                Du willst einen gewissen traffic.

                Ergo ist nicht Google, sondern irgend ein Ranking-Tool in deinem Prozess notwendig.

                Wenn es wirklich um Masse geht, und nicht um Traffik/Ranking, würde ich nach einer Software Watermark googeln für die ein Exploit existiert.

                Wie ich schon schrieb: Die schiere Masse an völlig ungeschützten Formularen leistet dem Einsatz eines solchen primitiven Skriptes Vorschub.

                möglich, aber nicht bei deinem google Suchbegriff.

                mfg Beat

                --
                ><o(((°>           ><o(((°>
                   <°)))o><                     ><o(((°>o
                Der Valigator leibt diese Fische
                1. Moin!

                  1. Er benutzt Google:
                    http://www.google.de/search?q=Kontakt+%2B%22Ihre+Nachricht%22

                  Das nützt dir noch gar nichts.

                  Nein: Du hast nicht begriffen.

                  1. Daraus generiere man mit regulären Ausdrücken (oder primitiver) eine Liste der mutmaßlich anzugreifbaren Seiten.

                  sehr mutmasslich.

                  Das reicht doch völlig aus! Eine false-positive fliegt bei der späteren Bearbeitung durch. Die schiere MASSE macht es. Es geht nicht um die relativen 100% Erfolg, es geht um so viele Erfolge in absoluten Zahlen wie möglich. Und so lange die Netz- oder Rechenlast für den Spammer billig ist wird es ihn einen Dreck kümmern.

                  MFFG (Mit freundlich- friedfertigem Grinsen)

                  fastix

                  1. Vielen Dank für die reichhaltigen Postings.

                    Es hat mir geholfen einen Einblick in die Thematik zu bekommen und ich werde mich dann mal an die Arbeit machen.

                    Gruss
                    Matthias

          2. Was sind deine "Arbeitsschritte" um auf einer Website ein Formular zu finden und auszufüllen?

            Dem Link "Gästebuch" folgen, ...

            Zu welchem Resultat führt dies, wenn kein Cookie gesendet wird?

            ... PHP-Skript wird aufgerufen, dieses übergibt Daten

            wowo woher stammen die Daten?

            an das HTML-Template und die HTML-Seite mit dem Fromular wird dargestellt.

            Siehst du, du gibst mir Zugriff auf das Formular. Ich kann das Formular gerade so gut aus meinem eigenen Cache holen und dich bombardieren.

            mfg Beat

            --
            ><o(((°>           ><o(((°>
               <°)))o><                     ><o(((°>o
            Der Valigator leibt diese Fische
  2. Um die Website vor Spam-Bots zu schützen sollte man ja zuerst einmal Wissen wie diese arbeiten.

    Nein, das ist unnötig! Spambots gibt es in so vielen Varietäten,
    vom Perl Mechanize über Browser Plugins bis zu den Billiphilippinos oder jenen, die ohne es zu wissen, über eine Captchalösung anderen zur Errichtung von Captcha geschützten Accounts ermöglichen.

    Um eine Website vor Spambots zu schützen, gilt es zuerst, Usability zu Ende zu denken. Beispiel Blogkomments oder Formmailer...

    • Sollen Doppelpostings möglich sein?
        nein-> dann gib jedem Formular eine unique-ID mit Verfallsdatum.
    • Kann der User jederzeit ein Posting ändern?
        nein -> dann erzwinge eine Vorschau.
    • Soll jeder Troll seinen Mist posten können?
        nein -> dann erzwinge für unregistrierte Beiträge eine Freischaltung.

    Wer Anwendungen aus Usersicht fertig programmiert, der erschlägt 95% der Spambots.

    Es gibt allerdings Bots die schwerer zu stoppen sind, wenn diese als Browserplugin laufen und ergo Cookies und Javascript ausführen.
    Hierbei gilt aber, dass sich Angriffe auf verbreitete Implementierungen konzentrieren.
    Wer z.B. seinen Formmailer selbst und richtig programmiert, oder ein weitgehend unbekanntes Produkt verwendet, ist kaum in der Schusslinie.

    Letztlich sind die geforderten Schutzmassnahmmen abhängig vom erzielbaren Schaden durch Missbrauch.

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
    1. vom Perl Mechanize über Browser Plugins bis zu den Billiphilippinos oder jenen, die ohne es zu wissen, über eine Captchalösung anderen zur Errichtung von Captcha geschützten Accounts ermöglichen.

      Du hast Chinaspammer vergessen oder Captcha-Lösungsdienste die dir 3 Pornobilder zeigen, wenn du ein grafisches Captcha gelöst hast.

      Sämtliche Mensch-Maschine-Prüfung ist hier praktisch nicht mehr relevant, dafür gibts andere Methoden wie etwa Plausiblitätsprüfungen oder statistische Algorithmen.

  3. Moin!

    Um die Website vor Spam-Bots zu schützen sollte man ja zuerst einmal Wissen wie diese arbeiten. Jetzt wäre für mich mal interessant wie die Grundlegende Arbeitsweise eines Bots ist?

    Der Bot sucht mit einer Suchmaschine nach Treffern für "Klassische" Bezeichnungen für Formularfelder in Gästebüchern und auf Kontaktseiten.

    1. Gegenmaßnahme: Diese mit robots.txt sperren, so dass diese Formulare in Suchmaschinen gar nicht erst auftauchen.

    User-agent: *  
    Disallow: /formular.html
    

    2. Gegenmaßnahme: Formulare erst mit Ajax nachladen oder mit document.write schreiben.
    3. Gegenmaßnahme: zufälligen Name des Formularfeldes in eine Session-Variable speichern, beim Rücksenden der Formulardaten dieses auslesen: $message=$_POST[$_SESSION['message_input']]
    4. Gegenmaßnahme: Dummy-Feld einbauen und schauen, ob dieses ausgefüllt wurde: Höflich "Danke" sagen und ab mit der IP in die .htaccess.

    CSS:
    #nachricht_dummy { display:none; }

    HTML:
    <textarea name="nachricht" id="nachricht_dummy"></textarea>

    Der Bot füllt Formulare nicht wirklich aus. Er parst bestenfalls das HTML - und das auf eine sehr primitive Weise (Suche nach Formularfeldern) GET, POST, COOKIE kann auch ein Bot senden, dass kann sogar ein Shellskript mit wget erledigen.

    1. Gegenmaßnahme: Keine Kommentare, Gästebucheinträge ohne Freigabe.
    2. Primitive Spamfilter helfen. Einer der Bots trägt zum Beispiel immer:

    <a href="http://..."> [url]http://...[/url] http://... ein.

    Das ist leicht zu erkennen und die betreffende ip wandert auch gleich in die .htaccess

    Diese Maßnahmen erschlagen den absolut größten Teil des Bot-Spams. Erst wenn Deine Seite auf Grund gigantischer Reichweite für ausgefeiltere Spam-Bots von Interesse ist  - diese zu programmieren, instand zu halten (an Abwehr anzupassen) kostet viel Geld, dass auch verdient werden muss - musst Du mehr machen.

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix

      1. Gegenmaßnahme: Formulare erst mit Ajax nachladen oder mit document.write schreiben.
        fastix

      Es gibt allerdings Bots die schwerer zu stoppen sind, wenn diese als Browserplugin laufen und ergo Cookies und Javascript ausführen.
      Hierbei gilt aber, dass sich Angriffe auf verbreitete Implementierungen konzentrieren.
      mfg Beat

      Also kann man davon ausgehen, dass ein Grossteil der Bots kein Javascript interpretieren kann?

      Sind Captcha-Abfragen mittlerweile als Unsicher anzusehen? Mir fällt dabei als erstes reCAPTCHA ein oder einfach aus Sicht des Benutzerkomforts nicht Wünschenswert?

      Gruss
      Matthias

      1. Also kann man davon ausgehen, dass ein Grossteil der Bots kein Javascript interpretieren kann?

        Davon würde ich nicht ausgehen - ich würde davon ausgehen, dass ein Großteil der Bots das sogar bewusst kann. Es kann natürlich aber völlig anders sein, nachdem es keine konkreten Zahlen gibt.

        Ein Beispiel sind eingeschleuste Extensions im Browser des Benutzers (die als infizierte Zombies eines Botnets gesteuert werden) die das Surfverhalten des Benutzers überwachen und sich ansehen, wie der ein Formular ausfüllt und dieses verhalten dann imitiert - alles was der Browser und der Benutzer kann, kann der "Bot" quasi auch - nur das lösen eines Captchas muss dann noch irgendwie bewältigt werden.

        Sind Captcha-Abfragen mittlerweile als Unsicher anzusehen? Mir fällt dabei als erstes reCAPTCHA ein oder einfach aus Sicht des Benutzerkomforts nicht Wünschenswert?

        Sämtliche Turing-Tests sind für die heutigen Vverhältnisse unsinnig oder nicht mehr ausreichend - die Dinger wurden in den 50er-Jahren erfunden, das ist gut 60 Jahre her - mittlerweile ist es so, dass es Maschinen gibt die sich menschlicher verhalten, als Menschen - oder eher so, dass es Menschen gibt die sich verhalten wie Maschinen.

        Natürlich nur in dem Kontext, dass sie z.B. ein Captcha nicht lösen können weil sie die Sprache nicht verstehen, nicht rechnen können, Blind sind, eine Rechtschreibschwäche haben, schneller tippen können als erwartet, ...

      2. Hello,

        Also kann man davon ausgehen, dass ein Grossteil der Bots kein Javascript interpretieren kann?

        Gegenfragen:
          Liegt der Code vom Firefox und von der Developer-Extension offen?
          Kann man sich mittels Developer-Extension den generierten Quelltext anzeigen lassen?

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
      3. Moin!

        Also kann man davon ausgehen, dass ein Grossteil der Bots kein Javascript interpretieren kann?

        Nach meiner Erfahrung kann der absolute der Grossteil der Bots kein Javascript, sondern ist primitiv und stürzt sich halt auf ungesicherte Formulare. Gibt ja genug davon. Das ist eine Möglichkeit wirtschaftlich zu spammen: So primitiv wie es nur geht. Die andere Methode, nämlich großen Aufwand zu treiben, konzentriert auf Grund des Aufwandes auf wenige Webseiten mit großer Reichweite. Die Ökonomie ist hier der Antriebsfaktor.

        Sind Captcha-Abfragen mittlerweile als Unsicher anzusehen? Mir fällt dabei als erstes reCAPTCHA ein oder einfach aus Sicht des Benutzerkomforts nicht Wünschenswert?

        Captcha-Abfragen sind, je weniger diese mit OCR-Programmen genackt werden können, auch um so mehr "nervig" und spätestens via Social Engineering zu knacken. Man bietet irgendwo ein attraktives Spiel an, bewirbt dieses auch und lässt die Spieler je Level ein fremden Captchas knacken - angeblich damit dieser nicht Angst haben muss gegen Maschinen zu spielen. Selbst Google macht übrigens ähnliches und lässt sich auf diese Weise beim Scannen/OCR von Büchern helfen. Eine andere Methode ist es hier auf Grund des geringeren Preises(!) angelernte Menschen in Billiglohnländern 16 Stunden am Tag Spam versenden zu lassen.

        Die Frage: Wozu der Aufwand? Es ist die gleiche Prämisse wie oben. Nur auf wenige, große Seiten mit großer Reichweite spezialisierte Bots treiben diesen Aufwand, der Rest ist zum Schreien primitiv. Immerhin gibt es für einen Klick auf einen solchen Link auch nur Beträge zwischen geschätzten 1 und 10 Cent für den Betreiber der Spammaschine und die meisten dieser Links werden recht schnell wieder gelöscht. Von diesen 1-10 Cent muss der Aufwand für Personal, Programmierung und Administration (z.B. dauernd neue Server und Domains) abgezogen werden.

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix

        1. Moin!

          Ich schrieb: "Selbst Google macht übrigens ähnliches und lässt sich auf diese Weise beim Scannen/OCR von Büchern helfen."

          Da ist es ja.

          Nur eines dieser Captchas ist ein echtes, das andere konnte Googles OCR-Programm nicht knacken. Das geht natürlich auch mit Captchas Dritter.

          MFFG (Mit freundlich- friedfertigem Grinsen)

          fastix

          1. Ich schrieb: "Selbst Google macht übrigens ähnliches und lässt sich auf diese Weise beim Scannen/OCR von Büchern helfen."

            Da ist es ja.

            Nur eines dieser Captchas ist ein echtes, das andere konnte Googles OCR-Programm nicht knacken. Das geht natürlich auch mit Captchas Dritter.

            Ja, reCAPTCHA sagte Matthias ohnehin schon :p

            <del>OCR</del><ins>reading</ins>-FAIL :)

        2. Captcha-Abfragen sind, je weniger diese mit OCR-Programmen genackt werden können, auch um so mehr "nervig" und spätestens via Social Engineering zu knacken. Man bietet irgendwo ein attraktives Spiel an, bewirbt dieses auch und lässt die Spieler je Level ein fremden Captchas knacken - angeblich damit dieser nicht Angst haben muss gegen Maschinen zu spielen. Selbst Google macht übrigens ähnliches und lässt sich auf diese Weise beim Scannen/OCR von Büchern helfen. Eine andere Methode ist es hier auf Grund des geringeren Preises(!) angelernte Menschen in Billiglohnländern 16 Stunden am Tag Spam versenden zu lassen.

          Sag ich doch :)

          Nur dass es bei dir "Spiele" und "Billiglohnländer" sind ;)

          1. Nur dass es bei dir "Spiele" und "Billiglohnländer" sind ;)

            Zu dem Thema wurde gerade ein Artikel auf Golem veröffentlicht. Billigkräfte lösen Captchas

            Gruss
            Matthias