
Anti-Automation System
Predator ist eine Prototyp-Webanwendung, die entwickelt wurde, um Anti-Crawling-, Anti-Automations- und Bot-Erkennungstechniken zu demonstrieren. Es kann als Honeypot, Anti-Crawling-System oder Testumgebung für Fehlalarme von Schwachstellen-Scannern verwendet werden.
Warnung: Ich rate dringend davon ab, die demonstrierten Methoden auf einem Produktionsserver einzusetzen, ohne genau zu wissen, was sie tun. Denken Sie daran: Es sollten nur die Techniken implementiert werden, die für die jeweilige Webanwendung geeignet erscheinen. Predator ist eine Sammlung von Techniken, dessen Code nicht unverändert übernommen werden sollte.
Die folgende Mindmap ist eine lockere Visualisierung, wie die hier demonstrierten Techniken in einer Produktionsumgebung implementiert werden können.

Hinweis: Die Zahlen und Faktoren in der „Beobachtungsphase“ können verwendet werden, um einem Client einen Reputationswert zuzuweisen, der dann als starker Indikator für bösartige Aktivitäten dienen kann, sobald ein Schwellenwert überschritten wird.
HTTP-Header, die von Bots gesendet werden, sind oft in einer anderen Reihenfolge als bei einem echten Browser oder fehlen ganz. Viele Bots geben sich aus ethischen Gründen im User-Agent-Header zu erkennen, während andere gar keinen senden.
Die meisten der hier beschriebenen HTML-Mutationstechniken können mit browserbasierten Frameworks wie selenium und puppeteer umgangen werden, aber sie können mit verschiedenen Tests erkannt werden, wie in isBot.js implementiert.
Die meisten Bots stellen nur Anfragen an Webseiten und Bilder, aber Ressourcendateien wie .css werden oft ignoriert, da sie von der verwendeten HTTP-Implementierung nicht heruntergeladen werden. Bots können erkannt werden, wenn das Verhältnis von Webseiten/Bildern zu solchen Ressourcendateien einen vordefinierten Schwellenwert überschreitet.
Viele HTML-Parser, die in Crawlern verwendet werden, können kaputtes HTML nicht so verarbeiten wie Browser. Wenn man beispielsweise den folgenden Link in einem Browser anklickt, gelangt man zu page_1, aber betroffene Parser parsen den letzteren Wert, also page_2
<a/href="page_1"/href="page_2">Click</a>
Dies kann verwendet werden, um Crawler fernzuhalten und zu sperren, ohne die Benutzererfahrung zu beeinträchtigen.
Einige Links werden mit CSS vor Benutzern versteckt, aber automatisierte Programme können sie trotzdem sehen. Diese Links können verwendet werden, um Bots zu erkennen und eine gewünschte Aktion durchzuführen, wie z.B. die IP-Adresse zu sperren.
Wenn Predator vermutet, dass der Besucher ein Bot ist, generiert es eine zufällige Anzahl zufälliger Links, die auf eine Seite (limbo.php) verweisen, die weitere zufällige Links enthält, und dieser Vorgang wiederholt sich immer wieder.
Schwachstellen-Scanner geben normalerweise eine Payload ein und prüfen, ob die Web-App auf eine bestimmte Weise reagiert. Predator kann so tun, als ob es eine Schwachstelle hätte, indem es die erwartete Antwort, also die Signatur, im HTML einbettet. Predator ahmt derzeit die folgenden Schwachstellen nach:
Diese Methode ermöglicht es, einen Honeypot einzurichten, ohne tatsächlich anfälligen Code zu hosten, und dient als Testumgebung für Fehlalarmtests.
PatheticGeek hat die gesamte Front-End-Magie vollbracht, um Predator gut aussehen zu lassen.