Une approche pour détecter les robots Web ou comment nous avons utilisé l'apprentissage automatique pour classer les robots

Le volume de trafic sur Internet est en croissance ( surtout ces derniers mois, lorsque nous nous sommes tous retrouvés à distance et que beaucoup ont transféré leurs activités en ligne). Le nombre de moyens automatisés d'interagir avec le contenu des sites Web augmente également et, par conséquent, le filtrage des activités automatisées indésirables devient de plus en plus important. Aujourd'hui, jusqu'à 50% de l'activité Internet est générée automatiquement à l' aide de robots Web (ou simplement de robots). Et dans ce cas, nous parlons de tout programme actif sur le réseau, quel que soit le but de son utilisation. En rÚgle générale, ces programmes exécutent des actions répétitives et faciles à automatiser. Par exemple, les moteurs de recherche Google ou Yandex utilisent des robots d'exploration pour collecter périodiquement du contenu et indexer des pages sur Internet.



Il existe donc deux types de robots Web: lĂ©gitimes et malveillants. Les plus lĂ©gitimes incluent les moteurs de recherche, les lecteurs RSS. Des exemples de robots Web malveillants sont les scanners de vulnĂ©rabilitĂ©, les scrapers, les spammeurs, les robots d'attaque DDoS et les chevaux de Troie frauduleux par carte de paiement. Une fois le type de web bot identifiĂ©, diverses politiques peuvent lui ĂȘtre appliquĂ©es. Si le bot est lĂ©gitime, vous pouvez baisser la prioritĂ© de ses requĂȘtes au serveur ou baisser le niveau d'accĂšs Ă  certaines ressources. Si un bot est identifiĂ© comme malveillant, vous pouvez le bloquer ou l'envoyer au bac Ă  sable pour une analyse plus approfondie. Il est important de dĂ©tecter, d'analyser et de classer les robots Web, car ils peuvent nuire, par exemple, la fuite de donnĂ©es critiques pour l'entreprise. Et cela rĂ©duira Ă©galement la charge sur le serveur et rĂ©duira le soi-disant bruit dans le trafic, car jusqu'Ă  66% du trafic des robots Web est exactementtrafic malveillant .



Approches existantes



Il existe diffĂ©rentes techniques pour dĂ©tecter les robots Web dans le trafic rĂ©seau, allant de la limitation de la frĂ©quence des demandes Ă  un hĂŽte, de la liste noire des adresses IP, de l'analyse de la valeur de l'en-tĂȘte HTTP User-Agent, de la prise d'empreintes d'un appareil - et se terminant par la mise en Ɠuvre de CAPTCHA et l'analyse comportementale de l'activitĂ© du rĂ©seau Ă  l'aide de apprentissage automatique.



Mais collecter des informations de réputation sur un site et maintenir les listes noires à jour à l'aide de diverses bases de connaissances et de renseignements sur les menaces est un processus coûteux et laborieux, et lors de l'utilisation de serveurs proxy, ce n'est pas conseillé.



L'analyse du champ User-Agent en premiĂšre approximation peut sembler utile, mais rien n'empĂȘche un web bot ou un utilisateur de changer les valeurs de ce champ en un champ valide, se dĂ©guisant en utilisateur rĂ©gulier et utilisant un User-Agent valide pour le navigateur, ou en tant que bot lĂ©gitime. Appelons de tels imitateurs de webbots. L'utilisation de diverses empreintes digitales de l'appareil (suivi du mouvement de la souris ou vĂ©rification de la capacitĂ© du client Ă  rendre une page HTML) nous permet de mettre en Ă©vidence des robots Web plus difficiles Ă  dĂ©tecter qui imitent le comportement humain, par exemple, demander des pages supplĂ©mentaires (fichiers de style, icĂŽnes, etc.), analyser JavaScript. Cette approche est basĂ©e sur l'injection de code cĂŽtĂ© client, ce qui est souvent inacceptable, car une erreur lors de l'insertion d'un script supplĂ©mentaire peut interrompre l'application Web.



