تکنولوژی

🧠 آموزش کامل YARA: از نصب تا ساخت اولین Rule برای شناسایی بدافزارها – بخش اول

امتیاز کاربران

ستاره فعالستاره فعالستاره فعالستاره فعالستاره غیر فعال
 

فرض کنید یک فایل مشکوک روی سیستم‌تان پیدا شده، آنتی‌ویروس هیچ واکنشی نشان نمی‌دهد اما حس می‌کنید یه چیزی درونش درست نیستدر اینجا ابزاری به نام YARA وارد صحنه می‌شود. ابزاری که به شما قدرت می‌دهد خودتان قانون‌هایی برای شناسایی بدافزار بسازیدبه‌جای اینکه منتظر باشید شرکت‌های آنتی‌ویروس آپدیت منتشر کنند، شما می‌توانید با چند خط ساده کد، هر فایل مشکوکی را زیر ذره‌بین بگذارید.

🔹  YARA چیست؟

YARA (Yet Another Ridiculous Acronym) ابزاری open source از شرکت VirusTotal  است که برای شناسایی و دسته‌بندی بدافزارها بر اساس الگوهای متنی و باینری استفاده می‌شود.
به زبان ساده‌تر:
YARA
مثل یک آنتی‌ویروس قابل برنامه‌نویسی است.
شما با نوشتن «Rule» مشخص می‌کنید دنبال چه چیزی در فایل‌ها بگردد. مثلاً نام خاصی، رشته‌ای از بایت‌ها، یا حتی ترکیب چند ویژگی هم‌زمان.

🔹  چرا YARA ؟

 شناسایی بدافزارهای جدید و ناشناخته (Zero-Day)

 امکان ساخت Signature اختصاصی برای سازمان‌ها

 تحلیل حافظه، فایل‌ها و فرآیندهای در حال اجرا

 ابزار پایه در بیشتر پلتفرم‌های تحلیل مانند Cuckoo Sandbox، Volatility، MISP و MalwareBazaar

🔁  مقایسه عملی: آنتی‌ویروس (AV) در برابر YARA  | چه زمانی کدام‌یک را استفاده کنیم؟

نگاه کلی — فلسفه ی شناسایی

آنتی‌ویروس (AV) : ابزار محافظتی «پلن اول» در Endpointها که با استفاده از امضاهای شناخته‌شده، رفتارهای مشکوک و موتورهای heuristics/ML تلاش می‌کند تهدیدها را قبل از اجرا متوقف کند. هدفش محافظت بلادرنگ (real-time) و کشف تهدیدات شناخته‌شده و بعضاً رفتارهای مشکوک است.

YARA : موتور قاعده‌ای (rule-based) برای شناسایی فایل‌ها/نمونه‌ها بر اساس الگوهای متنی، باینری و ساختاری. ابزار تحلیلی و شکار تهدید (Threat Hunting) که در آزمون، طبقه‌بندی و مکان‌یابی نمونه‌های بدافزار در دیتاست‌ها یا روی فایل‌ سیستم/ایمیج‌ها استفاده می‌شود.

 مزایا و محدودیت‌ها

آنتی‌ویروس (AV)

مزایا

✔️ محافظت بلادرنگ و خودکار روی endpointها.

✔️ به‌روزرسانی مداوم امضاها و موتورهای تشخیص.

✔️ تجربه کاربری ساده: کاربر معمولاً نیاز به دخالت ندارد.

محدودیت‌ها

✔️ ممکن است در برابر بدافزارهای جدید (zero-day) یا گونه‌های هدفمند ناکافا باشد.

✔️ همیشه نمی‌توان امضای مخصوص سازمان شما را سریع منتشر کرد.

✔️ گاهی False Positive یا False Negative دارد.

YARA

مزایا

✔️ انعطاف‌پذیری بالا در تعریف الگوها (متن، بایت pattern، regex، ماژول PE/ELF).

✔️ عالی برای شکار تهدید، تحلیل بدافزار و دسته‌بندی نمونه‌ها.

