YARA به مدت بیش از 15 سال در حال توسعه و پیشرفت بوده تا اینکه به یک ابزار ضروری برای محققین امنیتی بخصوص محققین بدافزار تبدیل بشه. در طول این مدت شاهد بروزرسانی های متعددی بوده، ویژگی های جدیدی بهش اضافه شده و باگ های بیشماری در اون رفع شده. با این حال VirusTotal اعلام کرده که یک بازنویسی کامل از اون رو توسعه داده.
پیاده سازی جدید که YARA-X نام داره، بصورت کامل در Rust توسعه داده شده. VT هدف از این پیاده سازی جدید رو موارد زیر اعلام کرده:
- تجربه کاربری بهتر: رابط خط فرمان جدید مدرنتره و برای نمایش بهتر، از رنگ های مختلفی استفاده میکنه و گزارشهای خطا در این نسخه واضحتر هستن. در آینده هم یسری ویژگی جدید برای تجربه کاربری بهتر، قراره بهش اضافه بشه.
- سازگاری در سطح رولها: در حالیکه دستیابی به سازگاری 100 درصد دشواره، اما سعی کردن تا 99 درصد این نسخه رو با YARA در سطح رولها سازگار نگه دارن. عدم سازگاریها باید حداقل باشه و بطور کامل مستند میشن. نمونه از رولهای YARA-X:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
rule silent_banker : banker { meta: description = "This is just an example" threat_level = 3 in_the_wild = true strings: $a = {6A 40 68 00 30 00 00 6A 14 8D 91} $b = {8D 4D B0 2B C1 83 C0 27 99 6A 4E 59 F7 F9} $c = "UVODFRYSIHLNWPEJXQZAKCBGMT" condition: $a or $b or $c } |
- بهبود عملکرد: YARA بدلیل سرعتی که در شناسایی داره معروفه، اما برای رولهای خاصی، بخصوص رولهایی که داخلشون از حلقه های پیچیده یا عبارات منظم استفاده میشه، کاهش سرعت چشمگیر میشه. YARA-X این کاهش سرعت رو در مواجه با چنین رولهایی نداره. بصورت کلی VT اعلام کرده که هدفشون اینه که YARA-X از نظر عملکرد خیلی بهتر از YARA باشه.
- افزایش قابلیت اطمینان و امنیت: با توجه به اینکه YARA در C توسعه داده شده، ممکنه دارای آسیب پذیری های امنیتی باشه. YARA-X در Rust توسعه داده شده که قابلیت اطمینان و امنیت بالایی رو ارائه میده.
- راحت برای توسعه دهنده: اولویت VT سهولت ادغام در پروژه های دیگه و نگهداری ساده هستش. برای تسهیل یکپارچه سازی بدون مشکل، APIهای رسمی برای پایتون، گولنگ و سی ارائه شده. YARA-X همچنین برخی از نقصهای طراحی رو که باعث میشه نگهداری و توسعهی YARA چالشبرانگیز باشه رو هم برطرف میکنه.
آیا بازنویسی کامل برای رسیدن به این اهداف ضروری بود؟
بازنویسی پرخطره، چون باعث ایجاد باگهای جدید، مشکلات سازگاری با نسخه های قدیمی و دو برابر شدن تلاش برای تعمیر و نگهداری میشه، چون کدهای قدیمی بعد از راه اندازی سیستم جدید همچنان وجود دارن. در واقع، سیستم قدیمی ممکنه سالها، حتی دهه ها، همچنان مورد استفاده قرار بگیره.
با این حال، VT به دلایل زیر این بازنویسی رو درست دونسته:
- YARA یک پروژه بزرگ نیست، بلکه پروژهای با اندازه متوسط است که فاقد زیرسیستم یا مولفه های جداست که بتونن بصورت جداگانه به زبان دیگه ای منتقل بشن. انتقال تدریجی به Rust غیرعملی بود، چون بخشهای زیادی از کد به هم مرتبط هستن.
- VT بهبودهایی رو در نظر داشت که نیاز به تغییرات اساسی در طراحی داشتن. پیاده سازی این موارد در کد C، شامل بازنویسی های گسترده میشه که همون ریسکهای شروع مجدد با Rust رو به همراه داره.
- VT بعد از یک سال کار بر روی این پروژه، متوجه شده که نگهداری از Rust نسبت به C آسونتره. Rust ضمانتهای قابل اعتمادتری ارائه میده و ادغام کدهای شخص ثالث، به ویژه برای پروژههای چندسکویی رو ساده میکنه.
واقعا خداحافظ YARA:
VT اعلام کرده که با توجه به استفاده ی خیلی از شرکتها و سازمانها از YARA، این پروژه همچنان در حال نگهداری هستش و نسخه های بعدی شامل رفع باگها و ویژگی های محدود خواهد بود. با این حال اعلام کردن که انتظار ماژول یا ویژگی بزرگی رو نداشته باشید. همه ی ویژگی جدید و بزرگ فقط برای YARA-X ارائه میشه.
YARA-X الان در چه وضعیتی قرار داره:
YARA-X هنوز در مرحله آزمایشی (بتا) قرار داره، اما به اندازه ای بالغ و پایداره، بخصوص از طریق خط فرمان یا اسکریپتهای پایتون، که بشه ازش استفاده کرد. در حالی که API ها ممکنه همچنان تغییرات جزئی داشته باشن، جنبه های اساسی اون از قبل تثبیت شدن.
VT گفته که مدتیه که YARA-X رو در کنار YARA اجرا میکنه، میلیونها فایل رو با ده ها هزار رول اسکن کرده و به ناسازگاریهای بین این دو پرداخته. این بدان معناست که YARA-X از قبل در شرایط واقعی تست شده. این تستها حتی باگهایی رو در YARA کشف کرده.
VT از محققین امنیتی درخواست کرده تا YARA-X رو تست کنن و در صورت یافتن باگ یا ویژگی که میخوانش، بهشون گزارش بدن.
قدمی بعدی:
VT اعلام کرده که میخواد YARA-X رو از هر نظر بهتر از YARA کنه و کاری کنه که همه ی کاربران YARA با کمال میل بدلیل امکاناتی که داره به YARA-X مهاجرت کنن.
برای رسیدن به این هدف، انتشار نسخه ی بتا رو اولین قدم دونستن و در ادامه قراره بروزرسانی های جدیدی از این نسخه رو منتشر کنن.
برای استفاده و آشنایی بیشتر با این پروژه میتونید از این لینک استفاده کنید.