Il est Ă  noter que les robots web peuvent Ă©galement ĂȘtre dĂ©tectĂ©s en ligne: la session sera Ă©valuĂ©e en temps rĂ©el. Une description de cette formulation du problĂšme peut ĂȘtre trouvĂ©e dans Cabri et al. [1], ainsi que dans les travaux de Zi Chu [2]. Une autre approche consiste Ă  analyser uniquement aprĂšs la fin de la session. La plus intĂ©ressante, Ă©videmment, est la premiĂšre option, qui vous permet de prendre des dĂ©cisions plus rapidement.



L'approche proposée



Nous avons utilisĂ© des techniques d'apprentissage automatique et la pile technologique ELK (Elasticsearch Logstash Kibana) pour identifier et classer les robots Web. Les objets de recherche Ă©taient des sessions HTTP. La session est une sĂ©quence de requĂȘtes provenant d'un nƓud (valeur unique de l'adresse IP et du champ User-Agent dans la requĂȘte HTTP) dans un intervalle de temps fixe. Derek et Gohale utilisent un intervalle de 30 minutes pour dĂ©finir les limites de la session [3]. Iliu et al. Soutiennent que cette approche ne garantit pas l'unicitĂ© de session rĂ©elle, mais elle est toujours acceptable. Étant donnĂ© que le champ User-Agent peut ĂȘtre modifiĂ©, plus de sessions peuvent apparaĂźtre qu'il n'y en a rĂ©ellement. Par consĂ©quent, Nikiforakis et ses co-auteurs proposent plus de rĂ©glages en fonction de la prise en charge d'ActiveX, de l'activation de Flash, de la rĂ©solution de l'Ă©cran, de la version du systĂšme d'exploitation.



Nous considérerons une erreur acceptable dans la formation d'une session séparée si le champ User-Agent change dynamiquement. Et pour identifier les sessions de bot, nous allons créer un modÚle de classification binaire clair et utiliser:



  • activitĂ© rĂ©seau automatique gĂ©nĂ©rĂ©e par un bot Web (tag bot);
  • activitĂ© de rĂ©seau gĂ©nĂ©rĂ©e par l'homme (tag human).


Pour classer les robots Web par type d'activité, construisons un modÚle multi-classes à partir du tableau ci-dessous.

Nom La description Étiquette Exemples de
Crawlers Bots Web

collectant

des pages Web
robot d'exploration SemrushBot,

360Spider,

Heritrix
RĂ©seaux sociaux Bots Web de divers

réseaux sociaux
réseau social LinkedInBot,

WhatsApp Bot,

Facebook bot
Lecteurs RSS -,



RSS
rss Feedfetcher,

Feed Reader,

SimplePie
-

search_engines Googlebot, BingBot,

YandexBot
-,









libs_tools Curl, Wget,

python-requests,

scrapy
- bots
,







User-Agent



unknown


Nous allons également résoudre le problÚme de la formation en ligne du modÚle.







Schéma conceptuel de l'approche proposée



Cette approche comporte trois Ă©tapes: formation et tests, prĂ©diction, analyse des rĂ©sultats. Examinons les deux premiers plus en dĂ©tail. Conceptuellement, l'approche suit le modĂšle classique d'apprentissage et d'application de modĂšles d'apprentissage automatique. PremiĂšrement, les mesures de qualitĂ© et les attributs de classification sont dĂ©terminĂ©s. AprĂšs cela, un vecteur de caractĂ©ristiques est formĂ© et une sĂ©rie d'expĂ©riences (diverses vĂ©rifications croisĂ©es) sont effectuĂ©es pour valider le modĂšle et sĂ©lectionner des hyperparamĂštres. À la derniĂšre Ă©tape, le meilleur modĂšle est sĂ©lectionnĂ© et la qualitĂ© du modĂšle est vĂ©rifiĂ©e sur un Ă©chantillon diffĂ©rĂ©.



Formation et tests de modĂšles



Le module packetbeat est utilisĂ© pour analyser le trafic. Les requĂȘtes HTTP brutes sont envoyĂ©es Ă  logstash, oĂč les tĂąches sont gĂ©nĂ©rĂ©es Ă  l'aide d'un script Ruby en termes Celery. Chacun d'eux fonctionne avec un identifiant de session, une heure de requĂȘte, un corps de requĂȘte et des en-tĂȘtes. Identifiant de session (clĂ©) - la valeur de la fonction de hachage de la concatĂ©nation de l'adresse IP et de l'agent utilisateur. À ce stade, deux types de tĂąches sont crĂ©Ă©s:



  1. sur la formation d'un vecteur de fonctionnalités pour la session,
  2. en Ă©tiquetant la classe en fonction du texte de la requĂȘte et de l'agent utilisateur.


Ces tĂąches sont envoyĂ©es Ă  une file d'attente, oĂč les gestionnaires de messages les exĂ©cutent. Ainsi, le gestionnaire de l' Ă©tiqueteuse effectue la tĂąche d'Ă©tiqueter la classe en utilisant un jugement d'expert et des donnĂ©es ouvertes du service de navigation en fonction de l'agent utilisateur utilisĂ©; le rĂ©sultat est Ă©crit dans le stockage clĂ©-valeur. Le processeur de session gĂ©nĂšre un vecteur de caractĂ©ristiques (voir le tableau ci-dessous) et Ă©crit le rĂ©sultat pour chaque clĂ© dans le stockage clĂ©-valeur, et dĂ©finit Ă©galement la durĂ©e de vie de la clĂ© (TTL).

Signe La description
len Nombre de demandes par session
len_pages Nombre de requĂȘtes par session dans les pages

(l'URI se termine par .htm, .html, .php,

.asp, .aspx, .jsp)
len_static_request Nombre de requĂȘtes par session dans

les pages statiques
len_sec Durée de la session en secondes
len_unique_uri Nombre de requĂȘtes par session

contenant un URI unique
headers_cnt Nombre d'en-tĂȘtes par session
has_cookie Y a-t-il un en-tĂȘte de cookie
has_referer Y a-t-il un en-tĂȘte Referer
mean_time_page Temps moyen par page par session
mean_time_request Temps moyen par demande par session
mean_headers Nombre moyen d'en-tĂȘtes par session


C'est ainsi que la matrice de caractĂ©ristiques est formĂ©e et que l'Ă©tiquette de classe cible pour chaque session est dĂ©finie. Sur la base de cette matrice, un entraĂźnement pĂ©riodique des modĂšles et une sĂ©lection ultĂ©rieure d'hyperparamĂštres ont lieu. Pour la formation, nous avons utilisĂ©: la rĂ©gression logistique, les machines vectorielles de support, les arbres de dĂ©cision, le boosting de gradient sur les arbres de dĂ©cision et un algorithme de forĂȘt alĂ©atoire. Les rĂ©sultats les plus pertinents ont Ă©tĂ© obtenus Ă  l'aide de l'algorithme de forĂȘt alĂ©atoire.



Prédiction



Lors de l'analyse du trafic, le vecteur des attributs de session est mis Ă  jour dans le stockage clĂ©-valeur: lorsqu'une nouvelle requĂȘte apparaĂźt dans la session, les attributs la dĂ©crivant sont recalculĂ©s. Par exemple, le nombre moyen d'en-tĂȘtes dans une session (mean_headers) est calculĂ© chaque fois qu'une nouvelle demande est ajoutĂ©e Ă  la session. Le prĂ©dicteur envoie le vecteur de fonction de session au modĂšle et Ă©crit la rĂ©ponse du modĂšle dans Elasticsearch pour analyse.



Expérience



Nous avons testĂ© notre solution sur le trafic du portail SecurityLab.ru . Volume de donnĂ©es - plus de 15 Go, plus de 130 heures. Le nombre de sessions est supĂ©rieur Ă  10 000. Du fait que le modĂšle proposĂ© utilise des fonctionnalitĂ©s statistiques, les sessions contenant moins de 10 requĂȘtes n'ont pas Ă©tĂ© impliquĂ©es dans la formation et les tests. Nous avons utilisĂ© les mesures de qualitĂ© classiques comme mesures de qualitĂ© - prĂ©cision, exhaustivitĂ© et mesure F pour chaque classe.



Test du modÚle de détection des robots Web



Nous allons construire et évaluer un modÚle de classification binaire, c'est-à-dire que nous allons détecter les bots, puis nous les classerons par type d'activité. Sur la base des résultats d'une validation croisée stratifiée quintuple (c'est exactement ce qui est requis pour les données considérées, car il y a un fort déséquilibre de classe), nous pouvons dire que le modÚle construit est assez bon (précision et exhaustivité - plus de 98%) est capable de séparer les classes d'utilisateurs humains et de bots.

