Category Archives: security

[メモ] clamav先生、悪意のあるソフトウェア削除ツールにトロイを見つける(誤検出)

Pocket

Windows xp用にと、大昔に取得していたMicorosoftの”悪意のあるソフトウェア削除ツール”をclamavでチェックしたらトロイを見つけおって真っ青になりました。
わたくし、トロイの入った削除ツールをいろんなxpマシンにインストールしたのかと。
しかしまあ、結論から言うと、誤検出でした。

ファイルやURLを登録すると各種アンチウイルスソフトウェアでのチェック結果を表示してくれるVirusTotalというサイトがあります。
ググったところ、このVirutsTotalでの結果がヒットしました。
結果、55のアンチウイルスソフト中、Clamavのみがトロイを検出。
おそらくClamavの誤検出と判断してよいと思います。
ただ、念のため該当ファイルは削除しました。

参考情報として記録を残します。
Clamavのエンジンは以下の通り。

誤検出(と思われる)したトロイは以下のもの

最新の Windows-KB890830-V5.15.exe (ただWindows7用ですが)では検出なし。

Sambaの汚物(ウイルス)は消毒だ。samba-virusfilter編

Pocket

 

Sambaの汚物(ウイルス)は消毒だ。哀愁のsamba-virusfilter編である。
virusfilterはsambaのvfs。
samba上ファイルを開くときにclamavでスキャンしてくれる。
そういうタイプのvfsはvscan-clamavが有名だが、FreeBSDのportsやpkgには見当たらない。
そこでvirusfilterで試してみた。
試してみた、というのは、ファイルの開け閉めの際にスキャンするのはどうもいただけなく感じるので、本運用には至らなかったから。
なお、clamav、sambaはインストール済みの前提。

samba-virusfilterのインストール

security/samba-virusfilterからインストールできる。
設定ファイルの説明は以下を参照。ただしclamdが動いている前提。
https://github.com/fumiyas/samba-virusfilter/blob/master/etc/smb.svf-clamav.conf.tmpl

設定例

ウイルスを見つけたき「何もしない」を選択した場合、感染ファイルはそのまま共有ディレクトリ上に残るし見える。
しかしユーザは当該ファイルを開くことはできない。
ウイルスを発見したとき、ログとしては/var/log/samba下のログに、以下のように記録される。

 

Sambaの汚物(ウイルス)は消毒だ。scannedonly編。

Pocket

sambaのvfs, scannedonly

scannedonlyとは、sambaのvfs。
その名前の通り、スキャン済みのもののみ開いたりダウンロードできるようになる。

scannedonlyのインストール

scannedonlyのvfsは、実はSambaに含まれる。
あれ?じゃあすぐ使えるの?と思ったのだが、それは間違いで、実際にスキャンを行うdaemonを別にインストールする必要がある。
その代わりと言っては何だが、clamdを立ち上げる必要はない。
security/scannedonlyからインストールできる。
以下はインストール例。sysctl.confに一行追加しとけよ、と言われるのでその通りにしておく。

 

scannedonlyの設定の流れ

scannedonlyの設定には、前章のとおりにsysctl.confを修正することに加え、①vfsとしてのscannedonlyの設定、②daemonとしてのscannedonlyの設定が必要

まず③のdaemonとしての設定から。

scannedonly daemonの設定

/etc/rc.confで行う。
設定例は以下のとおり。

おなじみの一行目はシステム起動時にdaemonも起動させる指定。
二行目でdaemonに与えるオプションを指定する。
上記の–scanrootは、スキャン対象のファイルが置かれるトップディレクトリを指定する。
daemonは、ここで指定されたディレクトリ外のファイルのウイルススキャンを要求されても無視する。

その他のオプションには;

scannedonlyのスレッドと「大きいファイル」について

scannedonlyはデフォルトでスキャン用に4スレッドを用意する。
複数のスキャン要求が来たとき、scannedonlyは「大きいファイル」を特定の1スレッドのみに割り当てる。残りのスレッドは「小さいファイル」をざくざくスキャンする。
こうすることでスキャンの待ち行列をスムーズに解消しようと試みる。
「大きいファイル」は前述の–bigで指定するサイズで決まる。
この値は、共有ファイルにどんなファイルがあるかを前提に変えたらよい。
デフォルトの10MBはちょっと小さいので、20MBにした。

scannedonly vfsの設定

smb.confに書く。
shareごとに設定できる。
以下が設定例。
最後の行だけ特殊。後述。

 

起動

scannedonly daemonを起動し、そのあとsambaを(再)起動。

このとき、/var/log/messagesには以下の表示があるはず。


実験:未スキャンのファイルはどう表示されるか。

さっそく共有フォルダにファイルを放り込んでみよう。
小さいファイルだと変わらないようにみえるが、ちょっと大きいファイルになると、コピーが終わってからスキャンが終わるまで、以下のような表示になるはず。
beingscanned

なお、hide_nonscanned_filesをFalseにした場合、コピーが終わった瞬間にファイルは表示される。
スキャンが終わってなくても表示される。
されるのだが、開こうとしたりコピーしようとすると、「アクセス権がない」旨のメッセージが表示されて蹴られる。
ユーザからしてみれば、ファイルが見えるのに開けないのはストレスでしかない。
hide_nonscanned_filesはTrueをお勧めする。
しかし。

Officeドキュメントを共有する場合

