جدول المحتويات
تُعد YARA واحدة من أكثر الأدوات استخدامًا في عالم الأمن السيبراني لتحليل الملفات واكتشاف البرمجيات الخبيثة.
فهي تُستخدم لتحديد وتصنيف الملفات بناءً على محتواها، مما يجعلها أداة قوية للغاية في تحليل التهديدات والبحث الرقمي.
تخيل أن لديك مجموعة ضخمة من الملفات وتريد تحديد تلك التي تحتوي على نمط معين — مثل سلسلة نصية محددة أو تسلسل بايت معين.
تتيح لك YARA إنشاء قواعد مخصصة (YARA Rules) للبحث عن هذه الأنماط، وتشغيلها على الملفات المستهدفة لتحديد أي تطابقات محتملة.
ببساطة، YARA تعمل كـ “محرك بحث ذكي داخل الملفات” يساعدك على العثور على المحتوى الذي تبحث عنه، حتى لو كان مخفيًا داخل الملف.
تُستخدم YARA بشكل واسع من قبل الباحثين في البرمجيات الخبيثة والمحللين الأمنيين وأي شخص يحتاج إلى تحليل الملفات بسرعة ودقة.
ما هي قواعد YARA (YARA Rules)؟
قواعد YARA هي مجموعة من التعليمات التي تُستخدم لتحديد الملفات بناءً على محتواها الداخلي.
تتألف كل قاعدة من قسمين رئيسيين:
- الشروط (Conditions): تصف الأنماط التي تبحث عنها الأداة داخل الملفات — مثل سلاسل نصية، تعابير منتظمة (Regular Expressions)، أو تسلسلات بايت.
- الإجراءات (Actions): تحدد ما يجب القيام به عندما يتم العثور على تطابق، مثل عرض رسالة، تنفيذ أمر، أو وضع علامة على الملف.
يسمح هذا النهج ببناء قواعد دقيقة ومخصصة تساعد في الكشف عن أنواع معينة من البرمجيات الخبيثة أو الملفات المزيفة.
تثبيت YARA
قبل البدء في استخدام الأداة، يجب تثبيتها على النظام.
في هذا المثال، سنستخدم توزيعة Debian (أو أي نظام مبني على Kali Linux):
sudo apt-get install yara إذا واجهت مشاكل أثناء التثبيت، يمكنك تحديث مدير الحزم أولًا:
sudo apt-get update إنشاء أول قاعدة YARA
قبل تحليل أي ملف باستخدام YARA، يجب توفر ملف مستهدف وقاعدة للتحليل.
لنبدأ بإنشاء ملف نصي بسيط يحتوي على العبارة التالية:
echo "Learning is fun!" > file.txt 
الآن، سننشئ قاعدة YARA جديدة باسم first_yara_rule.yar:
touch first_yara_rule.yar
nano first_yara_rule.yar أدخل الكود التالي داخل الملف:
rule funny
{
condition: true
} السطـر الأول ينشئ قاعدة اسمها funny، وهي مُعرّف القاعدة.
المُعرّفات في YARA حساسة لحالة الأحرف (Case-sensitive) ولا يمكن أن تبدأ برقم أو تحتوي على مسافات.
الشرط true يعني أن هذه القاعدة تنطبق على أي ملف دون استثناء.
رغم أن هذه القاعدة غير مفيدة فعليًا في تحليل الملفات الواقعي، إلا أنها ممتازة كأول تجربة عملية.
تحليل الملفات باستخدام أمر YARA
الآن لدينا القاعدة والملف، ويمكننا تحليل الملف باستخدام الصيغة التالية:
yara <yara-rule> <target-file> في مثالنا:
yara first_yara_rule.yar file.txt سيُظهر الإخراج التالي:
funny file.txt العمود الأول يُظهر اسم القاعدة (funny)، بينما العمود الثاني هو اسم الملف الذي تطابقت معه القاعدة.
وبما أن الشرط هو true، فسيتم اعتبار أي ملف مطابقًا.
إنشاء قاعدة YARA لاكتشاف ملفات PDF
لنقم الآن بإنشاء قاعدة تُحدد ما إذا كان الملف من نوع PDF فعلاً.
إذا لم يكن لديك ملف PDF، يمكنك استخدام بحث Google Dorking بعبارة مثل:
learning filetype:pdf ![[image.png]]
سيُظهر لك هذا ملفات PDF متعلقة بالتعلم يمكن تنزيلها بأمان لغرض الاختبار.
تأكد من أن بيئة العمل آمنة عند تحميل أي ملفات من الإنترنت.
بمجرد توفر ملف PDF، أنشئ ملف قاعدة جديد باسم pdf_file.yar وضع فيه الكود التالي:
rule pdf_checker
{
meta:
author = "Amir"
description = "Checks whether or not a file is truly a PDF."
} القسم meta يحتوي على معلومات إضافية مثل المؤلف ووصف القاعدة.
لكن القاعدة لم تكتمل بعد — نحتاج إلى تحديد strings وconditions.
تحديد السلاسل النصية في ملفات PDF
نعلم أن ملف PDF يبدأ عادة بـ %PDF- وينتهي بـ %%EOF.
يمكننا التحقق من ذلك باستخدام الأمر strings:
strings finalreport.pdf ستظهر بداية الملف في الشكل التالي:
%PDF-1.3 
وفي نهاية الملف:
%%EOF 
الآن يمكننا تحديث قاعدة pdf_file.yar لتشمل هذه القيم:
rule pdf_checker
{
meta:
author = "Amir"
description = "Checks whether or not a file is truly a PDF."
strings:
$start = "%PDF"
$end = "%%EOF"
condition:
$start at 0 and $end
} في هذا الشرط نحدد أن $start يجب أن يكون في أول الملف (عند الإزاحة 0)، وأن $end يجب أن يكون موجودًا أيضًا في مكان آخر.
إذا تطابقت هذه الشروط، يتم تأكيد أن الملف PDF حقيقي.
اختبار القاعدة على الملفات
بتشغيل القاعدة على ملف PDF صالح، ستحصل على تطابق ناجح.

