超初級ウイルスすり抜け講座
最早メーカー製マシンにもアンチウイルスがプリインストールされている時代。コンピューターウイルス/トロイを相手に仕込もうと思うならば、「如何にしてアンチウイルスを潜るのか」ということを考えなくてはいけない。そのためにはどうすれば良いかというと、二つの方針がある。
- アンチウイルスのスキャンを行わせなければ良い
- アンチウイルスのスキャンが行われても検出されないようにすれば良い
ここでは二番目の方針について記述します。これは防衛側から見れば非常に危険な話で、つまり単純に言えば「落としたファイルを欠かさずスキャンしていても危険性は完全には消えていない」ということです。
- パターン一致
ウイルスのパターンファイルとスキャン対象ファイルを比較し、「定義されたパターンが登場するか」を調べる。だからこそパターンファイルはマメに更新しなくては意味がない、という話ですね。 - プログラム解析
「ヒューリスティックスキャン」とかいう言葉で説明されることも多いスキャン方法なんですが、プログラムの動作を解析し「危険な動作を行うプログラムか」を判断する。「パターン一致」と異なり、原理的には未知のウイルスにも対応可能です。
故に、自作したトロイなら検出されることは少ない(パターンに一致することはあり得ないし解析は非常に穴が多い)・・・というのは少し当サイトのストライクゾーンから外れる(多分最近はプログラム組める人自体少ないと思う)のでここでは別の話をします。
さて、単純化して言えば、「プログラム(ウイルス)のパターン」というのは、exeファイルをバイナリエディタで開いたアレです。

つまり、「パターン一致」を潜るためには、ウイルスのプログラムパターンを書き換えてしまえば良い。では如何にして書き換えるのか。最も分かりやすいと思われる例を二つ挙げます。
- ウイルスファイルを圧縮書庫に入れる
- ウイルスファイルをCDイメージに入れる
これだけで「パターン」は書き換えられてしまう。ではアンチウイルスソフトはどうすれば良いのか?というと、圧縮書庫やCDイメージを仮想的に展開して内部のファイルに対するスキャンを行えば良い。例えば「a.zip」というZIPファイル内に「a.exe」と「b.exe」が入っていて、「b.exe」がウイルスに感染している場合。
- アンチウイルスはa.zipを解析し、その中に「a.exe」「b.exe」が入っていることを知る
- アンチウイルスはa.exeとb.exeを取り出し、それぞれに対してスキャンを行う
- アンチウイルスはb.exeがウイルスに感染していることを突き止める
このような動作が行われれば「圧縮書庫内のウイルスを発見する」ことが出来る。つまり何が言いたいかと言えば
アンチウイルスはa.zipを解析し
アンチウイルスソフトが対応している形式でなければ、圧縮書庫内のウイルスは発見されない(「圧縮書庫」でなく「CDイメージ」でも同じ)。
「では相手が使用しているアンチウイルスはどのような形式に対応しているのか」ということが分かれば「攻撃のための足がかり」になりますし、「自分が使用しているアンチウイルスは〜」ということが分かれば自己防衛のために役に立つ。ウイルスファイルを何処かから手に入れて(最近だとWinnyあたりでデータベースを調べ「感染している注意!」というファイルを落とすのが一番楽でしょうか)実験してみましょう。
ウイルス(トロイサーバー)を圧縮書庫やCDイメージの中に入れて、その圧縮書庫やCDイメージファイルに対してアンチウイルスのスキャンを行うのです。以下がNortonAntiVirusのスキャン結果。
| ファイル形式 | スキャン結果 |
| 無圧縮状態のウイルスファイル | 検出できる(当たり前ですが) |
| ウイルスをZIPファイルに入れる | 検出できる |
| ウイルスをLZHファイルに入れる | 検出できる |
| ウイルスをRAR分割圧縮する | 検出できない |
| ウイルスをISOイメージに入れる | 検出できない |
ちなみに何故わざわざLZHを持ち出したかというと、LZHは日本独自の圧縮方式なので海外製のアンチウイルスソフトだと対応していない場合が多いからです(ノートンは対応してましたが)。
ノートン以外を使っている人は自分で実験してみて欲しいですし、またノートンを使っている人でも他の形式に関して自分で実験してみて欲しいのですが、これが現状です。市販ソフトであっても対応形式はこの程度しかない。例えば、CDイメージの中にウイルスファイルを仕込み、自動起動によってそのファイルが実行されるようにしておけば、「CDイメージをスキャンしてもウイルスは発見されず、マウントしてからCD内をスキャンすれば発見できるが自動起動をオンにしているとスキャンする間もなく感染する」という事態が発生する訳です。
落としたファイルを全てスキャンしていても、ウイルスの「すり抜け」は発生しうる。故に我々は「どうすれば」すり抜けが発生しなくなるのかを知らなければいけない。例えばノートンユーザーであれば「Winnyで落としたイメージファイルは必ず解凍し自動起動オフでマウントし内部をスキャンする」という癖を付けましょう。「CDイメージには対応しているがイメージファイルを圧縮した状態の書庫には対応していない」というアンチウイルスを使っている人であれば「Winnyで落としたイメージファイルは必ず解凍しスキャンする」という癖を付けましょう。
アンチウイルスソフトを選ぶ時に「対応ウイルスの数」という指標ばかりが注目されますが、ここまで書いてきたような「すり抜け」が存在する以上、「対応ファイル形式の数」というのも現実レベルでは重要な指標でしょう。・・・という話(と対応形式が多いアンチウイルスソフトの紹介)を明後日発売のネットランナー9月号で書いているので詳細は省略しますが、「アンチウイルスのパターンを更新し落としたファイルを(落とした状態のまま)スキャンしていれば安心」という「常識」には大きな穴があり、その穴は攻撃側にとっても防衛側にとっても非常に興味深い。という話でした。

TrackBack
この記事へのトラックバック