Précision moyenne Plénitude moyenne Mesure F moyenne
bot 0,86 0,90 0,88
Humain 0,98 0,97 0,97


Les résultats du test du modÚle sur un échantillon différé sont présentés dans le tableau ci-dessous.

Précision Complétude Mesure F Nombre d'

exemples
bot 0,88 0,90 0,89 1816
Humain 0,98 0,98 0,98 9071


Les valeurs des métriques de qualité sur l'échantillon différé coïncident approximativement avec les valeurs des métriques de qualité lors de la validation du modÚle, ce qui signifie que le modÚle sur ces données peut généraliser les connaissances acquises lors de la formation.

Considérons les erreurs du premier type. Si ces données sont balisées de maniÚre experte, la matrice d'erreur changera considérablement. Cela signifie que certaines erreurs ont été commises lors du balisage des données pour le modÚle, mais que le modÚle était toujours capable de reconnaßtre correctement ces sessions.

Précision Complétude Mesure F Nombre d'

exemples
bot 0,93 0,92 0,93 2446
Humain 0,98 0,98 0,98 8441


Regardons un exemple d'imitateurs de session. Il contient 12 requĂȘtes similaires. L'une des demandes est illustrĂ©e dans la figure ci-dessous.







Toutes les demandes ultĂ©rieures de cette session ont la mĂȘme structure et ne diffĂšrent que par l'URI.







