لذلك ، هناك نوعان من روبوتات الويب - شرعية وخبيثة. تتضمن المصادر الشرعية محركات البحث وقارئات RSS. من أمثلة برامج الروبوت الضارة على شبكة الإنترنت أدوات فحص نقاط الضعف والكاشطات ومرسلي البريد العشوائي وروبوتات هجمات DDoS وأحصنة طروادة المزورة لبطاقات الدفع بمجرد تحديد نوع روبوت الويب ، يمكن تطبيق سياسات مختلفة عليه. إذا كان الروبوت شرعيًا ، فيمكنك تقليل أولوية طلباته إلى الخادم أو خفض مستوى الوصول إلى موارد معينة. إذا تم تحديد روبوت على أنه ضار ، فيمكنك حظره أو إرساله إلى وضع الحماية لمزيد من التحليل. يعد اكتشاف روبوتات الويب وتحليلها وتصنيفها أمرًا مهمًا لأنها يمكن أن تلحق الضرر ، على سبيل المثال ، تسرب البيانات المهمة للأعمال. وأيضًا سيقلل الحمل على الخادم ويقلل مما يسمى الضوضاء في حركة المرور ، لأن ما يصل إلى 66٪ من حركة مرور روبوت الويب هي بالضبطحركة المرور الخبيثة .
الأساليب الحالية
هناك تقنيات مختلفة لاكتشاف روبوتات الويب في حركة مرور الشبكة ، تتراوح من تقييد تكرار الطلبات إلى مضيف ، وإدراج عناوين IP في القائمة السوداء ، وتحليل قيمة رأس HTTP لعامل المستخدم ، وأخذ بصمات الجهاز - وتنتهي بتنفيذ اختبارات CAPTCHA ، والتحليل السلوكي لنشاط الشبكة باستخدام التعلم الالي.
لكن جمع معلومات السمعة حول موقع ما والحفاظ على القوائم السوداء محدثة باستخدام قواعد المعرفة المختلفة وذكاء التهديدات عملية مكلفة وشاقة ، وعند استخدام خوادم بروكسي ، لا ينصح بها.
قد يبدو تحليل حقل User-Agent في أول تقدير تقريبي مفيدًا ، لكن لا شيء يمنع روبوت الويب أو المستخدم من تغيير قيم هذا الحقل إلى قيمة صالحة ، أو التنكر كمستخدم عادي واستخدام وكيل مستخدم صالح للمتصفح ، أو كروبوت شرعي. دعنا نسمي هذه الروبوتات منتحلي الشخصية. يتيح لنا استخدام بصمات أصابع مختلفة للأجهزة (تتبع حركة الماوس أو التحقق من قدرة العميل على عرض صفحة HTML) تمييز روبوتات الويب الأكثر صعوبة في الكشف عنها والتي تحاكي السلوك البشري ، على سبيل المثال ، طلب صفحات إضافية (ملفات الأنماط والرموز وما إلى ذلك) ، وتحليل JavaScript. يعتمد هذا الأسلوب على إدخال التعليمات البرمجية من جانب العميل ، وهو أمر غير مقبول غالبًا ، نظرًا لأن الخطأ أثناء إدخال نص برمجي إضافي يمكن أن يؤدي إلى تعطيل تطبيق الويب.
وتجدر الإشارة إلى أنه يمكن أيضًا اكتشاف روبوتات الويب عبر الإنترنت: سيتم تقييم الجلسة في الوقت الفعلي. يمكن العثور على وصف لهذه الصيغة للمشكلة في Cabri et al. [1] ، وكذلك في أعمال Zi Chu [2]. نهج آخر هو التحليل فقط بعد انتهاء الجلسة. من الواضح أن الأمر الأكثر إثارة للاهتمام هو الخيار الأول ، الذي يسمح لك باتخاذ القرارات بشكل أسرع.
النهج المقترح
استخدمنا تقنيات التعلم الآلي ومجموعة تقنيات ELK (Elasticsearch Logstash Kibana) لتحديد وتصنيف روبوتات الويب. كانت أهداف البحث جلسات HTTP. الجلسة عبارة عن سلسلة من الطلبات من عقدة واحدة (القيمة الفريدة لعنوان IP وحقل User-Agent في طلب HTTP) في فترة زمنية محددة. يستخدم Derek و Gohale فاصل زمني مدته 30 دقيقة لتحديد حدود الجلسة [3]. إيليو وآخرون يجادلون بأن هذا النهج لا يضمن تفرد الجلسة الحقيقي ، لكنه لا يزال مقبولاً. نظرًا لحقيقة أنه يمكن تغيير حقل وكيل المستخدم ، فقد تظهر جلسات أكثر مما هي عليه بالفعل. لذلك يقترح Nikiforakis والمؤلفون المشاركون المزيد من الضبط بناءً على ما إذا كان ActiveX مدعومًا ، وما إذا كان Flash ممكّنًا ، ودقة الشاشة ، وإصدار OS.
سننظر في خطأ مقبول في تشكيل جلسة منفصلة إذا تغير حقل وكيل المستخدم ديناميكيًا. ولتحديد جلسات الروبوت ، سنبني نموذج تصنيف ثنائي واضح ونستخدمه:
- نشاط الشبكة التلقائي الذي تم إنشاؤه بواسطة روبوت الويب (علامة bot) ؛
- نشاط الشبكة من صنع الإنسان (وسم الإنسان).
لتصنيف روبوتات الويب حسب نوع النشاط ، فلنقم ببناء نموذج متعدد الفئات من الجدول أدناه.
| اسم | وصف | ضع الكلمة المناسبة | أمثلة على |
|---|---|---|---|
| الزواحف | روبوتات الويب
تجمع صفحات الويب |
الزاحف | SemrushBot،
360Spider، هريتركس |
| الشبكات الاجتماعية | روبوتات الويب
لشبكات اجتماعية مختلفة |
شبكة اجتماعية | LinkedInBot ،
WhatsApp Bot ، Facebook bot |
| قراء آر إس إس | -,
RSS |
rss | Feedfetcher,
Feed Reader, SimplePie |
| -
|
search_engines | Googlebot, BingBot,
YandexBot |
|
| -,
|
libs_tools | Curl, Wget,
python-requests, scrapy |
|
| - | bots | ||
| ,
User-Agent |
unknown |
سنحل أيضًا مشكلة التدريب عبر الإنترنت للنموذج.
المخطط المفاهيمي للنهج المقترح يتكون
هذا النهج من ثلاث مراحل: التدريب والاختبار والتنبؤ وتحليل النتائج. دعنا نفكر في الأولين بمزيد من التفصيل. من الناحية المفاهيمية ، يتبع النهج النمط الكلاسيكي للتعلم وتطبيق نماذج التعلم الآلي. أولاً ، يتم تحديد مقاييس الجودة والسمات الخاصة بالتصنيف. بعد ذلك ، يتم تكوين متجه من الميزات وإجراء سلسلة من التجارب (عمليات التحقق المتقاطعة المختلفة) للتحقق من صحة النموذج واختيار المعلمات الفائقة. في المرحلة الأخيرة ، يتم اختيار أفضل نموذج ويتم فحص جودة النموذج على عينة مؤجلة.
نموذج التدريب والاختبار
يتم استخدام وحدة packetbeat لتحليل حركة المرور. يتم إرسال طلبات HTTP الأولية إلى logstash ، حيث يتم إنشاء المهام باستخدام برنامج نصي من Ruby في مصطلحات Celery. يعمل كل منهم مع معرف الجلسة ، ووقت الطلب ، ونص الطلب والرؤوس. معرّف الجلسة (مفتاح) - قيمة دالة التجزئة من تسلسل عنوان IP و User-Agent. في هذه المرحلة ، يتم إنشاء نوعين من المهام:
- على تشكيل ناقل ملامح للدورة ،
- عن طريق تصنيف الفئة بناءً على نص الطلب و User-Agent.
يتم إرسال هذه المهام إلى قائمة انتظار حيث يقوم معالجات الرسائل بتنفيذها. وهكذا، فإن اضع معالج ينفذ مهمة وصفها الطبقة باستخدام حكم الخبراء وبيانات مفتوحة من خدمة browscap على أساس عامل المستخدم المستخدمة؛ يتم كتابة النتيجة لتخزين مفتاح القيمة. يُنشئ معالج الجلسة متجهًا للميزات (انظر الجدول أدناه) ويكتب النتيجة لكل مفتاح في تخزين قيمة المفتاح ، كما يضبط عمر المفتاح (TTL).
| إشارة | وصف |
|---|---|
| لين | عدد الطلبات لكل جلسة |
| len_pages | عدد الطلبات لكل جلسة في الصفحات
(ينتهي URI بـ .htm ، .html ، .php ، .asp ، .aspx ، .jsp) |
| len_static_request | عدد الطلبات لكل جلسة في
صفحات ثابتة |
| len_sec | وقت الجلسة بالثواني |
| len_unique_uri | عدد الطلبات لكل جلسة
تحتوي على URI فريد |
| headers_cnt | عدد الرؤوس لكل جلسة |
| has_cookie | هل يوجد رأس ملف تعريف ارتباط |
| له مرجع | هل يوجد عنوان مرجعي |
| mean_time_page | متوسط الوقت لكل صفحة في الجلسة |
| الوقت_الطلب | متوسط الوقت لكل طلب لكل جلسة |
| يعني | متوسط عدد الرؤوس لكل جلسة |
هذه هي الطريقة التي يتم بها تكوين مصفوفة السمات وتعيين تسمية الفئة المستهدفة لكل جلسة. بناءً على هذه المصفوفة ، يحدث التدريب الدوري للنماذج والاختيار اللاحق للمعلمات الفائقة. للتدريب ، استخدمنا: الانحدار اللوجستي ، وآلة ناقلات الدعم ، وأشجار القرار ، وتعزيز التدرج على أشجار القرار ، وخوارزمية الغابة العشوائية. تم الحصول على النتائج الأكثر صلة باستخدام خوارزمية الغابة العشوائية.
تنبؤ
أثناء تحليل حركة المرور ، يتم تحديث متجه سمات الجلسة في تخزين القيمة الرئيسية: عند ظهور طلب جديد في الجلسة ، تتم إعادة حساب السمات التي تصفه. على سبيل المثال ، يتم حساب علامة متوسط عدد الرؤوس في الجلسة (mean_headers) في كل مرة يتم فيها إضافة طلب جديد إلى الجلسة. يرسل Predictor متجه ميزات الجلسة إلى النموذج ، ويكتب الاستجابة من النموذج إلى Elasticsearch للتحليل.
تجربة
اختبرنا حلنا على حركة مرور بوابة SecurityLab.ru . حجم البيانات - أكثر من 15 جيجا بايت ، أكثر من 130 ساعة. بلغ عدد الجلسات أكثر من 10000. نظرًا لحقيقة أن النموذج المقترح يستخدم ميزات إحصائية ، لم يتم تضمين الجلسات التي تحتوي على أقل من 10 طلبات في التدريب والاختبار. استخدمنا مقاييس الجودة الكلاسيكية كمقاييس للجودة - الدقة والاكتمال وقياس F لكل فئة.
اختبار نموذج اكتشاف روبوت الويب
سنقوم ببناء وتقييم نموذج تصنيف ثنائي ، أي أننا سنكتشف الروبوتات ، ثم نصنفها حسب نوع النشاط. استنادًا إلى نتائج التحقق المتقاطع من خمسة أضعاف (هذا هو بالضبط ما هو مطلوب للبيانات قيد الدراسة ، نظرًا لوجود خلل قوي في الفئة) ، يمكننا القول أن النموذج المُنشأ جيد جدًا (الدقة والاكتمال - أكثر من 98٪) قادر على فصل فئات المستخدمين البشريين والروبوتات.
| متوسط الدقة | متوسط الامتلاء | متوسط قياس F. | |
|---|---|---|---|
| بوت | 0.86 | 0.90 | 0.88 |
| بشري | 0.98 | 0.97 | 0.97 |
يتم عرض نتائج اختبار النموذج على عينة مؤجلة في الجدول أدناه.
| صحة | الاكتمال | قياس F. | عدد
الأمثلة |
|
|---|---|---|---|---|
| بوت | 0.88 | 0.90 | 0.89 | 1816 |
| بشري | 0.98 | 0.98 | 0.98 | 9071 |
تتطابق قيم مقاييس الجودة في العينة المؤجلة تقريبًا مع قيم مقاييس الجودة أثناء التحقق من صحة النموذج ، مما يعني أن النموذج الموجود على هذه البيانات يمكنه تعميم المعرفة المكتسبة أثناء التدريب.
دعونا ننظر في الأخطاء من النوع الأول. إذا تم تمييز هذه البيانات بخبرة ، فستتغير مصفوفة الخطأ بشكل كبير. هذا يعني أنه تم ارتكاب بعض الأخطاء عند ترميز البيانات الخاصة بالنموذج ، لكن النموذج كان لا يزال قادرًا على التعرف على هذه الجلسات بشكل صحيح.
| صحة | الاكتمال | قياس F. | عدد
الأمثلة |
|
|---|---|---|---|---|
| بوت | 0.93 | 0.92 | 0.93 | 2446 |
| بشري | 0.98 | 0.98 | 0.98 | 8441 |
دعنا نلقي نظرة على مثال مقلدي الجلسة. يحتوي على 12 استفسارًا مشابهًا. يظهر أحد الطلبات في الشكل أدناه.
جميع الطلبات اللاحقة في هذه الجلسة لها نفس البنية وتختلف فقط في URI.
لاحظ أن webbot هذا يستخدم وكيل مستخدم صالحًا ، ويضيف حقل مرجع ، وعادة ما يستخدم بشكل غير تلقائي ، وعدد الرؤوس لكل جلسة صغير. بالإضافة إلى ذلك ، تسمح لنا الخصائص الزمنية للطلبات - وقت الجلسة ومتوسط الوقت لكل طلب - بالقول إن هذا النشاط تلقائي وينتمي إلى فئة قراء RSS. في هذه الحالة ، يتنكر الروبوت نفسه كمستخدم عادي.
اختبار نموذج تصنيف روبوت الويب
لتصنيف روبوتات الويب حسب نوع النشاط ، سنستخدم نفس البيانات ونفس الخوارزمية كما في التجربة السابقة. يتم عرض نتائج اختبار النموذج على عينة مؤجلة في الجدول أدناه.
| صحة | الاكتمال | قياس F. | عدد
الأمثلة |
|
|---|---|---|---|---|
| بوت | 0.82 | 0.81 | 0.82 | 194 |
| الزاحف | 0.87 | 0.72 | 0.79 | 65 |
| libs_tools | 0.27 | 0.17 | 0.21 | الثامنة عشر |
| آر إس إس | 0.95 | 0.97 | 0.96 | 1823 |
| محركات البحث | 0.84 | 0.76 | 0.80 | 228 |
| شبكة اجتماعية | 0.80 | 0.79 | 0.84 | 73 |
| مجهول | 0.65 | 0.62 | 0.64 | 45 |
جودة فئة libs_tools منخفضة ، لكن الحجم غير الكافي من الأمثلة للتقييم لا يسمح لنا بالتحدث عن صحة النتائج. يجب إجراء سلسلة ثانية من التجارب لتصنيف روبوتات الويب بناءً على مزيد من البيانات. يمكننا القول بثقة أن النموذج الحالي بدقة عالية واكتمال إلى حد ما قادر على فصل فئات قراء RSS ومحركات البحث والروبوتات العامة.
وفقًا لهذه التجارب على البيانات قيد الدراسة ، يتم إنشاء أكثر من 22٪ من الجلسات (بحجم إجمالي يزيد عن 15 غيغابايت) تلقائيًا ، ومن بينها 87٪ تتعلق بنشاط الروبوتات العامة ، والروبوتات غير المعروفة ، وقارئي RSS ، وروبوتات الويب باستخدام مكتبات وأدوات مساعدة مختلفة ... وبالتالي ، إذا قمت بتصفية حركة مرور الشبكة لروبوتات الويب حسب نوع النشاط ، فإن النهج المقترح سيقلل الحمل على موارد الخادم المستخدمة بنسبة 9-10٪ على الأقل.
اختبار نموذج تصنيف روبوت الويب عبر الإنترنت
يتمثل جوهر هذه التجربة في ما يلي: في الوقت الفعلي ، بعد تحليل حركة المرور ، يتم تحديد الميزات وتشكيل متجهات الميزات لكل جلسة. بشكل دوري ، يتم إرسال كل جلسة إلى النموذج للتنبؤ ، ويتم حفظ نتائجها.
قياس النموذج بمرور الوقت لكل فئة توضح
الرسوم البيانية أدناه التغيير في قيمة مقاييس الجودة بمرور الوقت للفئات الأكثر إثارة للاهتمام. حجم النقاط عليها مرتبط بعدد الجلسات في العينة في وقت معين.
الدقة والاكتمال وقياس F لفئة محركات البحث
الدقة والاكتمال ومقياس F لفئة أدوات libs
الدقة والاكتمال وقياس F لفئة rss
الدقة والاكتمال وقياس F لفئة الزاحف
الدقة والاكتمال وقياس F لـ الطبقة البشرية
بالنسبة لعدد من الفئات (الإنسان ، rss ، محركات البحث) على البيانات قيد الدراسة ، فإن جودة النموذج مقبولة (الدقة والاكتمال أكثر من 80٪). بالنسبة لفئة الزاحف ، مع زيادة عدد الجلسات والتغيير النوعي في متجه الميزات لهذه العينة ، تزداد جودة النموذج: زاد الاكتمال من 33٪ إلى 80٪. من المستحيل استخلاص استنتاجات معقولة لفئة libs_tools ، نظرًا لأن عدد الأمثلة لهذه الفئة صغير (أقل من 50) ؛ لذلك ، لا يمكن تأكيد النتائج السلبية (جودة رديئة).
النتائج الرئيسية والمزيد من التطوير
لقد وصفنا طريقة واحدة لاكتشاف وتصنيف روبوتات الويب باستخدام خوارزميات التعلم الآلي واستخدام الميزات الإحصائية. فيما يتعلق بالبيانات قيد النظر ، فإن متوسط دقة واكتمال الحل المقترح للتصنيف الثنائي هو أكثر من 95٪ ، مما يشير إلى أن النهج واعد. بالنسبة لفئات معينة من روبوتات الويب ، يبلغ متوسط الدقة والاكتمال حوالي 80٪.
يتطلب التحقق من صحة النماذج المنشأة تقييمًا حقيقيًا للدورة. كما هو موضح سابقًا ، يتحسن أداء النموذج بشكل ملحوظ عندما يكون هناك ترميز صحيح للفئة المستهدفة. لسوء الحظ ، من الصعب الآن إنشاء مثل هذا الترميز تلقائيًا وعليك اللجوء إلى ترميز الخبراء ، مما يعقد بناء نماذج التعلم الآلي ، ولكنه يسمح لك بالعثور على أنماط مخفية في البيانات.
لمزيد من التطوير لمشكلة تصنيف وكشف روبوتات الويب ، يُنصح بما يلي:
- تخصيص فئات إضافية من الروبوتات وإعادة التدريب واختبار النموذج ؛
- إضافة علامات إضافية لتصنيف روبوتات الويب. على سبيل المثال ، تسمح لك إضافة سمة robots.txt ، وهي سمة ثنائية ومسؤولة عن وجود أو عدم الوصول إلى صفحة robots.txt ، بزيادة متوسط درجة F لفئة من برامج الروبوت على الويب بنسبة 3٪ دون تدهور مقاييس الجودة الأخرى للفئات الأخرى ؛
- قم بعمل ترميز أكثر دقة للفئة المستهدفة ، مع مراعاة الميزات الوصفية الإضافية وأحكام الخبراء.
المؤلف : نيكولاي ليفينكو ، المتخصص الرائد ، مجموعة التقنيات المتقدمة ، التقنيات الإيجابية
المصادر
[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.