ClamAV で独自シグネチャ作成

6.3.2. 手動でのシグネチャの作成

手作業でシグネチャを作成するにはウイルス固有の箇所を好きなツールを使ってhexdumpして「ウイルス名=hexdumpした出力」の形式にまとめるだけです。

http://clamav-jp.sourceforge.jp/jdoc/clamav.html#c6.3.2

ってあったので、hexdump コマンド (とか od -x) の出力結果を使ってシグネチャを作ってみたけど検出されない。

変な例だが GIF ファイルを検出しようと思って、

$ echo -n "GIF89a" | hexdump
0000000 4947 3846 6139
0000006

となるので、db を以下のように作っても検出できない。

Test.GIF=494738466139

エンディアンの問題だった。ビッグエンディアンにしないとだめ。

$ echo -n "GIF89a" | perl -p -e 's/(.)/sprintf "%02x", ord $1/eg'
474946383961
Test.GIF=474946383961

このように gif.db を作れば

$ clamscan -d gif.db test.gif
test.gif: Test.GIF FOUND

検出できた。

ClamAV 附属の sigtool コマンドで hexdump すればよかったのか。

echo -n "GIF89a" | sigtool --hex-dump