Notez que ce webbot utilise un User-Agent valide, ajoute un champ Referer, gĂ©nĂ©ralement utilisĂ© de maniĂšre non automatique, et le nombre d'en-tĂȘtes dans une session est petit. De plus, les caractĂ©ristiques temporelles des requĂȘtes - temps de session, temps moyen par requĂȘte - permettent de dire que cette activitĂ© est automatique et appartient Ă  la classe des lecteurs RSS. Dans ce cas, le bot lui-mĂȘme est dĂ©guisĂ© en utilisateur ordinaire.



Test du modĂšle de classification des robots Web



Pour classer les robots Web par type d'activitĂ©, nous utiliserons les mĂȘmes donnĂ©es et le mĂȘme algorithme que dans l'expĂ©rience prĂ©cĂ©dente. Les rĂ©sultats du test du modĂšle sur un Ă©chantillon diffĂ©rĂ© sont prĂ©sentĂ©s dans le tableau ci-dessous.

Précision Complétude Mesure F Nombre d'

exemples
bot 0,82 0,81 0,82 194
robot d'exploration 0,87 0,72 0,79 65
libs_tools 0,27 0,17 0,21 dix-huit
rss 0,95 0,97 0,96 1823
moteurs de recherche 0,84 0,76 0,80 228
réseau social 0,80 0,79 0,84 73
inconnue 0,65 0,62 0,64 45


La qualitĂ© de la catĂ©gorie libs_tools est faible, mais le volume insuffisant d'exemples pour l'Ă©valuation ne nous permet pas de parler de l'exactitude des rĂ©sultats. Une deuxiĂšme sĂ©rie d'expĂ©riences devrait ĂȘtre menĂ©e pour classer les robots Web sur plus de donnĂ©es. Nous pouvons dire avec certitude que le modĂšle actuel avec une prĂ©cision et une exhaustivitĂ© assez Ă©levĂ©es est capable de sĂ©parer les classes de lecteurs RSS, de moteurs de recherche et de robots en gĂ©nĂ©ral.



Selon ces expérimentations sur les données considérées, plus de 22% des sessions (avec un volume total de plus de 15 Go) sont créées automatiquement, et parmi elles 87% sont liées à l'activité de bots généraux, de bots inconnus, de lecteurs RSS, de robots Web utilisant diverses bibliothÚques et utilitaires. ... Ainsi, si vous filtrez le trafic réseau des robots Web par type d'activité, l'approche proposée réduira la charge sur les ressources serveur utilisées d'au moins 9 à 10%.



Test du modĂšle de classification des robots Web en ligne



L'essence de cette expérience est la suivante: en temps réel, aprÚs analyse du trafic, des entités sont identifiées et des vecteurs de caractéristiques sont formés pour chaque session. Périodiquement, chaque session est envoyée au modÚle pour la prédiction, dont les résultats sont enregistrés.