أما عند تطبيقها على ملف نصي مثل file.txt، فلن تظهر أي نتائج لأن الملف لا يحتوي على ترويسة أو نهاية ملف PDF.

إنشاء قواعد YARA باستخدام القيم الست عشرية (Hexadecimal)
يمكن أيضًا إنشاء قواعد تعتمد على أنماط ست عشرية (Hex Patterns).
لنستخدم الأداة xxd لتحويل محتوى file.txt إلى قيم ست عشرية:
xxd file.txt النتيجة ستكون مثل:
00000000: 4c65 6172 6e69 6e67 2069 7320 6675 6e21 Learning is fun! نضيف الآن قاعدة جديدة داخل pdf_file.yar:
rule my_file
{
strings:
$bytes = {4c65 6172 6e69 6e67 2069 7320 6675 6e21}
condition:
$bytes
} الآن تحتوي القاعدة على متغير $bytes الذي يمثل تسلسل البايتات.
عند تشغيلها ضد file.txt، ستظهر مطابقة لأن القيم تتطابق فعليًا مع محتوى الملف.
أهمية YARA في الأمن السيبراني
تُعد YARA أداة محورية في تحليل البرمجيات الخبيثة والكشف عن التهديدات الرقمية.
فهي تساعد المحللين الأمنيين على أتمتة عملية البحث عن أنماط مميزة داخل الملفات والأنظمة.
يمكن استخدام YARA لاكتشاف البرمجيات الخبيثة المعروفة، استغلالات Zero-Day، أو أي أنماط مخصصة قد تشير إلى نشاط خبيث.
للمزيد من التعمق في YARA، راجع الدليل الرسمي من VirusTotal (رابط خارجي موثوق – DoFollow):
https://developers.virustotal.com/reference/yara-rules
الخلاصة
ختامًا، تُعتبر YARA من الأدوات الأساسية لأي مختص في الأمن السيبراني.
بفضل قواعدها الدقيقة، يمكنها الكشف عن الأنماط المخفية داخل الملفات والمساعدة في تصنيف التهديدات بسرعة.
من خلال الممارسة العملية وكتابة قواعد مخصصة، يمكنك تحويل YARA إلى أداة فعالة في ترسانة التحليل الجنائي الرقمي لديك.
❓الأسئلة الشائعة (FAQ)
ما الهدف الرئيسي من استخدام YARA؟
تُستخدم YARA لاكتشاف وتحليل الملفات بناءً على محتواها الداخلي، مما يساعد في تحديد البرمجيات الخبيثة والأنماط المشبوهة بسرعة.
هل يمكن استخدام YARA على أنظمة Windows؟
نعم، YARA تدعم جميع الأنظمة الرئيسية مثل Windows، Linux، وmacOS، ويمكن تثبيتها بسهولة باستخدام الأوامر المناسبة لكل نظام.
هل يمكن مشاركة قواعد YARA بين المحللين؟
بالتأكيد. يمكن تبادل قواعد YARA بين الفرق الأمنية لتسريع عملية اكتشاف التهديدات وتحسين دقة التحليل.