راهنمای قوانین YARA: یادگیری این ابزار تحقیق در مورد بدافزار
قوانین YARA برای طبقه بندی و شناسایی نمونه های بدافزار با ایجاد توصیف از خانواده های بدافزار بر اساس الگوهای متنی یا باینری استفاده می شود.
در این مقاله توضیح خواهم داد:
- نحوه عملکرد قوانین YARA
- استفاده موارد برای YARA
- عناصر شما باید در مورد YARA بدانید
- نحوه نوشتن قوانین YARA
قوانین YARA چگونه کار می کنند؟
قوانین YARA مانند یک قطعه است زبان برنامه نویسی ، آنها با تعریف تعدادی از متغیرها که حاوی الگوهای موجود در یک نمونه از بدافزار هستند کار می کنند. اگر برخی یا همه شرایط بسته به قانون وجود داشته باشد ، می توان از آن برای شناسایی موفقیت آمیز یک بدافزار استفاده کرد.
هنگام تجزیه و تحلیل برخی از بدافزارها ، محققان الگوها و رشته های منحصر به فردی را در بدافزار شناسایی کنید که به آنها اجازه می دهد شناسایی کنند که نمونه به کدام گروه تهدید و خانواده بدافزار نسبت داده شده است. با ایجاد یک قانون YARA از چندین نمونه از یک خانواده بدافزار ، می توان چندین نمونه را شناسایی کرد که همگی با احتمالاً یک کمپین یا یک عامل تهدید مرتبط هستند.
هنگام بررسی یک بدافزار ، یک تحلیلگر می تواند یک قانون YARA برای یک نمونه جدیدی که آنها در حال بررسی هستند. سپس می توان از این قانون برای جستجوی پایگاه داده بدافزار شخصی یا مخازن آنلاین خود مانند ویروس توتال برای نمونه های مشابه استفاده کرد.
اگر تحلیلگر بدافزار برای سازمانی کار می کند که از IPS یا یک سیستم عامل پشتیبانی شده دیگر از YARA استفاده می کند که برای محافظت از بدافزار استفاده می شود ، سپس قوانین YARA می تواند به عنوان ابزاری برای پاسخگویی به حوادث برای شناسایی باینری های مخرب در سازمان مورد استفاده قرار گیرد.
موارد استفاده
YARA ثابت کرده است که در جامعه infosec بسیار محبوب است ، دلیل این امر وجود موارد مختلفی است برای اجرای YARA:
- شناسایی و طبقه بندی بدافزار
- یافتن نمونه های جدید بر اساس الگوهای خاص خانواده
- پاسخ دهندگان حادثه می توانند قوانین YARA را برای شناسایی نمونه ها و دستگاه های در معرض خطر بکار گیرند استقرار عملی قوانین YARA سفارشی می تواند دفاع سازمان را افزایش دهد
YARA Elements to Know
برای ایجاد یک قانون مفید YARA ، باید بدانید که
متادیتا
متادیتا بر آنچه قانون YARA جستجو خواهد کرد تأثیری ندارد ، درعوض اطلاعات مفیدی درباره خود قانون ارائه می دهد.
- نویسنده – نام ، آدرس ایمیل ، دستگیره توییتر.
- تاریخ – قانون تاریخ ایجاد شد.
- نسخه – شماره نسخه قانون YARA برای ردیابی اصلاحات.
- مرجع – پیوند به مقاله یا بارگیری نمونه ، از این اطلاعات برای ارائه اطلاعات مربوط به نمونه بدافزاری که قانون برای شناسایی آن استفاده شده استفاده می شود.
- توضیحات – مروری کوتاه بر هدف این قانون و بدافزارهایی که هدف آن است Discover.
- Hash – لیستی از نمونه هش هایی که برای ایجاد قانون YARA استفاده شده است.
Strings
یافتن رشته های منحصر به فرد و جالب در یک نمونه بدافزار معمول است ، اینها برای ساختن ایده آل هستند یک قانون YARA برای تعریف یک رشته در یک قاعده ، خود رشته باید به عنوان یک متغیر اعلام شود.
- $ a = "string from malware sample"
علاوه بر اعلام رشته ، ما همچنین می توانیم اصلاح کننده ها را پس از رشته اعلام شده ضمیمه کنیم. برای تنظیم دقیق جستجو.
- $ a = "malwarestring" کلمه کلیدی – این اصلاح کننده با یک کلمه دقیق مطابقت دارد. به عنوان مثال "www.malwarestring.com" یک مسابقه را برمی گرداند ، اما "www.abcmalwarestring.com" پاسخ نمی دهد.
- $ a = "malwarestring" wide – این با رشته های یونی کد جدا شده مطابقت دارد توسط null bytes ، به عنوان مثال "www… malwarestring… com"
- $ a = "malwarestring" wide ascii – این به شما اجازه می دهد تا قانون بر روی نویسه های unicode و ascii مطابقت داشته باشد.
- $ a = "MalwareString" nocase – قانون بدون توجه به مورد با رشته مطابقت خواهد داشت.
در تصویر زیر من از HxD ، ویرایشگر hex استفاده کرده ام ، در اینجا می توانیم برخی از رشته های ابزار را مشاهده کنیم.
من رشته ASCII " photo.png " را برجسته كرده ام و نمايش شانزده هزينه مربوطه نيز برجسته شده است. با استفاده از این اطلاعات می توانید یک رشته hex را طبق یک قانون YARA اعلام کنید.
- $ a = {5C 70 68 6F 74 6F 2E 70 6E 67} – به استفاده از براکت های فر به جای نقل قول توجه داشته باشید.
- $ a = {5C 70 68 6F ؟؟ ؟ F 2E 70 6E 67} – در صورت مشاهده تغییرات کمی از الگوی هگز در چند نمونه ، می توان از علامت های س asال به عنوان کارت های وحشی استفاده کرد.
- $ a = {5C [2-10] 6F 74 6F 2E 70 6E 67} – در این مثال ، من بیان کردم که رشته ممکن است با مقدار "5C" شروع شود اما ممکن است 2 تا 10 بایت تصادفی قبل از شروع دوباره الگوی تطبیق وجود داشته باشد.
- $ a = {5C (01 02 | 03 04) 6F 2E 70 6E 67} – در این مثال من عنوان كرده ام كه مقادیر هگز در این محل می تواند '01 02 ' یا '03 04' باشد.
برخی رشته ها و شناسه های منحصر به فرد که برای قوانین YARA بسیار مناسب هستند:
- Mutexes – این برای خانواده های بدافزار منحصر به فرد است ، این بدافزارها برای بررسی اینکه آیا دستگاهی قبلاً با بررسی وجود mutex به خطر افتاده است ، از آنها استفاده می شود.
- عوامل کاربری نادر و غیرمعمول – هنگامی که بدافزار با زیرساخت C2 خود ارتباط برقرار می کند شناسایی می شود.
- کلیدهای رجیستری – اغلب توسط بدافزار به عنوان مکانیزم ماندگاری ایجاد می شوند. [1 9659004] مسیرهای PDB – این مخفف Program Database است ، PDB حاوی اطلاعات اشکال زدایی در مورد یک فایل است. بعید به نظر می رسد که PDB برای یک بدافزار داشته باشید اما مسیر PDB اغلب در یک قانون YARA یافت می شود و به عنوان مثال c: users user desktop vc ++ 6 6.2.20 scrollerctrl_demo scrollertest استفاده می شود release scrollertest.pdb.
- رشته های پیکربندی رمزگذاری شده – بدافزار اغلب پیکربندی خود را که شامل IOC های مفید مانند آدرس IP و دامنه ها است ، رمزگذاری می کند. اگر مهارت مهندسی معکوس برای شناسایی این داده های رمزگذاری شده دارید ، می توان از آنها در یک قانون YARA استفاده کرد.
شرایط
بخش رشته ها معیارهای جستجو را برای یک قانون YARA مشخص می کند ، بخش شرایط تعریف می کند معیارهای این قانون برای ایجاد یک مسابقه موفق. چندین شرایط برای استفاده وجود دارد که من آنها را شرح می دهم.
- uint16 (0) == 0x5A4D – بررسی عنوان یک پرونده شرایط بسیار خوبی است که باید در قوانین YARA شما گنجانده شود. این شرط شرط می کند که پرونده باید از طریق ویندوز قابل اجرا باشد ، زیرا مقادیر hex 4D 5A همیشه در ابتدای هدر فایل اجرایی قرار دارند. این به دلیل endianness در YARA معکوس می شود.
- uint32 (0) == 0x464c457f) یا (uint32 (0) == 0xfeedfacf) یا (uint32 (0) == 0xcffaedfe) یا (uint32 (0) == 0xfeedface) یا (uint32 (0) == 0xcefaedfe) – برای شناسایی باینریهای Linux با بررسی سرآیند فایل استفاده می شود.
- (# a == 6) – تعداد رشته ها برابر است با 6.
- ( #a> 6) – تعداد رشته ها از 6 بیشتر است
چند روش مختلف برای تعیین وضعیت اندازه پرونده وجود دارد.
- (اندازه پرونده> 512)
- (اندازه پرونده <5000000)
- (اندازه پرونده <5 مگابایت)
پس از اعلام رشته ها در یک قاعده ، می توانید تعداد موارد منطبقی را که باید ایجاد شود به عنوان یک شرط تنظیم کنید تا قانون شرایط خوبی را بدست آورد. 19659003] 2 از ($ a ، $ b ، $ c)
در صورت امکان سعی کنید و از 2-3 گروه شرایط به ترتیب استفاده کنید برای جلوگیری از ایجاد مثبت کاذب و همچنین ایجاد یک قانون قابل اعتماد.
واردات
واردات یک روش عالی برای اجرای شرایط اضافی در قوانین YARA شما است ، در این مقاله چند نمونه از نحوه استفاده از واردات PE را بیان می کنم .
PE Library:
افزودن نحو "import pe" به آغاز یک قانون YARA به شما امکان می دهد از قابلیت PE PE YARA استفاده کنید ، اگر نتوانید رشته های منحصر به فردی را شناسایی کنید ، این مفید است.
صادرات موارد اضافه شده عالی به قانون YARA است ، صادرات توابعی است که نویسنده بدافزار ایجاد کرده است ، بنابراین مطمئن شوید که از نام های منحصر به فرد آنها استفاده می کنید. در تصویر زیر برخی از صادرات مورد استفاده توسط DLL را شناسایی کردم که توسط تکه ای از بدافزار Formbook حذف شده است.
pe. صادرات ] ("Botanist" ، "Chechako" ، "Originator" ، "Repressions")
در تصویر زیر یک DLL جالب را شناسایی کرده ام که برای اتصال HTTP استفاده می شود ، winhttp.dll:
pe. واردات ("winhttp.dll" ، "WinHttpConnect")
imphash هش بدافزار است جدول آدرس واردات یا IAT که در تصویر قبلی با استفاده از PEStudio شناسایی کردیم. از همان IAT اغلب در بین خانواده های بدافزار استفاده می شود ، بنابراین استفاده از آن در یک قانون YARA باید نمونه های مشابه را شناسایی کند. در یک قانون YARA استفاده می شود ، باید به یک نشانگر زمانی یونیکس تبدیل شود ، در تصویر زیر هنگام تهیه بدافزار مشخص کردم.
- pe. version_info [“CompanyName”] حاوی AmAZon.cOm
- ] pe. language (0x0804) // چین – با تعیین کد زبان مایکروسافت می توان از زبانهای شناسایی شده استفاده کرد.
در تصویر زیر تعدادی از بخش های بدافزار را شناسایی کرده ام که نیستند من معمولاً در سایر اجراهای ویندوز که تجزیه و تحلیل کرده ام وجود دارد. با استفاده از این اطلاعات می توانم نام بخشهای خاص و شماره بخش مربوطه را مشخص كنم.
توجه داشته باشید كه این بخشها دارای نمایه صفر هستند ، بنابراین بخش اول "0" ، بخش دوم "1" و غیره می باشد. بنابراین در مثال زیر من از بخشی به نام "BSS" استفاده کردم که بخش شماره دو است.
pe. == «BSS»
نحوه نوشتن قوانین Yara
تصویر زیر مثالی از قانون YARA است که من بر اساس نمونه بدافزار Redline ایجاد کرده ام:
[19659021] شروع قانون
قانون YARA با نحو "قاعده" و سپس نام قانون آغاز می شود. سپس برای نشان دادن محتوای قانون YARA با "{" ضمیمه می شود.
دقیقاً بالاتر از این ، من عملکرد PE را با استفاده از عبارت "import pe" وارد کرده ام ، این قابلیت در شرایط s استفاده می شود ection of the قاعده.
MetaData
در قانون مثال ، من نویسنده ، نوع پرونده بدافزار ، تاریخ نوشتن قانون ، نسخه قانون ، مرجعی را برای اینکه من از کجا نمونه را آورده ام ، آورده ام. هش بدافزار. این اطلاعات مربوط به زمینه را به هر کسی که ممکن است از قانون استفاده کند یا حتی ممکن است مورد استفاده نویسنده قرار گیرد ، در صورت مشاهده مجدد قانون در مرحله بعدی ، می دهد.
اعلام رشته ها
بعد ، من رشته هایی را مشخص کردم که من در نمونه بدافزار پیدا کردم ، اینها به عنوان متغیرهای قانونی معرفی می شوند و می توانند برای جستجوی فایلهایی با محتوای مشابه استفاده شوند.
رشته هایی که من استفاده کرده ام با استفاده از PEStudio شناسایی شده اند و ترکیبی از رشته های جالب API و ویندوز هستند.
شرایط
بخش شرایط شرایطی است که قانون اعلام می کند چه شرایطی را باید رعایت کرد تا قانون YARA بتواند مطابقت داشته باشد ، اولین قانونی که من قید کردم این است که سربرگ پرونده باید دارای یک ویندوز قابل اجرا باشد. این کار با مشخص کردن مقادیر hex پیدا شده در سرآیند Windows Executable انجام می شود ، در تصویر زیر می توانید نحوه شناسایی این مورد را با استفاده از ویرایشگر hex مشاهده کنید.
نسخه پرونده در داخل بدافزار همچنین به نظر من چیزی بود که ممکن است منحصر به بدافزار باشد بنابراین من این را در قاعده – "نصب نسخه 5 تحقیق" قرار دادم.
من همچنین مشخص کردم که سه واردات باید وجود داشته باشد که PEStudio آنها را مشکوک اعلام کرده است
با گذشت زمان و تجربه ، قادر خواهید بود بخشهای مشکوک را در نمونه ها مشاهده کنید. چند نمونه از بخشهای متداول که خواهید دید عبارتند از: "داده" ، ".reloc" و ".rsrc". در این نمونه ، من چند بخش پیدا کرده ام که متناسب با این الگو نیستند ، بنابراین قانون YARA من به دنبال بخشهایی با نام 'CODE' و 'BSS' است.
سایر شرایطی که من شرط بندی کردم و باید رعایت شود این است که اولین رشته اعلان شده به عنوان '$ a1' باید وجود داشته باشد یا سه رشته '$ b' یا یکی از رشته های '$ c'. شرط باقیمانده این است که اندازه پرونده باید کمتر از 50000 بایت باشد.
اکنون می توان از این قانون برای شروع شکار برای نمونه های اضافی Redline استفاده کرد.
افکار نهایی:
اکنون دانش لازم را برای شروع ساخت دارید قوانین YARA خود را برای شروع جستجوی نمونه های جدید برای تجزیه و تحلیل یا جایگزین کردن برخی از اقدامات شناسایی فعال در سازمان خود آغاز کنید.
اگر می خواهید وضعیت امنیتی سازمان خود را بالغ کنید ، Varonis 'Edge: Perimeter Detection and Platform Security Data را بررسی کنید.
