
Système anti-automatisation
Predator est un prototype d'application web conçu pour démontrer des techniques anti-crawling, anti-automatisation et de détection de bots. Il peut être utilisé comme un honeypot, un système anti-crawling ou un banc d'essai de faux positifs pour les scanners de vulnérabilités.
Avertissement : Je déconseille fortement l'utilisation des méthodes démontrées sur un serveur de production sans savoir exactement ce qu'elles font. Rappelez-vous que seules les techniques qui semblent utilisables selon l'application web devraient être implémentées. Predator est une collection de techniques, son code ne doit pas être utilisé tel quel.
La carte mentale ci-dessous est une visualisation approximative de la manière dont les techniques démontrées ici peuvent être implémentées dans un environnement de production.

Remarque : Les nombres et facteurs de l'« Observation Phase » peuvent être utilisés pour attribuer une réputation à un client, laquelle peut ensuite servir d'indicateur fort d'activité malveillante une fois un seuil atteint.
Les en-têtes HTTP envoyés par les bots sont souvent dans un ordre différent par rapport à un vrai navigateur, ou sont totalement absents. Beaucoup de bots se dévoilent dans l'en-tête User-Agent par souci d'éthique, tandis que d'autres n'en envoient aucun.
La plupart des techniques de mutation HTML décrites ici peuvent être contournées avec des frameworks basés sur navigateur tels que selenium et puppeteer, mais elles peuvent être détectées grâce à divers tests comme implémenté dans isBot.js.
La plupart des bots ne font des requêtes qu'aux pages web et aux images, mais les fichiers de ressources tels que .css sont souvent ignorés car ils ne sont pas téléchargés par l'implémentation HTTP utilisée. Les bots peuvent être détectés lorsque le rapport pages web/images et fichiers de ressources de ce type devient supérieur à un seuil prédéfini.
Beaucoup de parseurs HTML utilisés dans les crawlers ne savent pas gérer le HTML cassé comme le font les navigateurs. Par exemple, cliquer sur le lien suivant dans un navigateur mène à page_1, mais les parseurs affectés analysent la dernière valeur, c'est-à-dire page_2
<a/href="page_1"/href="page_2">Click</a>
Cela peut être utilisé pour éloigner et bannir les crawlers sans affecter l'expérience utilisateur.
Certains liens sont masqués aux utilisateurs à l'aide de CSS, mais les programmes automatisés peuvent toujours les voir. Ces liens peuvent être utilisés pour détecter les bots et prendre une action souhaitée, comme bannir l'adresse IP.
Lorsque Predator soupçonne que le visiteur est un bot, il génère un nombre aléatoire de liens aléatoires qui mènent vers une page (limbo.php) contenant encore plus de liens aléatoires, et ce processus se répète.
Les scanners de vulnérabilités injectent généralement une charge utile et observent si l'application web répond d'une certaine manière. Predator peut faire semblant de présenter une vulnérabilité en incluant la réponse attendue, c'est-à-dire la signature, dans le HTML.
Predator imite actuellement les vulnérabilités suivantes :
Cette méthode permet de mettre en place un honeypot sans héberger réellement de code vulnérable et sert de banc d'essai pour les tests de faux positifs.
PatheticGeek a fait toute la magie du front-end pour donner à Predator une belle apparence.