المقدمة
تصف هذه الوثيقة التقنيات الجديدة التي تمت إضافتها في Snort 3 من 7.4 فصاعدا.
معلومات أساسية
- تعمل وحدة اكتشاف Snort 3 في وضع الحظر. ورغم أن هذا النهج يعطي ميزة في الأداء وبساطة في التنفيذ (نسبيا)، فإنه ينطوي على بعض القيود على كشف التوقيعات التي تمتد عبر كتل بيانات متعددة.
- ولتسهيل تجربة المستخدم، تم بالفعل تنفيذ بعض التحسينات في Snort، وهي:
- تتيح وحدات بت الانسياب لكاتب القاعدة وضع علامة على تدفق الشبكة بخاصية معرفة من قبل المستخدم، ويمكن تعيين تلك الخاصية وتصفيتها واختبارها على أي حزمة من التدفق (مما يمثل طريقة للاستنتاج حول توقيع أكبر على الحزم).
- تقوم وحدة الدفق بتكديس حزم الأسلاك في حزمة معاد بناؤها، والتي تكون كتلة أكبر وأكثر أهمية من الحزمة الخام، كما أن تقييم قواعد IPS مقابل الحزمة المعاد بناؤها يوفر المزيد من الفرص لرؤية الصورة بأكملها ومطابقة نمط أكبر (توقيع).
- في بعض الحالات لا تمثل الحزمة المعاد بناؤها بيانات جديدة فقط، لكنها تتضمن بعض جزء من البيانات السابقة التي تمت معالجتها بالفعل بواسطة الكشف؛ مرة أخرى أن مجموعة البيانات المتراكمة تسمح باكتشاف التوقيعات التي تمتد إلى الخلف على التدفق (إلى حد ما).
- يقوم مفرق التيار بقطع التدفق إلى كتل، ولكن من المحتمل أن تكون نقطة القطع نقطة ضعف يمكن للمهاجم إستخدامها لتجنب اكتشاف الأنماط، وبالتالي لدى الشورت آلية إرتجاج يتم تطبيقها لجعل الانقسام أكثر قابلية للتنبؤ. وهذا يزيد من تعقيد تحليل المهاجم.
ما الجديد
تقييم التوقيع الذي يحدد الحالة هو أسلوب جديد يمكن إضافته إلى القائمة. تقوم بتوسيع قدرات الكشف عن طريق تمكين تقييم قاعدة IPS عبر كتل متعددة. وعلى هذا فإن القاعدة لا تتلاءم على الفور إذا كانت الكتلة الحالية تفتقر إلى البيانات، ولكنها تنتظر بدلا من ذلك المزيد من البيانات للوصول.
الأنظمة الأساسية المدعومة
الحد الأدنى للبرامج والأجهزة الأساسية
الحد الأدنى لإصدار Supported Manager |
الأجهزة المدارة |
الحد الأدنى لإصدار الجهاز المدار المدعوم المطلوب |
ملاحظات |
Management Center 7.4.0 |
نظام Firepower Threat Defense (FTD) |
7.4.0 |
نورت 3 فقط |
مدير الجهاز 7.4.0 |
أي برنامج FTD يدعم إدارة FDM |
7.4.0 |
نورت 3 فقط |
تفاصيل الميزة
وصف الميزة الوظيفية
كيف تعمل؟
تم وصف سير عمل وحدة الكشف النمطية في الرسم التخطيطي. في مرحلة معالجة حركة المرور، تحتوي الوحدة النمطية بالفعل على جميع القواعد تم تحميلها، كما أنها تقبل مجموعات البيانات بطريقة فردية، وتقيم القواعد، وتعرف الإجراءات التي يجب إتخاذها لكتلة تقييم توقيع الحالة الخاصة بالعملية.

