امیرحسین تنگسیری نژاد
مهندس و مدرس شبکه و امنیت شبکه و مدیر کل جزیره هک و امنیت اطلاعات توسینسو

YARA چیست و چگونه از آن استفاده کنیم؟

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

ما در مقاله ایی مجزا به صورت کامل در رابطه با مبحث Cyber Threat و Threat Hunting صحبت کردیم و این مفهوم را فرا گرفتیم و اگر با مفاهیم این مباحث آشنا نیستید میتوانید به این مقاله مراجعه کنید. 

در شرایطی که ما اطلاعات CyberThreat هارا در دست داریم استفاده و بکارگیری این اطلاعات مشترک امری بسیار مهم میباشد زیرا زمانی که ما آنهارا بکارگيري نکنیم و براساس محیط کاریمان از آنها استفاده نکنیم عملا دونستن آنها کاری بیهوده است. 

باتوجه به وجود منابع مختلف برای جمع آوری اطلاعات در رابطه با Cyber Threat ها یکی از مراکزی که میتوانیم به خوبی از آن بهرمند شویم CyBOX میباشد که هر روز اطلاعات خوبی را در رابطه با Threat ارائه میکند که این اطلاعات طیف گسترده ایی را شامل آدرس های IP و مقدار های Hash و کلید های Registry و... را شامل میشود. 

از این بابت یکی از راه های که ما میتوانیم برای شناسایی بد افزار ها به واسطه این اطلاعات انجام دهیم و آنهارا در سیستم تشخیص دهیم میتواند ابزار YARA باشد که در این مسئله با ترکیب اطلاعات Cyber Threat میتواند کمک خوبی را به ما بکند. 

ابزار YARA چیست؟ 

درواقع YARA یکی از ابزار های پرکاربرد و پر استفاده در بین افرادی است که قصد و هدف شناسایی بد افزار های موجود درون یک سیستم را دارند. این ابزار که به صورت رایگان و Open Source ارائه شده است این امکان را به ما میدهد که تحت خط فرمان به واسطه Script های آن و Script های Python شروع به نوشتن قوانینی برای شناسایی این بد افزار ها کنیم. ابزار YARA این فرآيند به صورت Signature Based (و یا همان String Based) انجام میدهد که همانند ویژگی اولیه AntiVirus ها برای شناسایی بد افزار ها میباشد.  

چگونه از YARA استفاده کنیم؟ 

برای بهره‌برداری و استفاده از YARA شما باید Rule های مورد نظرتان را ایجاد کنید و در یک فایل ذخیره کنید و آن را با YARA بر روی فایل مخرب مورد نظرتان اجرا سازی کنید. YARA چیست و چگونه از آن استفاده کنیم؟

درصورتی که خروجی خاصی دریافت نکنید اصولا YARA چیزی را نتوانسته به واسطه آن Rule مورد نظرتان کشف کند و اگر چیزی را کشف کند هم به شما نمایش میدهد. 

نوشتن YARA Rule به چه شکل است؟ 

برای نوشتن YARA Rule شما باید از سه قانون و سه بخش تبعيت کنید که عبارتند از:

  • بخش Meta
  • بخش های String متعلق به نرم افزار مخرب مورد نظر
  • بخش Condition

نوشتن اولین YARA Rule:

  • انتخاب یک نام یا Identifier

در ابتدا باید برای Rule مورد نظرتان یک نام یا یک شناسه منحصر به فرد انتخاب کنید، مانند زیر:

YARA چیست و چگونه از آن استفاده کنیم؟

  • اضافه کردن بخش Meta

در بخش Meta شما میتوانید اطلاعات تکمیلی Rule خود را بنویسید که میتواند شامل اطلاعات مختلفی از جمله نویسنده Rule و زمان نوشتن آن و همچنین توضیحاتی در رابطه با کار آن باشد. نکته: این اطلاعات در هنگام بررسی بد افزار مورد استفاده قرار نمیگیرند.

YARA چیست و چگونه از آن استفاده کنیم؟

  • 3: اضافه کردن String و Signature

در این بخش باید متغیر های ایجاد کنیم و آن را با Signature و یا String مربوط به بد افزار مورد نظر پر کنیم. نکاتی که برای ساخت متغییر باید توجه داشته باشید این است که متغییر ها در YARA Rule با $ شروع میشوند و به کارکتر های کوچک و بزرگ حساس هستند و نباید با عدد شروع شوند.

YARA چیست و چگونه از آن استفاده کنیم؟

  • 4: اضافه کردن Condition

در این بخش شما باید به واسطه Condition بیان کنید که قرار است Rule شما چه شرطی را صورت بدهد و به چه شکلی عمل کند. در این بخش ما با از توابع منطقی استفاده میکنیم. علاوه بر این نکته ایی که باید به آن توجه کنید این است که باید در Condition تمامی مقدار های بخش String را شامل شود.

YARA چیست و چگونه از آن استفاده کنیم؟

چه نکاتی در نوشتن قوانین(Rules) YARA باید درنظر گرفته شود؟

نوشتن Rule در YARA دارای قواعد خاص خود میباشد و این قواعد میتوانند به شکل بهتری به شما در تشخیص بد افزار ها کمک کنند. از این بابت اگر این سه معیار را در فرآیند نوشتن Rule های خود رعایت کنید بسیار میتواند نتیجه خوبی به شما بدهد. توجه داشته باشید که در نوشتن YARA Rule قسمت String اهمیت بیشتری میتواند داشته باشد و در اولویت قرار گرفته است.

  1. از مقدار های استفاده کنید که بخش های ضروری از رفتار یک بد افزار میباشند.
  2. این مقدار ها باید به شکلی باشند که بتوان آن را از دیگر بد افزار ها و دیگر خانواده های بد افزار ها متمایز کند.
  3. این معیار ها و مقدار ها باید به شکلی باشند که به صورت رایج مورد استفاده قرار میگیرند و تست شده هستند.

امیرحسین تنگسیری نژاد
امیرحسین تنگسیری نژاد

مهندس و مدرس شبکه و امنیت شبکه و مدیر کل جزیره هک و امنیت اطلاعات توسینسو

مهندس و مدرس شبکه و امنیت شبکه, دارای مدارک مختلف از Splunk و AWS و Fortinet و Huawei حوزه اصلی فعالیت بنده در زمینه شبکه مباحث R&S و Service Provider می‌باشد و در زمینه امنیت نیز در موقعیت های مختلفی مانند PenTest و SoC فعالیت داشته و دارم. سابقه همکاری با بعضی سازمان های در قالب پروژه و... را داشته ام الان به عنوان مدرس در TOSINSO مشغول به فعالیت هستم. لینکداین: https://www.linkedin.com/in/amirhoseintangsirinezhad/

15 تیر 1400 این مطلب را ارسال کرده

نظرات