Suricata



يعتبر الـ Suricata برنامج مفتوح المصدر وأيضاً يُعتبر محرك لكشف التهديدات يقوم بمراقبة أمان الشبكة أو مايُسمى بالـ Network Security Monitoring (NSM) ، يمكن أن يعمل بما يُسمى بنظام كشف التسلل وهو الـ Intrusion Detection System (IDS) وهو يُعتبر نظام يقوم بتنبيه المستخدم عند وجود أي هجمات بالشبكة ، والنوع الأخر مايُسمى بنظام منع التسلل وهو الـ Intrusion Prevention System (IPS) يُعتبر هذا النظام شبيه بنظام كشف التسلل لكن هنا يقوم بمنعه.


كلا النظامين يعملان عن طريق تحليل الـ Network traffics للبحث عن الهجمات بالإعتماد على القواعد أو الـ Rules المكتوبة من قبل المستخدم.


الـ Suricata تتنفذ عن طريق مايُسمى بالـSignature Language وهي تعمل على مقارنة أو عمل Match مع التهديد الذي يستخدمه المخترق , الـ Suricata أيضاً قادر على إستخدام Ruleset مجموعة من القواعد التي تعمل على إكتشاف هذه التهديدات.

لماذا نستخدم الـ Suricata ؟

واحدة من المزايا التي يقدمها الـ Suricata بإستطاعته تسجيل الطلبات من أي Ports التي تتم بشكل كلي من خلال الـ HTTP Logging، أيضاً من المميزات التي يقدمها الـ Suricata يسجل جميع الـ Queries والـ Responses كـ DNS Logging

بالإضافة إلى إنه يسمح بتخزين وتسجيل الـ TLS certificates ويسمح بإستخراج الملفات وتخزينها على الـ disk.

بماذا يتميز الـ Suricata عن الـ Snort ؟

لو تم المقارنة بين الـ Suricata والـ Snort فكلا النظامين عبارة عن أنظمة للكشف عن التسلل تعتمد علىnetwork-based intrusion detection systems (NIDS) التي من خلالها يتم إكتشاف حركة المرور الضارة عبر شبكة بأكملها.

الإختلاف هنا بأنه يمكن لـSuricata والـ Snort إستخدام معظم الـ Rules لكن ليس كلها , والسبب يعود لو تم إستخدام جميع الـ Rules الموجودة في الـ Snort داخل الـ Suricata تحديداً داخل ملف الـ suricata.log ستظهر أخطاء وسيفشل التحميل فيتم تجاهل الـ Snort Rules التي لايفهمها الـ Suricata.

تثبيت برنامج Suricata على الـ Windows

الرابط التالي يوجد فيه إصدارات الـ Suricata على أنظمة مختلفة ،

سنقوم بتثبيت الـ Suricata على الـ Windows :


https://suricata.io/download/


بعد ذلك نقوم بتحميل الـ Npcap على الـ Windows :


https://npcap.com/#download


لابد من تحميل الـ Npcap على الـ Windows لأنه يعتبر كـ Library أو مكتبة تساعدنا نعمل Capture للـ Traffic بحيث نستطيع أن نحللها.

التعرف على القواعد / Rules في Suricata

كما ذكرنا سابقاً أن الـ Suricata تتعامل مع الـ Signature Language أو الـ Rules لتتناسب مع التهديدات أو السلوك الضار،

هذه الـ Rules لها Specific Format يُستخدم في تحليل الـ Network Packets وتُنفذ الإجراء أو الـ Action المناسب حسب أو بناءاً على نوع الـ Packet.

الـ Suricata Signatures / Rules تتكون من ثلاث مكونات أساسية وهي على النحو التالي :



الـ Action هي جزء من إجراءات عدة يتم إتخاذه عندما تتطابق الـ Packet مع الـ Rule.


الـ Header وهو الذي يتكون أو يحمل بداخله الـ Hosts , IP Address , Ports , Protocols الذي يحدد إتجاه الـ Network Traffic سواءاً كان Incoming أو كان Outgoing فيُشير الـ -> إلى إتجاه حركة مرور الـ Network Traffic.


الـ Options هي التي يكتب فيها مايُريده مُنشئ الـ Rules.


أنواع الـ Actions التي يؤديها الـ Suricata rule :

  1. Alert : لإصدار رسالة تنبيه عند إكتشاف محاولة هجوم.

  2. Pass : ليتجاهل الاتصال أو إسقاط الـ Packet.

  3. Reject لعمل Block للـ Packet مع عمل خيار Log.

  4. Drop : في حالة كانت تتطابق الـPacket مع الـ Rule يتم إسقاط الـ Packet ويتم إنشاء تنبيه عليها.

  5. Rejectsrc : يؤدي نفس عمل الـ Reject.

  6. Rejectdst : يتم إرسال كـ RST/ICMP error packet لمن يستقبل الـ Packet حين تتطابق مع الـ Rule التي كُتبت.

  • الـ RST يتم إرسالها للجهاز عندما الـ Server لايستمع للـ Port المخصص للـ TCP Protocol أو عندما يفشل الإتصال بين الجهاز المستقبل والمرسل , وتُخبر المرسل بأنه يُنشئ اتصال آخر وإعادة إرسال الـ Traffic مرة اخرى.

  • الـ ICMP يُقصد به أن الـ Port غير قادر على الإتصال بمنافذ أو الـ Ports الخاصة بالـ UDP Protocol.

الخصائص الموجودة في الـ header هي كالتالي :

يحتوي عادة على مُتغيرات أو Variable تكون بالمسميات التالي :

  1. NET_HOME : يستخدم هذا المتغير لتحديد الشبكة الداخلية المراد حمايتها.

  2. NET_EXTERNAL : يستخدم هذا المتغير الشبكة الخارجية التي نود أن تذهب إليها الـ Network Traffic.

  3. Any : المقصود بها الـ Ports بشكل عام.

الخصائص الموجودة في الـ OPETIONS هي كالتالي :

كما ذكرنا سابقاً هي التي يكتب فيها مايُريده مُنشئ الـ Rules مثل :

  1. الـ Signature ID ( sid ) والتي تُعبر عن رقم معرف فريد مخصص لكل Rule.

  2. والـ msg التي نود إظهارها في الـ Rule.

  3. الـ ( rev ) revision يرمز هنا إلى إصدار الـ Rule وكلما تم تحديث هذه الـ Rule تزداد برقم واحد.

  4. الـ Contents يُكتب بها محتوى الذي يكون مُريب ونود إستكشافه في الـ Network Traffic.

Join