YARAと呼ばれるオープンソースのマルウェアを検知・解析・分類するための仕組みが、ClamAVでも使用できることを知り試してみました。
参考)
https://security.sios.jp/vulnerability/antivirus-security-20151215/
https://qiita.com/suzuki-kei/items/5a2f2dff9130c878c586
環境)
まず今回使用するルールファイルを作成しました。
特定の文字列をもつテキストファイル判定することを目的としています。
sample_txt.yara
1 2 3 4 5 6 |
rule sample_txt { strings: $my_text="mal" condition: $my_text } |
特定のバイト列を持つバイナリファイル判定することを目的としています。
sample_bin.yara
1 2 3 4 5 6 |
rule sample_bin { strings: $my_hex={ 03 04 } condition: $my_hex } |
sample_bin2.yara
1 2 3 4 5 6 |
rule sample_bin { strings: $my_hex={ 04 03 } condition: $my_hex } |
sample_bin3.yara
1 2 3 4 5 6 |
rule sample_bin { strings: $my_hex={ 01 02 [2-4] 05 06 } condition: $my_hex } |
sample_bin4.yara
1 2 3 4 5 6 |
rule sample_bin { strings: $my_hex={ 01 02 [2-4] 05 07 } condition: $my_hex } |
バイナリは、エンディアンによる判定やバイトスキップの確認をできるようにしています。
次にテストに使うファイルです。
n@n0c:~/yana-test$ cat sample.txt
This file is malware.
n@n0c:~/yana-test$ cat sample2.txt
This file is text.
n@n0c:~/yana-test$ od -x sample.bin
0000000 0201 0403 0605 0807
0000010
テキストファイルの検知したときと、しなかったときの実行結果
(UNOFFICIAL FOUND:検知した場合)
n@n0c:~/yana-test$ clamscan –database=sample_txt.yara sample.txt
/home/n/yana-test/sample.txt: YARA.sample_txt.UNOFFICIAL FOUND———– SCAN SUMMARY ———–
Known viruses: 1
Engine version: 0.103.9
Scanned directories: 0
Scanned files: 1
Infected files: 1
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 0.006 sec (0 m 0 s)
Start Date: 2023:09:29 23:57:17
End Date: 2023:09:29 23:57:17
n@n0c:~/yana-test$ clamscan –database=sample_txt.yara sample2.txt
/home/n/yana-test/sample2.txt: OK———– SCAN SUMMARY ———–
Known viruses: 1
Engine version: 0.103.9
Scanned directories: 0
Scanned files: 1
Infected files: 0
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 0.006 sec (0 m 0 s)
Start Date: 2023:09:29 23:57:47
End Date: 2023:09:29 23:57:47
バイナリファイルは一つで、複数複数のルールでテスト
実行結果
n@n0c:~/yana-test$ clamscan –database=sample_bin.yara sample.bin
/home/n/yana-test/sample.bin: YARA.sample_bin.UNOFFICIAL FOUND———– SCAN SUMMARY ———–
Known viruses: 1
Engine version: 0.103.9
Scanned directories: 0
Scanned files: 1
Infected files: 1
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 0.005 sec (0 m 0 s)
Start Date: 2023:09:30 00:01:33
End Date: 2023:09:30 00:01:33
n@n0c:~/yana-test$ clamscan –database=sample_bin2.yara sample.bin
/home/n/yana-test/sample.bin: OK———– SCAN SUMMARY ———–
Known viruses: 1
Engine version: 0.103.9
Scanned directories: 0
Scanned files: 1
Infected files: 0
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 0.007 sec (0 m 0 s)
Start Date: 2023:09:30 00:01:45
End Date: 2023:09:30 00:01:45
n@n0c:~/yana-test$ clamscan –database=sample_bin3.yara sample.bin
/home/n/yana-test/sample.bin: YARA.sample_bin.UNOFFICIAL FOUND———– SCAN SUMMARY ———–
Known viruses: 1
Engine version: 0.103.9
Scanned directories: 0
Scanned files: 1
Infected files: 1
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 0.004 sec (0 m 0 s)
Start Date: 2023:09:30 00:01:54
End Date: 2023:09:30 00:01:54
n@n0c:~/yana-test$ clamscan –database=sample_bin4.yara sample.bin
/home/n/yana-test/sample.bin: OK———– SCAN SUMMARY ———–
Known viruses: 1
Engine version: 0.103.9
Scanned directories: 0
Scanned files: 1
Infected files: 0
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 0.004 sec (0 m 0 s)
Start Date: 2023:09:30 00:02:03
End Date: 2023:09:30 00:02:03
メモでした。