[Yara] Yara rule 搭配上 global rule 就無法比對成功了?
今天遇到一個問題,
第一個 Yara rule 本來可以偵測某個病毒,
但只要加上另一個 Yara rule,原本的 rule 就會無法偵測…
第一個 Yara rule 長的像這樣,很正常的 rule:
rule Office_DDE_field { strings: $a = /<w:fldChar\s+?w:fldCharType="begin"\/>.+?\b[Dd][Dd][Ee]\b.+?<w:fldChar\s+?w:fldCharType="end"\/>/ condition: $a }
第二個 Yara rule 則像這樣,是個 global private rule:
global private rule javaarchive { strings: $magic = { 50 4b 03 04 ( 14 | 0a ) 00 } $string_1 = "META-INF/" $string_2 = ".class" nocase condition: filesize < 400KB and $magic at 0 and 1 of ($string_*) }
這裡的 global 和 private 是什麼意思呢?
- Global rule 像是一種先決條件,只有在所有的 global rule 的條件都符合時,才會去比對其他的 rule。
- Private rule 則是當這 rule 符合時,不會顯示出符合的結果。
當 Global 和 Private 同時出現時,就表示這條 Global rule 必須符合,
且 Yara 不會因為符合了這條 Global rule,而顯示出比對成功的訊息,
純粹只是讓這個 Global rule 變成一個必須滿足的先決條件。
這樣子就能解釋我所遇到的問題了~
平常的 Office_DDE_field rule 可以符合的,通常是一個 Office 檔案。
但如果加上 javaarchive 這個 global rule,
就必須先滿足是一個 .jar 檔的條件。
一個檔案當然不可能同時是 Office 文件、又同時是 .jar 檔,
所以 Yara 就會找不到符合的結果了~
也就是說,Yara rule 各別執行地好好的,
合在一起跑的時候,可能會有意想不到的錯誤出現呢~
(本頁面已被瀏覽過 409 次)