ملاحظات حول النظام:
- بمجرد تحديد مجموعة قواعد فرعية لكتلة البيانات الحالية، يتم تقييم كل قاعدة منها بشكل مستقل عن القواعد الأخرى.
- يتم تقييم كل كتلة بيانات بشكل مستقل عن كتل أخرى.
- كتلة البيانات هي تجريد لمجموعة من المخازن المؤقتة ل IPS والتي يتم تقييمها للحزمة الحالية.
- الإجراء هو قائمة بالإجراءات التي تم تقييمها للحزمة الحالية، ويتم تحديد الحكم النهائي فيما بعد.
لفهم كيفية عمل تقييم التوقيع ذو الحالة، ألق نظرة على كيفية تقييم قاعدة IPS المشتركة وكيف يمكن أن تشكل كتل البيانات تدفقا.
تقييم القاعدة المشتركة
يمكن تقديم قاعدة IPS في هذا النموذج:
action protocol source → destination ( option_1: parameters; option_2: parameters;
option_3: parameters; gid: 1; sid: 1; meta_option_1; meta_option_2; meta_option_3; )
حيث:
إجراء - إجراء IPS على الحزمة إذا تم تشغيل القاعدة
بروتوكول - بروتوكول للمطابقة
المصدر والوجهة - عنوان IP والمنفذ
option_1 و option_2 و option_3 - خيارات IPS التي تعد جزءا من تقييم القاعدة
GID و sid - زوج فريد يعرف القاعدة (مثل خيارات البيانات الأولية)
meta_option_1، meta_option_2، meta_option3 - تسطير البيانات الأولية مثل رسالة، نوع صنف، أو مرجع، تلك الخيارات لا تشارك في تقييم القاعدة.
- نموذج البروتوكول والمصدر والوجهة رأس قاعدة. يعمل كعامل تصفية لتدفق الشبكة (الذي يتم قبوله للتقييم). كل شيء بين قوسين هو هيئة قاعدة. خيارات IPS (باستثناء بيانات تعريف القاعدة) من نص القاعدة هي تلك التي يتم تقييمها لكتلة البيانات. فهي تمتثل لهذه العبارات:
- يتم تقييم الخيارات بدقة من اليسار إلى اليمين.
- يمكن أن يكون أحد نوعين أساسيين.
- معين المخزن المؤقت، يحدد الخيار مخزن IPS المؤقت للحزمة الحالية.
- أخرى (بحث عن النقش، عملية الحساب، معالجة المؤشر، عملية التدفق)
- يتم إستخدام المؤشر لتعقب الموضع في المخزن المؤقت ل IPS المحدد.
- يمكن أن يكون أحد الخيارات إما:
- 'مطلق'، أي لا يعتمد على وضع المؤشر
- "نسبي" يعني بيبدا تقييمها من موضع المؤشر
- إذا حاول أحد الخيارات تعيين المؤشر خارج المخزن المؤقت ل IPS المحدد، فسيفشل ولن تتطابق القاعدة بأكملها (بسبب نقص البيانات)
- النقطة الأخيرة هي تحديد وحدة الكشف النمطية. إذا كان من الممكن أن تتوفر على موارد غير محدودة، فسوف يتم تخزين كل البيانات التي يتم رؤيتها لتقييم القواعد مرة بعد أخرى عندما تصبح البيانات متاحة (يصل المزيد من حزم الأسلاك).
تدفق البيانات ومخازن IPS المؤقتة
- تدفق البيانات هو تدفق من وحدات البايت في نموذج متتابع من نفس المصدر. وهو مفهوم جديد يقدم لدعم التقييم الذي يحدد الحالة. يجب إجراء تقييم القاعدة بين الكتل ضمن نفس البيانات المنطقية (سواء كان ملف أو تدفق TCP نقي أو نص JavaScript).
- بشكل عام، كتلة البيانات التي تم تلقيها بواسطة وحدة الكشف يمكن:
- أن يكون من مخزن IPS مؤقت مختلف (على سبيل المثال، pkt_data و file_data ليسا متماثلين)
- انتمي إلى دفق آخر
- لا يشكل تدفق (المخازن المؤقتة التي تم إنشاؤها من حزمة خام)
- لا يشكل تدفقا متصلا (ICMP، UDP)
- لا تكون بالترتيب (إستجابة HTTP الجزئية)
- يحتوي على بيانات متكررة (كتلة متراكمة، مثل http_inspection.script_detection أو إستجابة HTTP المقسمة)
- يمكن لوحدة الكشف فرز الأشياء لترتيب كتل من نفس الدفق فقط، وإلا فإن عملية التقييم سترى تداخل غير مرغوب فيه من كتل متداخلة.