✔️ می‌توان Ruleهای بسیار دقیق و اختصاصی برای سازمان نوشت.

محدودیت‌ها

YARA ✔️خود محافظت بلادرنگ endpoint را تضمین نمی‌کند. نیاز به integration  برای اجرا در real-time .

✔️ نوشتن Ruleهای دقیق نیازمند دانش فنی و تست گسترده است (برای اجتناب از False Positive).

✔️ توانایی تشخیص رفتارهای زمان اجرا (runtime behavioral detection) محدود است مگر با ترکیب اطلاعات از Sandbox/EDR .

برای نوشتن Ruleهای YARA به چه میزان دانش نیاز است؟

یکی از جذاب‌ترین ویژگی‌های YARA  این است که برای شروع، نیازی نیست تحلیلگر امنیت حرفه‌ای باشید. اما بسته به سطحی که می‌خواهید، دانش مورد نیازتان متفاوت خواهد بود:

🔸 سطح مقدماتی – شروع آسان برای همه

اگر فقط می‌خواهید چند Rule ساده برای شناسایی رشته‌ها یا الگوهای متنی بسازید، کافی است:

✔️ با ساختار فایل‌های متنی و دستورات ساده آشنا باشید

✔️ مفهوم string  و condition  را در YARA بدانید

✔️ بتوانید از ترمینال یا CMD دستور اجرا کنید.

📘  در این مرحله، می‌توانید Ruleهایی مثل جستجوی نام دامنه، آدرس IP، یا توابع مشخص در فایل‌ها بنویسید، بدون نیاز به دانش عمیق امنیتی.

🔸 سطح متوسط – درک ساختار فایل‌ها و بدافزارها

اگر می‌خواهید Ruleهای دقیق‌تر و قابل اعتماد بسازید، لازم است کمی با مفاهیم زیر آشنا شوید:

✔️ ساختار فایل‌های PE (Portable Executable)  در ویندوز

Signature ✔️ های باینری و نحوه نوشتن آن‌ها در قالب Hex

✔️ تشخیص الگوهای تکراری در چند نمونه بدافزار مشابه

در این مرحله معمولاً افراد در تیم‌های SOC یا واحدهای Threat Intelligence کار می‌کنند، و از YARA برای شناسایی خانواده‌های خاص بدافزار استفاده می‌کنند.

🔸 سطح پیشرفته – مخصوص تحلیلگران بدافزار

برای حرفه‌ای شدن در نوشتن Rule، باید:

✔️ بتوانید کد اسمبلی یا Disassembly فایل را در ابزارهایی مثل IDA, Ghidra, یا x64dbg بخوانید؛

✔️ رفتار بدافزار را در Sandboxها تحلیل کنید

✔️ از ماژول‌های YARA مثل pe, elf, math, hash, و cuckoo استفاده کنید

Rule ✔️ هایی بنویسید که False Positive  پایین و Detection Accuracy  بالا داشته باشن.

در این سطح، شما به‌نوعی یک Threat Hunter هستید. کسی که نه فقط به دنبال بدافزار می‌گردد، بلکه الگوهای رفتاری آن را درک می‌کند.

در واقعYARA  ابزاری است که با شما رشد می‌کند.
می‌توانید از Ruleهای ساده شروع کنید، سپس با مشاهده‌ی خروجی‌ها و بررسی فایل‌های مشکوک، به‌مرور Rule های هوشمندتر بنویسید.
تقریباً تمام تحلیلگران حرفه‌ای امنیت، کارشان را با همین Ruleهای ساده آغاز کرده‌اند.

 نصب YARA

🔸  در ویندوز

  1. از گیت‌هاب رسمی دانلود کنید:
    🔗 https://github.com/VirusTotal/yara/releases
  2. فایل ZIP را استخراج و مسیر bin  را به PATH  اضافه کنید.
  3. در CMD بنویسید:

yara --version

اگر نسخه نمایش داده شد، نصب موفق بوده است.

🔸  در لینوکس

 

sudo apt install yara


یا برای نسخه ی آخر

