yaraルールを勉強してみる。自分の友人に屋良さんという人がいるが、最初yaraルールと聞いた時に、屋良さんのマイルールなのかと思ってしまった。そんな気難しい人ではないんだが。。。
閑話休題
yaraルールは、一般的には、マルウェアの検知で使われる。ただし、マルウェアがわからない限り、ルールの作りようもなく、あくまでもファイルを見ているだけなので、振る舞い検知までできない。簡単にいうとユーザ定義の定義ファイルのエントリと言える。
なので、作りっぱなしとか更新しないというのはありえないと思う。
WindowsからサクッとUbuntuを起動して試してみた。WSLは神である。
インストール
apt -y install yara
作業ディレクトリの作成
mkdir -p yara
cd yara
単純なテキストファイルでのテスト
cat <EOF> test.txt
This is a test file!
EOF
このテキストファイルを検出できるyaraファイルの作成
cat << 'EOF' > test.yara
rule ExampleTestfileRule
{
meta:
description = "This is example file"
strings:
$text_string = "This is a test"
$text_binary = {54 68 69 73 20 69 73 20 61 20 74 65 73 74}
condition:
$text_string or $text_binary
}
EOF
検出テスト
yara test.yara test.txt
無事検出されるはず。
Eicarのテスト
eicarの入手
wget https://secure.eicar.org/eicar.com
Eicarのyaraファイルの作成
cat << 'EOF' > eicar.yara
rule eicar {
meta:
description = "This is example file"
strings:
$message = "EICAR-STANDARD-ANTIVIRUS-TEST-FILE!"
$leading_bytes = {58 35 4f 21 50 25 40 41}
condition:
$message or $leading_bytes
}
EOF
Eicarの検出テスト
yara eicar.yara eicar.com
無事検出されるはず。
ルールの作成はこちら
https://yara.readthedocs.io/en/stable/writingrules.html
Clamavでyaraファイルを使ってみる
apt install -y clamav clamav-daemon
systemctl stop clamav-freshclam
fresh clam
これはもちろんひっかかる
clamscan -l scan.log ~/yara/eicar.com
これは単なるテキストなのでひっかからない
clamscan -l scan.log ~/yara/test.txt
yaraファイルをclamavのデータベースに入れてみる
cp test.yara /var/lib/clamav/
chown clamav:clamav /var/lib/clamav/test.yara
今度は引っかかるようになる
clamscan -l scan.log ~/yara/test.txt
これでもひっかかる
clamscan -l scan.log --database=test.yara ~/yara/test.txt
Yaraルールに対応していると何が便利かというと、自分で作ったモジュールも引っかかるようになってくれる。
というわけで夜中のお勉強でした。。。