scannedonlyの仕組みで困るのは、Officeドキュメント。
というのも、Officeはファイルを頻繁に開け閉めするから。
その都度、スキャンが走り、終わるまでファイルを開けなくなる。
要するに、使い物にならん。
そこで下記の行を追加して、未スキャンファイルも開けるようにするほかない。
うーん…。

まあ、仕方ないよね。

バックヤードでは

さて。scannedonlyのバックヤードはどうなっているのだろうか。
実ディレクトリを見てみると、このようになっている。

ディレクトリに置かれたファイルと同じファイル名、ただしファイル名の先頭に「.scanned:」と付いたサイズ0バイトのファイルができる。
このファイルでスキャン済みかどうかを、scannedonlyは判断している。
ちなみに、オリジナルのファイルを消すと.scannedの方も消える。
.scannedだけが残るということはないからご安心めされよ。
もちろん、ファイルを更新した際には再スキャンが行われる。

大きなファイルを共有フォルダにコピーしはじめ、そのあとに小さなファイルを共有フォルダに置くと、小さいファイルはすぐに表示される。
複数スレッドで処理していることと、大きいファイルは1スレッドでしか処理しないことからこのような動作になる。

また、しばらくすると、/var/log/messagesにはログが増えているはず。


実験: virusが見つかったらどうなる?

試してみた。
testvirus.txtというファイルを突っ込んでみると、コピーが終わっても共有フォルダには表示がされない。
代わりに、同じファイル名、ただしファイル名先頭に「VIRUS_found_in_」、末尾に「.txt」と付いたサイズ0のファイルが作られ表示される。
virusfoundscann

このとき、実ディレクトリはこのようになっている。
つまりオリジナルのファイルは「.virus:」と頭に付けられて、ユーザからは見えなくなっている。

さらにこのとき、/var/log/messagesには以下のように。
1,2行目がウイルス発見時のもの、3行目はstatus report時のものである。

 

以上

Sambaの汚物(ウイルス)は消毒だ。あるいはsambaのvfsでウイルススキャン

Pocket

Samba上のファイルをウイルススキャンするには。

Samba上のファイルをウイルススキャンするならどんな方法があるだろうか。
一つは、cronで定期的にスキャンする方法である。
もう一つは、Sambaにスキャンを組み込む方法である。

クライアントにアンチウイルスソフトウェアがインストールされており、定義ファイルも更新されているなら、前者のcronがおすすめである。
理由にはあとで触れる。
クライアントを信用できないなら、後者のsamba側スキャンが候補に挙がる。

Sambaのウイルススキャンvfs

Sambaにはvfsスタッカブルモジュールという仕組みがある。
Sambaに追加機能をもたらすものだが、ウイルススキャン機能を追加するvfsもいくつかある。
http://www.samba.gr.jp/project/translation/Samba3-HOWTO/VFS.html

これらのvfsには、大きく分けて以下二つのアプローチがある。

  1. ファイルをオープンするときにスキャン
  2. スキャン済みのファイルのみオープンを許可

1には、vscan-clamavやvirusfilterとがある。
2には、scannedonlyがある。それ以外には知らない。

以下、二つのアプローチの特徴を、たいへん大まかに記す。

アプローチ1: ファイルオープン時スキャン法

Samba上ファイルを開くときに外部のウイルススキャナへファイルを渡し、スキャンするというもの。
まあ普通に考えるとそうなるわな、という方法。
ただ短所はある。
ファイルに変更があろうがなかろうが、開くたびにスキャンする。
ユーザはスキャンが終わるまで待たされる。
仮にファイルがとてつもなく巨大だと、待たされる時間も長くなる(スキャン対象とするファイルサイズ上限は決められる)。
同時接続ユーザが増えても問題になるだろう。

アプローチ2: あらかじめスキャン法

②、すなわちscannedonlyは、ファイルが共有ディレクトリ上に置かれたとき、あるいは更新があったときにスキャンする。
スキャン済みのファイルであれば、ファイルオープン時に再スキャンは行われない。
ファイルオープン時にオーバーヘッドがないこと、ファイルのサイズが大きくてもまったく影響のないこと、ユーザ数の増加による負荷への影響が少ないことは長所である。

もちろん、こちらにも短所がある。
当該ファイルがスキャン済みであることを示す「しるし」が必要である。
scannedonlyは、この「しるし」として、.scannedというサイズ0バイトのファイルを作る。
つまり、共有ディレクトリに置かれるファイルの数が倍になる。
サイズが0バイトであるものの、iノードの残量には懸念の生じることがあるかも。
当然、①にはこの懸念はない。

やっぱりcronで定期スキャンだよね

ご覧のとおり、1,2ともに短所がある。
クライアント側のウイルス対策が保証できるなら、cronで定期的にスキャンしたほうがよいだろう。
しかしクライントが信用ならないのなら、アプローチの1,2いずれかを選んで、Sambaでウイルス対策を講じるべき。
ということで、アプローチ1,2のインストール、設定方法については記事を改めて示す。

[メモ] テスト用のウイルスはEICARで

Pocket

 

アンチウイルスソフトのテストには、実際にウイルスを食わせるのが一番である。ただまあウイルスなんて物騒なものは、そうそう手には入らない。
どうしたもんかと思ってんだが、やっぱりあるとこにはあるんですなあ。

The Anti-Malware Test file
http://www.eicar.org/86-0-Intended-use.html

上記ページの下部にある文字列をテキストファイルに貼り付ければテスト用ウイルスの出来上がり。手軽。
アンチウイルスソフトにはウイルスとして判定されるが実害なし。