​​​​​
git clone https://github.com/VirusTotal/yara.git

cd yara

./bootstrap.sh

./configure

make

sudo make install

🔹  ساخت اولین Rule در YARA

یک فایل جدید با نام first_rule.yar  بسازید و این محتوا را در آن بنویسید:

rule HelloYARA

{

    strings:

        $text = "Hello World"

    condition:

        $text

}

و حالا اجرایش کنید:

yara first_rule.yar test.txt

اگر در فایل test.txt رشته‌ی “Hello World” وجود داشته باشه، YARA آن را تشخیص می‌دهد.

🔹 بخش‌های اصلی Rule در YARA

هر Rule شامل سه قسمت اصلی است:

Header  (نام و ویژگی‌ها)

rule RuleName : tag1 tag2

Strings(رشته‌هایی که باید پیدا شوند)

می‌تونن متنی، باینری یا regex باشن.

strings:

    $a = "malware"

    $b = { E2 34 56 ?? 90 }

    $c = /Trojan.*/

Condition (شرط شناسایی)

مشخص می‌کنه چه زمانی Rule فعال شه.

condition:

    any of ($a,$b,$c)


🔹 مثال عملی: شناسایی بدافزار با الگوی فایل اجرایی

فرض کنید بدافزار خاصی همیشه تابعی با نام خاص داره. ما می‌تونیم Rule زیر رو بنویسیم:

rule Trojan_Sample

{

    meta:

        author = "USER 1"

        description = "Detects Trojan variant XYZ"

    strings:

        $func = "StartPayload"

        $url = "http://malicious-site.com"

    condition:

        all of them

}

وقتی این Rule رو روی فولدر فایل‌های مشکوک اجرا کنید، هر فایل حاوی این دو رشته شناسایی میشه.

🔹 سطح پیشرفته: شروط منطقی، فایل‌های چندبخشی و ماژول‌ها

YARA از شرط‌های منطقی پیچیده پشتیبانی می‌کند:

