LinuCレベル3 セキュリティスペシャリスト インシデントの検知・防止 問18
インシデントの検知・防止/ホストセキュリティ次のYARAのルールで検出されるファイルの説明として適切なものはどれか。 rule suspicious_dropper { strings: $mz = { 4D 5A } $cmd = "cmd.exe /c" nocase condition: $mz at 0 and $cmd }
当サイトのオリジナル問題(LinuCレベル3 セキュリティスペシャリストの出題範囲「インシデントの検知・防止」に対応。実際の試験問題ではありません)
- A先頭2バイトが 4D 5A か、大文字・小文字を区別して cmd.exe /c を含むファイルのどちらかに一致する
- Bファイルのどこかに 4D 5A のバイト列と、大文字・小文字を区別した cmd.exe /c の両方を含むファイルに一致する
- C先頭2バイトが 4D 5A で、ファイル名が大文字・小文字を問わず cmd.exe であるファイルに一致する
- D先頭2バイトが 4D 5A で、大文字・小文字を問わず cmd.exe /c という文字列を含むファイルに一致する
正解:D
解説
YARAのルールでは、strings セクションで探すパターンを定義し、condition セクションでそれらを組み合わせた一致の条件を書きます。{ 4D 5A } は16進数で書いたバイト列で、ASCIIの「MZ」にあたり、WindowsのPE形式の実行ファイルの先頭に現れます。$mz at 0 はそのバイト列がファイルの先頭(オフセット0)にあることを条件にします。文字列に付けた nocase は大文字・小文字を区別せずに照合させる修飾子です。したがってこのルールは、先頭がMZで、中身のどこかに cmd.exe /c(大文字・小文字は問わない)を含むファイルに一致します。
選択肢ごとの解説
- A誤り。condition は and で結ばれているため両方の条件が必要です。また nocase により大文字・小文字は区別されません。
- B誤り。at 0 によって 4D 5A はファイルの先頭にある必要があり、nocase によって文字列の大文字・小文字は区別されません。
- C誤り。strings で定義したパターンはファイルの内容と照合されるもので、ファイル名を調べる条件ではありません。
- D正しい。$mz at 0 で先頭が 4D 5A(MZ)であることを、nocase 付きの $cmd で大文字・小文字を問わずその文字列を含むことを求めています。