CrowdResponseを試してみる(4)
SANS Forensics Blogで紹介されている CrowdResponse ですが、Yara のスキャンが可能ですので、Yara のルール部分を確認したいと思います。
yara
http://plusvic.github.io/yara/
The pattern matching swiss knife for malware researchers (and everyone else)
Yaraは文字列などのパターンを定義し、そのパターンの組み合わせが対象データ内に存在しているかを検出するといった仕組みですかね。日本語の解説ページがないかとGoogleで検索してみたのですが、パッションヤラとかが出てきます。
Yaraについてはドキュメント(YARA User's Manual Ver. 2.1!)を参照して覚えていくことになりますが、HEXでRAWイメージを検索しているのと同じ感覚が個人的にはありますね。(条件指定が細かく指定出来る点ではYaraの方が柔軟性が高いですが)
サンプルとして、notepad.exe を検出する定義をお試しで作ってみたいと思います。ファイルの特徴を定義する事になると思いますので、まずは特徴を見つけ出して定義すべき項目をリストアップする必要があります。
ここでは、Notepadの特徴として、PE File Header 内 TimeDateStamp 0x4A5BC60F と Unicode文字列の NOTEPAD.EXE を AND 条件で定義してみます。
rule Notepad
{
strings:
$a = { 0F C6 5B 4A } // Tue Jul 14 08:41:03 2009
$b = "NOTEPAD.EXE" wide //Case sensitive and Unicode
condition:
$a and $b
}
この内容を config.txt に記入し、CrowdResponse.exe -i config.txt -o out.xml を実行した結果が下記になります。結果として TRUE が表示されていますので、正しく検知できているという事でしょうかね。ワイルドカードなどもっと複雑なパターン定義はマニュアル見ながら勉強しないといけませんが、柔軟性の高さにちょっと驚いています。
<tool_Yara>
<params activemem="0" activeexe="0" scanmod="0" maxdepth="4294967295" targetdir="C:\temp\sample\" targetmask="*.exe" targetinc="" targetexc="" targetrecurse="0" yaradir="" yaramask="*.yar" yarainc="" yaraexc="" yararecurse="0" pid="0"/>
<yarafile name="*built-in-config*">
<target file="C:\temp\sample\notepad.exe">
<yararule>
<identifier>"Notepad"</identifier>
<result>"TRUE"</result>
</yararule>
</target>
</yarafile>
</tool_Yara>
</tools>
</system>