Mesure F du modĂšle dans le temps pour chaque classe Les



graphiques ci-dessous illustrent l'évolution de la valeur des métriques de qualité dans le temps pour les classes les plus intéressantes. La taille des points sur eux est liée au nombre de sessions dans l'échantillon à un moment donné.







Précision, exhaustivité, mesure F pour la classe des moteurs de recherche







Précision, exhaustivité, mesure F pour la classe outils libs







Précision, exhaustivité, mesure F pour la classe rss







Précision, exhaustivité, mesure F pour la classe crawler







Précision, exhaustivité, mesure F pour classe humaine



Pour un certain nombre de classes (humain, rss, moteurs de recherche) sur les donnĂ©es considĂ©rĂ©es, la qualitĂ© du modĂšle est acceptable (prĂ©cision et exhaustivitĂ© supĂ©rieures Ă  80%). Pour la classe crawler, avec une augmentation du nombre de sessions et un changement qualitatif du vecteur de caractĂ©ristiques pour cet Ă©chantillon, la qualitĂ© du travail du modĂšle augmente: l'exhaustivitĂ© est passĂ©e de 33% Ă  80%. Il est impossible de tirer des conclusions raisonnables pour la classe libs_tools, car le nombre d'exemples pour cette classe est petit (moins de 50); par consĂ©quent, les rĂ©sultats nĂ©gatifs (mauvaise qualitĂ©) ne peuvent ĂȘtre confirmĂ©s.



Principaux résultats et développement ultérieur



Nous avons décrit une approche pour détecter et classer les robots Web à l'aide d'algorithmes d'apprentissage automatique et en utilisant des fonctionnalités statistiques. Sur les données considérées, la précision et l'exhaustivité moyennes de la solution proposée pour la classification binaire sont supérieures à 95%, ce qui indique que l'approche est prometteuse. Pour certaines classes de robots Web, la précision et l'exhaustivité moyennes sont d'environ 80%.



La validation des modÚles construits nécessite une réelle évaluation de la session. Comme indiqué précédemment, les performances du modÚle sont considérablement améliorées lorsque le balisage correct est disponible pour la classe cible. Malheureusement, il est maintenant difficile de créer automatiquement un tel balisage et vous devez recourir au balisage expert, ce qui complique la construction de modÚles d'apprentissage automatique, mais vous permet de trouver des modÚles cachés dans les données.



Pour approfondir le problÚme de la classification et de la détection des robots Web, il convient de:



  • attribuer des classes supplĂ©mentaires de robots et se recycler, tester le modĂšle;
  • ajoutez des signes supplĂ©mentaires pour classer les robots Web. Par exemple, l'ajout d'un attribut robots.txt, qui est binaire et est responsable de la prĂ©sence ou de l'absence d'accĂšs Ă  une page robots.txt, vous permet d'augmenter le score F moyen pour une classe de robots Web de 3% sans aggraver les autres mĂ©triques de qualitĂ© pour d'autres classes;
  • faire un balisage plus correct pour la classe cible, en tenant compte des mĂ©ta-fonctionnalitĂ©s supplĂ©mentaires et du jugement d'expert.


Auteur : Nikolay Lyfenko, spécialiste principal, Advanced Technologies Group, Positive Technologies



Sources
[1] Cabri A. et al. Online Web Bot Detection Using a Sequential Classification Approach. 2018 IEEE 20th International Conference on High Performance Computing and Communications.

[2] Chu Z., Gianvecchio S., Wang H. (2018) Bot or Human? A Behavior-Based Online Bot Detection System. In: Samarati P., Ray I., Ray I. (eds) From Database to Cyber Security. Lecture Notes in Computer Science, vol. 11170. Springer, Cham.

[3] Derek D., Gokhale S. An integrated method for real time and offline web robot detection. Expert Systems 33. 2016.

[4] Iliou Ch., et al. Towards a framework for detecting advanced Web bots. Proceedings of the 14th International Conference on Availability, Reliability and Security. 2019.

[5] Nikiforakis N., Kapravelos A., Joosen W., Kruegel C., Piessens F. and Vigna G. Cookieless Monster: Exploring the Ecosystem of Web-Based Device Fingerprinting. 2013 IEEE Symposium on Security and Privacy, Berkeley, CA, 2013, pp. 541—555.



All Articles