ملاحظة: يقدم المثال هنا حالة يقوم فيها عميل HTTP بتحميل وتنزيل ملفات متعددة في نفس الوقت.
- حاليا، يمكن أن يمثل مصدان فقط ل IPS دفق: pkt_data و file_data، حيث:
- PKT_DATA نموذج دورين لبروتوكول TCP (إرشادات العميل إلى الخادم والخادم إلى العميل)
- يجب أن يكون file_data دفقات نموذج للملفات و/أو مرفقات MIME وبيانات بروتوكول أخرى (مثل صفحة HTTP HTML و/أو نوع محتوى آخر)
- يتم إجراء التقييم الذي يحدد الحالة بشكل صارم داخل تدفق البيانات.
إستمرار القاعدة
- ينتهي القسم الأقدم بجملة تشير إلى أن خيار IPS غير متطابق إذا قام بتعيين المؤشر خارج المخزن المؤقت IPS الحالي. ولكن عندما يشكل المخزن المؤقت ل IPS تدفق بيانات، فإن ميزة تقييم التوقيع المعبر عن الحالة تدخل سياق تقييم القاعدة وتحفظه في كائن تدفق Snort. يسمى سياق التقييم المحفوظ (الحالة) إستمرار القاعدة. يؤجل تقييم التوقيع الذي يحدد الحالة الحكم النهائي للقاعدة إلى أن يتوفر المزيد من البيانات.
- تحتوي متابعة القاعدة على ثلاثة أجزاء رئيسية: اسم المخزن المؤقت ل IPS ومصدر المخزن المؤقت وموضع المؤشر المستهدف (يعد مصدر المخزن المؤقت معرفا فريدا لتدفق البيانات).
- عندما تتم معالجة كتلة البيانات بواسطة وحدة الكشف النمطية، تحدث الإجراءات التالية:-
- ينشئ تقييم التوقيع الذي يحدد الحالة إستمرار القاعدة ويربطها بالتدفق إذا:
- يعمل خيار IPS (byte_jump أو content أو pcre أو أي شيء آخر يقوم بتحديث وضع المؤشر) على تعيين المؤشر بعد المخزن المؤقت ل IPS الحالي
- يدعم المخزن المؤقت ل IPS الحالي تدفق البيانات.
- يشكل المخزن المؤقت ل IPS الحالي تدفق بيانات في هذه اللحظة.
- يسحب تقييم التوقيع ذو الحالة إستمرار القاعدة التي تم إنشاؤها للتو ويزيله من التدفق إذا:
- تم تشغيل قاعدة IPS على كتلة البيانات الحالية (تتطابق القاعدة مع أماكن أخرى من الكتلة)
- يرفض تقييم التوقيع المعطى الحالة إستمرار القاعدة المعلقة ويزيلها من التدفق إذا:
- لا يشكل المخزن المؤقت ل IPS تدفقا متصلا (على سبيل المثال، تحتوي الوحدات على بيانات متكررة بداخلها، أو هناك فجوة (تم فقد جزء من البيانات أو أن الكتلة ليست بالترتيب).
- يعمل تقييم التوقيع الذي يحدد الحالة على تحديث وضع المؤشر المستهدف بالبيانات الجديدة المتوفرة عندما:
- مصدر المخزن المؤقت من إستمرار القاعدة هو نفس مصدر المخزن المؤقت المحدد
- يشكل المخزن المؤقت ل IPS تدفق متصل
- يرسل تقييم التوقيع الذي يحدد الحالة إستمرار القاعدة مرة أخرى إلى محرك قاعدة IPS عندما:
- نقاط موضع المؤشر المستهدفة داخل المخزن المؤقت ل IPS المحدد (مما يعني أنها تلقت أخيرا جميع البيانات اللازمة لإكمال تقييم القاعدة).
تكوينات المستخدم
- وبما أن إستمرار القواعد يأخذ الذاكرة، فلا يمكن ل Snort تخزين عدد غير محدود منها. هناك خيار تكوين للتحكم في الحد:
- detection.max_continuations_per_flow = 1024: الحد الأقصى لعدد الاستكمالات المخزنة في آن واحد على التدفق { 0:65535 }
- عندما يصل تقييم التوقيع المعبر عن الحالة إلى الحد المسموح به، فإنه يستبدل أقدم إستمرارية لقاعدة بآخر جديد.
- توجد أقدم قاعدة إستمرار موجودة على التدفق لفترة طويلة جدا، مما يعني أنها لا تفي بشرط إستئناف تقييم القاعدة.
- بالإضافة إلى ذلك، هناك الكثير من عمليات عد peg المتوفرة لضبط قواعد IPS بدقة (والتي يجب أن تكون التركيز الرئيسي) والحد (إذا لزم الأمر):
- detection.cont_creations: إجمالي عدد عمليات التكرار التي تم إنشاؤها (المجموع)
- DETECTION.cont_RECALLS: إجمالي عدد الاستمرارات التي تم استدعاؤها (المجموع)
- detection.cont_flow: إجمالي عدد التدفقات التي تستخدم الاستمرار (المجموع)
- detection.cont_evals: إجمالي عدد مرات إستمرار استيفاء الشرط (المجموع)
- detection.cont_match: إجمالي عدد عمليات التكرار المتطابقة (المجموع)
- detection.cont_mismatch: إجمالي عدد مرات عدم تطابق الاستمرارية (المجموع)
- detection.cont_max_num: أقصى عدد من عمليات الاستمرار المتزامنة لكل تدفق (كحد أقصى)
- detection.cont_match_distance: إجمالي عدد وحدات البايت التي تم القفز إليها بواسطة عمليات التكرار المتطابقة (المجموع)
- detection.cont_mismatch_distance: إجمالي عدد وحدات البايت التي تم القفز إليها بواسطة عمليات متابعة غير متطابقة (المجموع)
استكشاف الأخطاء وإصلاحها
الميزة هي تحسين لعملية الكشف الموجودة، لذلك لا يمكن أستكشاف الأخطاء وإصلاحها بشكل صريح. في حالة حدوث أي حالات فشل في الكشف، يجب فحص القواعد أو التكوين أو حركة المرور.
مشكلة العينة
المشكلة: الوصف
المشكلة: الحل
سيتم تقييم القاعدة بهذه الطريقة:
على الحزمة الأولى (بحجم 8 كيلو بايت)، والتي تحمل رأس ملف وجزء من النص الأساسي:
- تم تحديد IPS buffer file_data. يشير المؤشر إلى البايت العاشر e1.
- يطابق خيار النقش السريع ويعين موضع المؤشر بعد الرقم السحري مباشرة، مشيرا إلى البايت 7f.
- يقرأ خيار byte_jump بايتين من حجم نص الملف. يتم تحديث المؤشر بهاتين البايت. ثم يقوم BYTE_JUMP بحساب قفزة لأكثر من 32768 بايت.
- ينشئ تقييم التوقيع الذي يحدد الحالة إستمرار القاعدة، حيث تحتاج إلى 24578 بايت أكثر ( 32768 - (8 كيلو بايت - 4 بايت من الرأس - 2 بايت من حجم الجسم) ).
- القاعدة بأكملها لا تتطابق، لأن خيار byte_jump يفشل في تعيين موضع المؤشر إلى هذا الحد.
على الحزمة الثانية (بحجم 16 كيلو بايت)، والتي تحمل جزء نص الملف:
- يظهر تقييم التوقيع الذي يحدد الحالة إستمرار القاعدة المعلقة.
- وهو يحدد المخزن المؤقت بإسمه ويرى أن file_data متوفر وأن حجم البيانات الجديد هو 16384.
- يظهر المؤشر المحدث أن الحاجة لا تزال إلى 8194 بايت ( 24578 - 16384 )
- لم يتم إستئناف القاعدة.
على الحزمة الثالثة (من 8198 أحجام)، والتي تحمل جزء متن الملف وبيانات التعريف:
- يظهر تقييم التوقيع الذي يحدد الحالة إستمرار القاعدة المعلقة.
- وهو يحدد المخزن المؤقت بإسمه ويرى أن file_data متوفر وأن حجم البيانات الجديد هو 8198.
- يظهر المؤشر المحدث أن المخزن المؤقت به بيانات كافية، وموضع المؤشر هو 8194.
- يقوم تقييم التوقيع الذي يحدد الحالة بحذف إستمرار القاعدة.
- يستأنف تقييم التوقيع الذي يحدد الحالة تقييم القاعدة من خيار المحتوى الثاني مع إشارة المؤشر إلى البايت 01.
- يبحث خيار المحتوى عن تطابق على البايت الثاني الذي تم البحث عنه.
- القاعدة كلها تنطلق أخيرا.
تفاصيل القيود والمشاكل الشائعة
القيود والاعتبارات الأخرى
- نظرا لتنفيذ تقييم التوقيع الذي يحدد الحالة، يقوم Snort بإسقاط جميع عمليات متابعة القواعد المعلقة عند إعادة تحميل التكوين الخاص به. لاحظ أن إستمرار القاعدة على الرغم من إسقاطها لا يزال يشغل ذاكرة Snort حتى يتم إرسال كتلة البيانات التالية إلى وحدة الكشف.
- تعمل ميزة زمن انتقال القاعدة لقاعدة IPS في تقييم الحالة كما لو كانت تقييم قاعدة مشتركة. يتم تلخيص وقت تقييم أجزاء القاعدة في كتل البيانات المختلفة. إذا تجاوز الوقت الحد، فإن تقييم القاعدة يتم عبر دائرة قصيرة، يتم الإنهاء قبل ذلك.
- تحتفظ عمليات الانسياب بمعناها، رغم أنها لا تزال تؤدي مثل الخيارات "الثابتة".
يتم إجراء عملية تعيين/مسح/إختبار انسيابية ضمن سياق معروف حاليا. لذلك، إذا تم تقييم خيار الانسياب في إستمرار قاعدة، فإنه سيأخذ في الاعتبار البيئة الحالية (مجموعة وحدات بت الانسياب)، وليس البيئة التي بدأت القاعدة تقييمها فيها.
أيضا، يجب على كاتب القواعد أن ينتبه إلى موقع النمط السريع.
حتى إذا كان من الممكن أن يكون في أي جزء من القاعدة، فإنه يتم تقييم خيار النمط السريع قبل القاعدة بأكملها. تقوم بتشغيل تقييم القاعدة. بالنسبة للقاعدة المستندة إلى تقييم التوقيع الذي يشير إلى الحالة، فهذا يعني أن نقطة إستمرار القاعدة يجب أن تكون بعد خيار النمط السريع.
بالإضافة إلى ذلك، يمكن أن يكون لقاعدة IPS عدة عمليات إستمرارية لقواعد في تقييمها (واحدة بعد الأخرى، وليس في نفس الوقت). بما أن أي خيار من نص القاعدة يمكن أن يستمر، فإنه يسمح لكاتب القاعدة بإجراء تحققات إضافية في أماكن مختلفة من تدفق البيانات بنفس قاعدة IPS.