فرض کنید یک فایل مشکوک روی سیستمتان پیدا شده، آنتیویروس هیچ واکنشی نشان نمیدهد اما حس میکنید یه چیزی درونش درست نیست. در اینجا ابزاری به نام 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
🔸 در ویندوز
- از گیتهاب رسمی دانلود کنید:
🔗 https://github.com/VirusTotal/yara/releases - فایل ZIP را استخراج و مسیر bin را به PATH اضافه کنید.
- در 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 تا شناسایی دقیق بدافزارها در سطح سازمانی - بخش دوم