マルウェアの検出・解析と端末の対策
ウイルス対策ソフトの検出方式(パターンマッチング・ビヘイビア・チェックサム・コンペア・ハッシュ照合)の違いを説明でき、静的解析と動的解析、サンドボックス・ハニーポット・EDR の役割を選択肢から正しく選べるようになる。
検出方式の問題は、毎回ほぼ同じ4択(パターンマッチング/ビヘイビア/チェックサム/コンペア)の説明を入れ替えて出題される。区別のポイントさえ覚えれば確実に取れる。セキュリティ製品の資料を読むときにも役立つ。
このレッスンで稽古する(用語チェック・過去問)結論:検出方式は「何と比べるか」で見分ける
ウイルス検出方式は、何と何を比べて怪しいと判断するかで区別する。既知ウイルスの特徴と比べるのがパターンマッチング方式、プログラムの動きを見るのがビヘイビア法、正常なときの状態と比べるのがチェックサム法とコンペア法。試験ではこの説明文を入れ替えた4択が繰り返し出る。
| 方式 | 何と比べる/何を見るか | 選択肢の目印になる言葉 | 未知ウイルス |
|---|---|---|---|
| パターンマッチング方式 | 既知ウイルスのシグネチャ(特徴的なコード列)と比べる | 「既知ウイルスのシグネチャ」「定義ファイル」「パターン」 | 検出できない |
| ビヘイビア法 | 実際に動かして挙動(異常な書込み・通信量の急増など)を監視する | 「挙動を監視」「仮想環境下で実行」「異常現象」 | 検出できる場合がある |
| チェックサム法 | あらかじめ付けておいた感染していない保証情報(チェックサム)と、検査時に計算した値を比べる | 「保証する情報を付加」「チェックサムと照合」 | 改ざんとして検出できる |
| コンペア法(インテグリティチェック法の一種) | 安全な場所に保管した原本と比べる | 「原本と比較」「感染前と感染後のファイルを比較」 | 改ざんとして検出できる |
補足:チェックサム法とコンペア法をまとめて、インテグリティチェック法(改ざん検出系の方式)と呼ぶ。インテグリティは「完全性(改ざんされていないこと)」という意味。
パターンマッチング方式:最頻出(本試験2回・免除4回)
パターンマッチング方式は、ウイルスごとの特徴的なコード列(シグネチャ)を集めた定義ファイルと、検査するファイルを照合する方式。指名手配写真と通行人の顔を見比べる警察官のようなもの。手配写真が無い相手(未知ウイルス)は見つけられないので、定義ファイルを常に最新にしておく必要がある。
コード列の長さと誤検出(免除で計2回)も覚えておく。
| 照合に使うコード列 | 起きること |
|---|---|
| 短い | 正常なプログラムにも偶然同じ並びが現れやすく、誤検出(正常品をウイルスと判定すること)が増える |
| 長い | 誤検出は減るが、少しでも書き換えた亜種(既存ウイルスの改造版)とは完全には一致しにくくなる |
完全一致で照合する以上、コード列を長くしても亜種や未知ウイルスの検出が増えることはない。ここが正解とひっかけを分けるポイント。
ビヘイビア法:動きを見て判断する
ビヘイビア法(ビヘイビア=振る舞い)は、検査対象を実行し、その挙動を監視して怪しいかどうかを判断する方式。本番環境で動かすと危ないため、メモリ上の仮想環境で動かすことが多い。データ書込みの異常や通信量の急増など、ウイルスが起こす異常な変化を手がかりにする。
特徴の照合ではなく動きを見るので、未知ウイルスも検出できる可能性があるのが強み。ただし、動きから「怪しい」と分かってもウイルス名までは特定できない(2012年度の過去問で、ウイルス名の特定に「確実」とする選択肢は誤り)。
ハッシュ値照合:検体と完全に同じファイルしか検知できない
ハッシュ値は、ファイルの中身から計算する固定長の値(例:SHA-256)。指紋のようなもので、1ビット違うだけでまったく別の値になる。
そのため、既知の検体のハッシュ値と照合して検知できるのは、検体と完全に同一のファイルだけ。特徴的なコード列が同じだけのもの、サイズが同じだけのもの、亜種は検知できない(免除で計5回出題)。「亜種かどうかを特定するのに確実」という選択肢も誤り。
マルウェア解析:静的解析と動的解析
検出したマルウェアが何をするのかを調べることを解析という。実行するかどうかで2種類に分かれる。
| 解析手法 | 何をするか | 具体例 |
|---|---|---|
| 静的解析 | 実行せずに中身を調べる | 逆アセンブル・逆コンパイル(機械語を人間が読めるコードに戻す)してコードを読む、ハッシュ値を既知リストと照合する |
| 動的解析 | 実際に実行して挙動を観測する | サンドボックス上で動かし、動作や外部との通信を観測する |
逆アセンブルは、バイナリ(機械語)の新種ウイルスが何をするかを解明するのに有効。試験では「逆コンパイル」「ハッシュ照合」を動的解析と思わせるひっかけが出る。実行しているかだけで判断すればよい。
サンドボックス・ハニーポット・EDR
どれも「怪しいものを見張る」仕組みだが、何を・どこで見張るかが違う。
| 用語 | 一言でいうと | 混同させられる相手 |
|---|---|---|
| サンドボックス | 怪しいプログラムを隔離した領域で動かし、本番に影響させずに挙動を確かめる「砂場」 | ペネトレーションテスト(侵入できるかを試す)、サニタイジング(入力の無害化)、リバースプロキシ(代理応答) |
| ハニーポット | 攻撃者やマルウェアの挙動を観察するため、わざと脆弱性をもたせたおとりのシステム | DMZ(外部と内部の間の緩衝領域)、SIEM、ボットネット |
| EDR | PC・サーバ(エンドポイント)のプロセスや通信を監視し、不審な挙動を検知して管理者に通知し、対応を支援する | SIEM(複数機器のログを一元管理して相関分析する)、ハニーポット |
サンドボックスは「検査対象のファイルを、運用中のシステムに影響させずに確認する隔離環境」。「侵入が可能かを確認する」と書いてあればペネトレーションテストなので誤り。
端末でやるべき基本の対策
ウイルスが OS やアプリケーションの脆弱性を突いて感染するのを防ぐには、修正パッチ(不具合や脆弱性を直す更新プログラム)を適切に適用する。これが正解の定番(本試験1回・免除2回)。
もう1つの正解パターンは「ソフトウェアを導入するときにウイルス検査を行う」(導入が感染の入口になり得るため)。
誤りの選択肢は次のとおり。
- 定義ファイルを更新した日時以降に作られたファイルだけをスキャンする → それより前から潜んでいるウイルスを見逃す
- 使わない TCP ポートを閉じてメール添付のウイルスを防ぐ → 添付ファイルは通常のメール通信で届くので防げない
- 動的グローバル IP アドレスを付けてワームを防ぐ → 対策にならない
- 感染が分かったら直ちにディスクを初期化してから管理者に連絡する → 証拠が消える。まず連絡する
- デバッグ機能を開発後も残す → むしろ悪用される入口になる
要点(試験直前に読む)
- 検出方式は何と比べるかで見分ける。シグネチャ=パターンマッチング、挙動=ビヘイビア、保証情報=チェックサム、原本=コンペア。
- チェックサム法とコンペア法をまとめてインテグリティチェック法(改ざん検出系)と呼ぶ。
- パターンマッチングは照合するコード列が短いほど誤検出が増える。完全一致なので未知ウイルスや亜種は苦手。
- ハッシュ値照合で検知できるのは検体と完全に同一のファイルだけ。
- 実行しないのが静的解析(逆アセンブル・逆コンパイル)、実行して観測するのが動的解析(サンドボックス)。
- サンドボックス=隔離して動かす、ハニーポット=わざと弱くしたおとり、EDR=端末の挙動を監視。端末対策の定番の正解は修正パッチの適用。
ひっかけ
- 「コード列が長いほど亜種や未知ウイルスを検出できる」は誤り。完全一致の照合では長くしても検出は増えない。正解は「短いほど誤検出が増える」。
- 「ハッシュ値の照合で亜種を検知できる・亜種かどうかを特定できる」は誤り。ハッシュ値は1ビット違えば変わるので、同一ファイルしか検知できない。
- 逆コンパイルやハッシュ照合を動的解析だと思わせる選択肢がある。実行していれば動的、していなければ静的と判断する。
- サンドボックスの問題で「侵入が可能かどうかを確認する」とあればペネトレーションテストの説明なので誤り。SIEM・サニタイジング・リバースプロキシの説明も誤答として並ぶ。
- 端末対策では「定義ファイル更新日以降のファイルだけスキャン」「ポート遮断でメール添付を防ぐ」「感染したら直ちに初期化」が誤り。正解は修正パッチの適用と、ソフト導入時のウイルス検査。
用語(18)
既知ウイルスの特徴的なコード列(シグネチャ)と検査対象を照合してウイルスを検出する方式。
⚠ ビヘイビア法は実行して挙動を見る方式。「シグネチャ」「定義ファイル」とあればパターンマッチング方式。
ウイルスごとの特徴的なコード列で、パターンマッチング方式が照合に使う。定義ファイルにまとめて配布される。
⚠ デジタル署名(電子署名)も英語では signature だが、別物。
既知ウイルスのシグネチャを集めたファイルで、新種に対応するため常に最新に更新する。
正常なプログラムをウイルスと判定してしまうこと。照合するコード列が短いほど起きやすい。
⚠ 見逃し(ウイルスを正常と判定すること)とは逆。
既存のウイルスを一部書き換えて作った改造版のウイルス。
⚠ 未知ウイルスは特徴がまだ登録されていない新しいウイルス。どちらも完全一致の照合では検出しにくい。
検査対象を仮想環境などで実行し、異常な書込みや通信量の急増といった挙動を監視してウイルスを検出する方式。
⚠ パターンマッチング方式は既知の特徴と照合する方式。「挙動」「仮想環境下で実行」とあればビヘイビア法。
感染していないことを保証する情報(チェックサム)をあらかじめ付けておき、検査時に計算した値と比べて改ざんを検出する方式。
⚠ コンペア法は原本そのものと比べる方式。チェックサム法とコンペア法をまとめてインテグリティチェック法と呼ぶ。
安全な場所に保管した原本と検査対象を比べ、違っていれば感染と判定する方式で、インテグリティチェック法の一種。
⚠ チェックサム法は原本ではなく、付加しておいた保証情報と比べる。
ファイルが正常な状態から変わっていないかを確かめる改ざん検出系の方式の総称で、チェックサム法とコンペア法を含む。
⚠ チェックサム法の別名ではなく、上位の分類。
ファイルの中身から計算する固定長の値で、1ビット違うだけで大きく変わるため、照合で検知できるのは同一ファイルだけ。
⚠ 亜種や特徴が似たものの検知はパターンマッチング方式の役割。
マルウェアを実行せず、逆アセンブルや逆コンパイルしたコードを読むなどして機能を調べる手法。
⚠ 動的解析は実際に実行して観測する。逆コンパイルやハッシュ照合は静的解析。
マルウェアをサンドボックスなどで実際に実行し、動作や外部との通信を観測する手法。
⚠ 静的解析は実行しない。
機械語のプログラムを人間が読めるアセンブリ言語に戻すことで、新種ウイルスの動作の解明に有効な静的解析の手段。
⚠ 逆コンパイルは高水準言語のコードに戻すこと。どちらも静的解析。
不正な動作をする可能性があるプログラムを隔離した領域で動かし、本番環境に影響させずに挙動を確かめる仕組み。
⚠ ペネトレーションテストは侵入できるかを確認するもの。ハニーポットは攻撃者を呼び込むおとり。
攻撃者やマルウェアの挙動を観察するために、わざと脆弱性をもたせて用意するおとりのシステム。
⚠ DMZは外部と内部の間に置く緩衝領域で、おとりではない。
PCやサーバのプロセスや通信を監視し、不審な挙動を検知して管理者に通知し、対応を支援する仕組み。
⚠ SIEMは複数の機器のログを一元管理して相関分析するもの。EDRは端末そのものを監視する。
ファイアウォールやIDSなど多様な機器のログを一元管理し、相関分析して攻撃を検知する仕組み。
⚠ EDRは端末の挙動を監視する。サンドボックスの選択肢では誤答として出る。
OSやアプリケーションの不具合や脆弱性を直す更新プログラムで、脆弱性を突く感染を防ぐ基本の対策。
このレッスンの過去問
- ウイルス検出方式(パターンマッチング方式)平成26年度 秋期 基本情報技術者試験 午前 問42
- パターンマッチング方式のコード列長と誤検出の関係基本情報技術者試験 科目A免除 修了試験 20110724 実施分 問45
- ウイルス検出方式(ビヘイビア法)平成28年度 秋期 基本情報技術者試験 午前 問43
- ハッシュ値照合によるマルウェア検知(同一検体のみ)基本情報技術者試験 科目A免除 修了試験 20251214 実施分 問28
- マルウェア解析手法(静的・動的)令和元年度 秋期 基本情報技術者試験 午前 問36
- サンドボックスの定義基本情報技術者試験 科目A免除 修了試験 20260726 実施分 問32
- ハニーポットの定義平成31年度 春期 基本情報技術者試験 午前 問44
- クライアントPCのマルウェア対策(修正パッチ適用)平成25年度 秋期 基本情報技術者試験 午前 問42
- コンピュータウイルス対策の基本(導入時の検査)基本情報技術者試験 科目A免除 修了試験 201012 実施分 問44
- EDRの定義基本情報技術者試験 科目A免除 修了試験 20260614 実施分 問31