« TimeCapsule への有線 LAN 経由バックアップが復活 | Main | Mac のセキュリティ上のリスクを軽減する簡単な 15 の設定事項 »
ClamAV は 0.91.2 から PUA の検出をサポートし始めました。PUA というのは望ましくないアプリケーションのことです。0.94 以降のこの 機能の紹介します。
ClamAV 0.91.2 からサポートされた PUA 検出機能は望ましくないアプリケーションを今までのマルウェアやフィッシングメールのように検出するものです。PUA というのは望ましくないアプリケーションのことです。既知の PUA は、PUA であることと PUA としてカテゴリと共にそのシグネチャー(該当するかどうかを識別するためのもの)がウィルスデータベースに登録されていて、ClamAV はこれに基づいて検査対象が PUA であるかどうかを判断します。
望ましくないアプリケーションという言い方の通り、そのアプリケーションは直ちに悪意があるアプリケーションとは言えません。しかしマルウェアなどに悪用されることが多く、危険要因として列挙することができるものです。
例えばキーロガー。これはシステムの操作を記録して、それを再現するための手順を構築するのに役に立つ一方で、パスワードなどを盗み出すのにも悪用可能です。例えば IRC クライアント。IRC クライアントはチャットするためのアプリケーションで、即時性があるコミュニケーションに役に立つ一方で、マルウェアがその伝搬にしばしば利用します。Mac OS X の iChat でもそういうことがありましたよね。一般ユーザにとってキーロガーはほとんど悪意があり、IRC クライアントはそうではないケースが多いのではないかと思います。しかしそれはユーザの利用形態に依存することです。IRC クライアントを活用する意思が全く無いのにそれがインストールされているだけでなくオンラインになっているとしたら、そこに悪意がある仕掛けがあると疑ってみるのは合理的な用心でしょう。
このため、ClamAV 0.94 以降の PUA 検出機能はその機能自体の有効/無効を設定できるだけでなく、PUA を幾つかのカテゴリに分類して、そのカテゴリ毎に検出機能を有効/無効にすることができます。デフォルトでは PUA 検出機能自体が無効になっています。
ClamAV には、そのパッケージに元から含まれているものを利用するとしたらですが、clamscan コマンドによるスキャンと、clamdscan などを通した clamd によるスキャンの二種類のスキャン方法があります。前者はコマンドラインのオプションで指定して PUA 検出機能を利用し、後者は clamd の設定ファイル clamd.conf で有効にして PUA 検出機能を利用します。それぞれ具体的な方法が異なるので分けて説明します。
clamscan で PUA 検出機能を利用するには、clamscan を実行するときのオプションでそれを指定します。該当するオプションには次のものがあります。
--detect-pua
PUA 検出機能を有効にします。--detect-pua=yes と指定することもできます。
--detect-pua=no で無効にできますが、デフォルトも無効なので敢えて無効であることを明示したいときにこう書くということでしょうね。
--exclude-pua=CATEGORY
PUA の一つのカテゴリに対して PUA 検出機能を無効にします。CATEGORY に当てはめることができるキーワードは後述します。このオプションを CATEGORY の部分を変えて幾つも指定することで複数のカテゴリに対して PUA 検出機能を無効にできます。
--include-pua=CATEGORY
CATEGORY で指定された PUA のカテゴリに対してのみ PUA 検出機能を有効にして、他のカテゴリに対しては無効にします。CATEGORY に当てはめることができるキーワードは後述します。このオプションを CATEGORY の部分を変えて幾つも指定することで複数のカテゴリを指定できます。
例えば自分のホームディレクトリに対して PUA 検出機能を有効にしてスキャンしたい場合は次のようにします。
clamscan --recursive --detect-pua ~
自分のホームディレクトリに対してランタイムパッカーとスクリプトというカテゴリ以外について PUA 検出機能を有効にしてスキャンしたい場合は次のようにします。
clamscan --recursive --detect-pua --exclude-pua=Packed --exclude-pua=Script ~
自分のホームディレクトリに対してランタイムパッカーとスクリプトというカテゴリにだけ PUA 検出機能を有効にしてスキャンしたい場合は次のようにします。
clamscan --recursive --detect-pua --include-pua=Packed --include-pua=Script ~
clamd で PUA 検出機能を利用するには、clamd の設定ファイル clamd.conf で指定します。該当する設定には次があります。
DetectPUA yes
PUA 検出機能を有効にします。DetectPUA true とか DetectPUA 1 と指定することもできます。
DetectPUA no、DetectPUA false あるいは DetectPUA 0 で無効にできますが、デフォルトも無効なので敢えて無効であることを明示したいときにこう書くということでしょうね。
ExcludePUA CATEGORY
PUA の一つのカテゴリに対して PUA 検出機能を無効にします。CATEGORY に当てはめることができるキーワードは後述します。この設定を CATEGORY の部分を変えて幾つも指定することで複数のカテゴリに対して PUA 検出機能を無効にできます。
IncludePUA CATEGORY
CATEGORY で指定された PUA のカテゴリに対してのみ PUA 検出機能を有効にして、他のカテゴリに対しては無効にします。CATEGORY に当てはめることができるキーワードは後述します。この設定を CATEGORY の部分を変えて幾つも指定することで複数のカテゴリを指定できます。
例えば PUA 検出機能を有効にしてスキャンしたい場合は次のようにします。
DetectPUA yes
ランタイムパッカーとスクリプトというカテゴリ以外について PUA 検出機能を有効にしてスキャンしたい場合は次のようにします。
DetectPUA yes
ExcludePUA Packed
ExcludePUA Script
ランタイムパッカーとスクリプトというカテゴリにだけ PUA 検出機能を有効にしてスキャンしたい場合は次のようにします。
DetectPUA yes
IncludePUA Packed
IncludePUA Script
PUA のカテゴリの指定に使用するキーワードは「PUA FAQ - Clam AntiVirus」に記載されています。今は英語でしかこのページが書かれていないので参考までに和訳してみました。
2009年4月23日に Clam AntiVirus から和訳PUA – Possibly Unwanted Applications
ClamAV はいわゆる PUA の検出をサポートしています。現在、次のカテゴリを使用することができます:
- Packed
これは、幾つかの種類のランタイムパッカーを使用しているファイルの検出に関するものです。ランタイムパッカーは外部の解凍ツールを使わなくても実行ファイルのサイズを戻すことができます。これが悪意あるものだと一般的には言えませんが、アンチウィルス製品による検出から逃れるために既に知られているマルウェアがランタイムパッカーを悪意あるファイルに広く使用しています。
- PwTool
パスワードツールは、様々なアプリケーション(例えばメールクライアントやシステムパスワード)のためにパスワードの復元や暗号化をすることができる全てのアプリケーションを指します。パスワードを忘れてしまったときにはこのようなツールはとても役に立ちますが、パスワードを盗み出すのにも使用できます。
- NetTool
ネットワークトラフィックあるいはネットワークをスニフ、フィルター、加工あるいはスキャンするのに使用することができるアプリケーション。例えば networkscanner は管理者にとってきわめて役に立つツールですが、一般ユーザがそれをいじくり回すのを目にしたくないかもしれません。同様のことが netcat やそれに類似したツールにも言えます。
- P2P
ピアツーピアクライアントは大量の望まれないトラフィックを発生させることができ、ときには著作権が保護されたコンテンツ(楽曲や映画)をダウンロードすることで著作権を侵害することがあります。このためあまり望ましくないと考えています。
- IRC
IRC クライアントは生産性を悪化させたり、依存症にさせたり … 悪意があるスクリプトの強力なプラットフォームです。(例として mIRC があります)
- RAT
Remote Access Trojan は遠隔的にシステムにアクセスするのに使用されますが、VNC や RAdmin などのようにシステム管理にも使用することができます。
- Tool
プロセスを強制終了させたり探したりするような一般的なシステムツールです。
- Spy
キーロガー、スパイツール。
- Server
DistributedNet のようなサーバベースのバッドウェア。
- Script
Javascript、ActiveX あるいはそれに類似したもので書かれた既知の「問題がある」スクリプト。
例えば RAT に分類される VNC は、そのコンピュータを遠隔操作して利用する場合に(他に選択肢が無ければ)必須のアプリケーションです。Mac OS X の中にも「デスクトップ共有」という名前で、VNC サーバもクライアントも入っているほどです。IRC に分類されるものもそこで IRC チャットを行う人が利用するコンピュータでは必須のアプリケーションです。IRC ではありませんがチャットクライアントなら Mac OS X にも iChat がバンドルされていますよね。しかし、多くの場合操作手順を記録する目的があってもキーロガーは必要ありません。単純にターミナルの内容を保存すればよいからです。
このように幾つかのカテゴリの PUA はそのシステムに無ければならず、幾つかのカテゴリの PUA はそのシステムにあってもよくて、更に幾つかのカテゴリの PUA はそのシステムにあってはならないということになります。まずは PUA のカテゴリ毎に、無ければならないもの、あってもよいもの、あってはならないものを考えてみることです。
それが面倒なときは時間がかかりますが clamscan に --infected --detect-pua --recursive オプションを付けて --remove オプションや --move=DIRECTORY オプションを付けずにシステムのアプリケーションやコマンドがあるディレクトリをスキャンしてみたらどうでしょう。ClamXav 用に ClamAV がインストールしてある Mac OS X でそうするには例えば次のようにします。
/usr/local/clamXav/bin/clamscan --infected --detect-pua --recursive /Applications /usr /System /Library /usr/local
何も検出されなければ、後で管理者であるあなたが敢えてインストールしなければ PUA がシステムのアプリケーションに追加されないので、勝手にインストールされないように PUA 検出機能の有効化だけをして、特に除外カテゴリは設定しないということにしておけばよいでしょう。逆に何かが検出されて、それらの全てが必要だったりあってもよいアプリケーションならば、それらが所属するカテゴリを除外して PUA 検出機能を有効にするか、そのカテゴリが多いならば逆にそれらが所属しないカテゴリだけに PUA 検出機能を有効にすればよいでしょう。
しかしながらこれはシステムワイドな領域について言えることです。各ユーザの領域にデータや設定ファイルはともかく、これらのアプリケーションがあること自体がおかしいです。特に理由がなければユーザ領域を検査するときは PUA 検出機能を有効にしておくのがよいでしょう。メールのフィルタとして ClamAV を利用しているときも同様です。メールは各ユーザが受け取るものですからこれもユーザ領域に属します。
このようにシステム領域とユーザ領域とで PUA 検出の方針が異なってきます。clamscan を利用している場合はその検査対象によってオプションを変えれば済みますが、clamd を利用しているときはそうはいきません。異なる方針で clamd を使用したい場合は異なる clamd.conf で複数の clamd を使用することになります。
複数の clamd を使用するときには、もし設定しているなら重ならないようにすべき設定が幾つかあります。ざっと見て次のものは重ならないようにしておく必要があります。