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:
- sur la formation d'un vecteur de fonctionnalités pour la session,
- 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.
[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.