Yara

YARA הוא כלי לאיתור וזיהוי תוכנות זדוניות (או קבצים אחרים) על ידי יצירת סט כללים וחוקים המחפשים מאפיינים ספציפיים שיסייעו לזיהוי התוכנה כזדונית. YARA פותח כפרויקט קוד פתוח על ידי ויקטור אלווארז מחברת virusTotal והוא פועל בצורה של איתור התוכנות הזדוניות על סמך תבניות טקסטואליות או בינאריות, כאשר במקרה שתוכנה זדונית תענה לאחד מהכללים שיצוין באותן תבניות, היא תזוהה כתוכנה זדונית.

תיאור כללי 
YARA נוצר לראשונה בנובמבר 2013 על ידי ויקטור אלווארז ונכתב בשפת C. מקור השם YARA הוא ראשי תיבות של Yet Another Recursive Acronym (עוד ראשי תיבות רקורסיביים) או של Yet Another Ridiculous Acronym (עוד ראשי תיבות מגוחכים). תחביר הטקסט של שפת התכנות של YARA המשמשת לכתיבת התבניות הטקסטואליות או הבינאריות זהה ברובו לתחביר של שפת C.

תחביר בסיסי של YARA: rule Example
{

 condition:
 falsh

}
הסבר:

בשורת הקוד הראשונה אנו מציינים את שם הכלל/החוק, לאחר כתיבת המילה השמורה rule. שם זה ישמש כמזהה הכלל. תחביר מילות המפתח מחויב להתאים למוסכמות הלקסיקליות של שפת C, כך שהן יכולות להכיל כל תו אלפאנומרי (אות או מספר) או קו תחתון, אך התו הראשון לא יכול להיות ספרה, הן רגישות לאותיות רישיות ואינן יכולות לעלות על 128 תווים. כמו כן, קיימות מילים רבות שמהוות מילות שמורות וחל איסור להשתמש בהן כמילות מפתח.

לאחר מכן, תחת המילה השמורה condition, אנו מציינים ביטוי או ערך בוליאני שיקבע את המקרים בהם קובץ שהמאפיינים שצוינו יימצאו בו יזוהה כתוכנה זדונית. בדוגמת הקוד שהוכנסה לעיל, לא צוין אף מאפיין לקוד זדוני ועל כן תחת condition לא ציינו אף ביטוי בוליאני, אלא את הערך הבוליאני Falsh.

שתי שדות אלו (rule וcondition) הן שדות חובה לבניית תבנית בYARA, אך לרוב כמעט ולא יהיה ניתן למצוא שימוש בתבנית YARA ללא שימוש גם בשדה string, בו אנו מנסחים את המחרוזות הטקסטואליות או הבינאריות שישמשו כמאפיינים של התוכנות הזדוניות ובנוגע אליהן, תחת condition, נגדיר את התנאים.

דוגמה לתחביר של YARA עם ציון מזהים: rule Example
{
 strings:
 $example_text_string = "Here you enter text"
 $example_hex_string = { E2 34 A1 C8 23 FB }

 condition:
 $example_text_string or $example_hex_string
}
הסבר:

תחת rule הגדרנו את מזהה הכלל. כעת פתחנו את בלוק התבנית עם סוגריים מסולסלים וציינו שני מזהים לתוכנות זדוניות, האחד עם תווי טקסט והשני עם תווים הקסדצימלים. לאחר מכן, תחת condition הגדרנו מהן התנאים בהן אם נזהה בקובץ מסוים את המאפיינים שתחת string הוא יזוהה כקובץ זדוני. במקרה הספציפי הזה קבענו שאם נמצא קובץ שיימצא בו אחד משני המאפיינים שצוינו, הוא יזוהה כקובץ זדוני. במקרים אחרים, היינו יכולים להגדיר תחת condition תחביר של and ולא or וכך, רק אם שני המאפיינים שצוינו תחת string זוהו בקובץ הזדוני, הוא יוגדר כקובץ זדוני. לדוגמה: $example_text_string and $example_hex_string
ל-YARA תחביר רחב, הכולל גם שימוש בלולאות, תגי meta ועוד ובערך זה נסקר התחביר הבסיסי שלה בלבד.

קישורים חיצוניים 
 
 פרוייקט YARA בGitHub
 התיעוד של פרוייקט YARA
 עורך קוד ייעודי עבור YARA
 כתיבת כללי yara באמצעות פייתון

הערות שוליים 

שפות תכנות