condition:

    (#a + #b) > 5 and filesize < 1MB

همچنین ماژول‌های مختلفی داره برای بررسی ساختارهای خاص مثل:

✔️pe  : برای فایل‌های ویندوزی .exe

✔️elf  : برای فایل‌های لینوکسی

✔️cuckoo  : برای تحلیل رفتار در Sandbox

مثال:

import "pe"


rule Suspicious_PE

{

    condition:

        pe.imports("kernel32.dll", "VirtualAlloc")

}

این Rule هر فایل اجرایی ویندوزی که تابع VirtualAlloc را وارد کرده باشد (نشانه‌ی رفتار مشکوک حافظه) تشخیص می‌دهد.

🔹  تست و اجرای Ruleها روی فایل‌ها

yara -r rules_folder/ suspicious_files/

پارامتر -r باعث می‌شود کل زیرپوشه‌ها بررسی شوند.

🔹 نکات حرفه‌ای در ساخت Ruleها

✔️ از نام‌های توصیفی و بخش meta  برای نظم استفاده کنید.

✔️ از wildcard byte patterns در  Signatureها برای انعطاف بیشتر بهره ببرید.

✔️ همیشه قبل از انتشار Rule، آن را روی چند فایل سالم هم تست کنید (False Positive نداشته باشد).

✔️ از Ruleهای آماده در YARA-Rules GitHub  برای یادگیری استفاده کنید.

📍 کاربردهای بهینه — کجا از AV و کجا از YARA استفاده کنیم؟

مواردی که آنتی‌ویروس مناسب‌تر است

✔️ محافظت روزمره کاربران و کارمندان (real-time protection) .

✔️ جلوگیری از اجرا و انتشار تهدیدهای شناخته‌شده روی endpoint .

✔️ مدیریت مرکزی با کنسول EDR/AV و پایش رخدادهای امنیتی ابتدایی.

مواردی که YARA  مناسب‌تر است

✔️ شکار تهدید (Threat Hunting) در فضای ذخیره‌سازی یا آرشیو نمونه‌ها.

✔️ تحلیل بدافزار و دسته‌بندی خانواده‌های بدافزار (Threat Intelligence) .

✔️ بررسی نمونه‌های دریافتی از حملات هدفمند و ساخت قواعد اختصاصی سازمان.

✔️ اسکن large corpus از فایل‌ها، ایمیج‌ها یا حافظه (با YARA روی Dumpها یا فایل‌ها).

🔗  چگونه آنها را ترکیب کنیم (Best Practice)

ترکیب AV و YARA به‌معنای استفاده از نقاط قوت هر دو است:

پایه :  AV روی Endpoint
AV
 کار جلوگیری و بلوکه کردن اولیه را انجام می‌دهد.

لایه ی شکار و تشخیص افزوده : YARA در سرورهای مرکزی و Sandboxes

YARA ✔️روی فایل‌های دریافتی ایمیل، فایل‌های بارگذاری شده به سرور، آرشیوها یا نتایج Sandboxes اجرا شود.

Cuckoo/VM automation ✔️ : بعد از اجرای نمونه در Sandbox، از YARA برای اسکن خروجی‌ها (extracted files، network captures) استفاده کنید.

Integration  با SIEM / EDR

نتیجه ی اسکن YARA را به SIEM ارسال کنید تا correlation ruleها بسازید.

اگر YARA یک نمونهی خطرناک را پیدا کرد، EDR  میتواند آن endpoint را ایزوله یا فرآیند را متوقف کند.

تبادل Rule و Signatures

Rule های موفق YARA را می‌توان به تیم Threat Intel فرستاد تا امضای AV یا سیگنیچرهای مرکزی تولید یا تنظیم شوند.

⚠️  مثال‌های عملی و دستورالعمل‌های سریع

اسکن یک پوشه با YARA (مثال)

yara -r /path/to/rules/ /path/to/suspicious_samples/


وقتی AV هشدار داد اما می‌خواهید مطمئن شوید (Workflow پیشنهادی)

اگرAV  هشدار داد : نمونه را quarantine کنید. نمونه را با YARA و Sandbox تحلیل کنید . اگر تایید شد، Rule YARA  و IoCها را به SIEM/EDR اضافه کنید.

 وقتی YARA چیزی پیدا کرد اما AV چیزی نشان نداد

احتمالاً نمونه جدید یا polymorphic است. نمونه را به Sandbox بفرستید، رفتار را بررسی کنید و یک Rule دقیق‌تر بسازید یا به تیم IR اطلاع دهید.

🔎  جدول تصمیم‌گیری سریع (Quick Decision Matrix)

✔️ اگر محافظت بلادرنگ می‌خواهید: آنتی‌ویروس

✔️ اگرشکار تهدید و دسته‌بندی نمونه‌ها می‌خواهید:  YARA

✔️ اگرنیاز به تشخیص رفتار زمان اجرا دارید :  AV + EDR + Sandbox (YARA مکمل)

✔️ می‌خواهید امضای اختصاصی سازمانی بسازید: شروع با YARA، بعد توزیع در AV/EDR

    نکات نهایی و چک‌لیست برای تیم‌ها

✔️ استفاده همزمان از AV و YARA، بهترین پوشش را فراهم می‌کند.

YARA ✔️برای کشف نمونه‌های جدید عالی‌ست. اما برای حفاظت کاربر نهایی باید با AV/EDR تلفیق شود.

✔️ همیشه Ruleهای YARA را قبل از تولید، روی نمونه‌های benign تست کنید تا False Positive کاهش یابد.

✔️ مستندسازی (meta fields) و نسخه‌بندی Ruleها را فراموش نکنید تا مدیریت آسان‌تر شود.

 در مقاله ی بعدی بصورت تخصصی تر به بررسی YARA RULE ها می پردازیم. 

آموزش تخصصی YARA Rules| از ساختار Rule تا شناسایی دقیق بدافزارها در سطح سازمانی - بخش دوم

تمام حقوق سایت برای سلام دیجی و نويسندگان آن محفوظ می باشد