マルウェア
マルウェアの検出には、マルウェア検出回避技術に対抗するために様々な技術を用いている。下記に例を示す。ただし、いかなる方法・手段・技術を用いても未知のマルウェアを100%検出・発見できるわけではない。また、いかなる方法・手段・技術を用いても未知のマルウェアからパソコンを100%保護してくれるわけではない。
パターンマッチング検出技術:セキュリティソフトなどがマルウェアを発見するための、最も一般的な方式である。セキュリティソフトは、パターンファイルと呼ばれるマルウェアの特徴(パターン)を記録したリストを持っている。そして、そのリストとパソコン内のファイルを比較して、一致すればマルウェアと判定して除去する。これが、パターンマッチングと呼ばれる方式である。パターンマッチングは、すでに存在が知られているマルウェアは間違いなく検出できる可能性が高い。ただし、そのためには常にパターンファイルを最新の状態にしておく必要がある。新しいマルウェアが登場したとき、その存在が知られて、パターンファイルに新しいマルウェアの情報が登録されるまでは効果がない。亜種・変種といって、既知のマルウェアを僅かに改変したマルウェアにも対応できない。
ヒューリスティック検出技術:ヒューリスティック検出技術とは、セキュリティソフトなどがマルウェアを探索する際に、パターンマッチングではなくマルウェアに特徴的な挙動の有無を調べる手法である。
詳細は「ワーム (コンピュータ)」を参照
ウイルス同様自己増殖するが、ホストプログラムを持たず、単体で存在するプログラムの事を指す。
ヒューリスティック検知では、実行ファイルの挙動などを解析し、ライブラリファイルの書き換えなど、一般的なプログラムではあまり見られないような特異な挙動を探し出し、感染したマルウェアによるものと類推する。未知のマルウェアや亜種などに対して、ある程度の対応が可能である。ただし、この方法では未知のマルウェアを100%発見できるわけではなく、また、マルウェアではないものをマルウェアと誤認する場合もある。
サンドボックス検出技術:パソコンの内部に「サンドボックス」と呼ぶ仮想化環境を用意して、そこで不審なプログラムを動作させてみてマルウェアかどうかを判定する手法である。仮想化環境でなら不審なプログラムを動作させても、実環境に被害が及ぶことはない。
ビヘイビアブロッキング(振る舞い検知)技術:サンドボックス検出技術のサンドボックス上の実環境におけるプログラムの挙動を見てウイルスを検出するものを「振る舞い検知」あるいは「ビヘイビアブロッキング」と呼ぶ。
ジェネリック検出技術:短期間に大量発生するウイルスの亜種に迅速に対応する検出技術として採用されているのがジェネリック検出である。ジェネリック検出では、特定のマルウェアの既知の亜種から共通点を抽出し、既知の亜種だけでなく亜種と想定される複数のマルウェアを検出する。また、パターンマッチング方式では検出できない新しい亜種であっても、共通点が一致していれば発生した時点で検出できる。
パッカー検出技術:使われたパッカー・クリプターなどのコード改変ツールの「種類」から、怪しいかどうかを判定してマルウェアの疑いのあるファイルを検出する手法である。
不正行為を実行するために、攻撃者はマルウェアを作成するが、その不正な試みが検出されてしまっては、その目的を達成することはできない。セキュリティベンダがセキュリティ技術を進化させると、それに合わせて攻撃者も技術を進化させる。セキュリティベンダと攻撃者の間では、いたちごっこが繰り返されている。回避技術は、検出、分析、把握を回避するためにマルウェアが使用する手段の総称である。
セキュリティ技術に対する回避技術は次の3つに分類できる。
セキュリティ対策の回避: マルウェア対策エンジン、ファイアウォール、アプリケーション隔離などの保護ツールによる検出を回避するために使用される。
サンドボックスの回避: 自動分析を検出し、マルウェアの挙動を報告するエンジンを回避するために使用される。仮想環境に関連するレジストリキー、ファイル、プロセスを検出することで、サンドボックス内で実行されているかどうかをマルウェアに通知する。
分析の回避: マルウェア分析を検出して欺くために使用される。たとえば、Process ExplorerやWiresharkなどの監視ツールを検出するだけでなく、リバースエンジニアリングを回避するために圧縮や難読化などを行う。
高度なマルウェアの中には、このような技術を組み合わせて利用しているものもある。
たとえば、RunPE(メモリー内で自身のプロセスをもう1つ実行する)などの技術を使用して、マルウェア対策ソフトウェアやサンドボックス、分析を回避している。また、仮想環境に関連する特定のレジストリキーを検出し、サンドボックスでの自動分析や仮想マシン上での動的分析を回避するマルウェアもある。
ウイルスをはじめとしたマルウェアはセキュリティソフトに発見されないよう、下記のようなツールや手法を用いていることがほとんどである。また、サイバーセキュリティの回避技術で、よく使われる用語がある。ここで、攻撃者が使用するツール、手法や用語をいくつか紹介する。
Crypter(クリプター): マルウェアの実行時に、マルウェア対策エンジンや静的分析による検出を回避するため、マルウェアの暗号化と復号を行う。クリプターは、攻撃対象に合わせて作成されることが多く、闇市場で購入することもできる。クリプターをカスタマイズすることで、復号や逆コンパイルがさらに困難になる。既知の高度なクリプターとしては、Aegisクリプター・Armadillo・RDG Tejon などがある。
Packer(パッカー): クリプターと似ているが、マルウェアファイルの暗号化ではなく圧縮を行う。UPXが代表的なパッカーである。
Binder(バインダー): 複数のマルウェアファイルを1つに結合する。マルウェアの実行ファイルの拡張子を変更せず、JPGファイルに結合できる。