基本情報技術者 2016年 秋期 午前(科目A) 問43
問題文
ウイルス検出におけるビヘイビア法に分類されるものはどれか。
選択肢
ア:あらかじめ検査対象に付加された、ウイルスに感染していないことを保証する情報と、検査対象から算出した情報とを比較する。
イ:検査対象と安全な場所に保管してあるその原本とを比較する。
ウ:検査対象のハッシュ値と既知のウイルスファイルのハッシュ値とを比較する。
エ:検査対象をメモリ上の仮想環境下で実行して、その挙動を監視する。(正解)
ウイルス検出におけるビヘイビア法に分類されるものはどれか。【午前2 解説】
要点まとめ
- 結論→仮想環境で検査対象を実行して実行時の挙動を監視する手法(サンドボックス実行)がビヘイビア法です。
- 根拠→ビヘイビア法はファイルの静的情報ではなく、実行時の通信・プロセス操作・ファイル変更などの振る舞いを評価して検出します。
- 差がつくポイント→ハッシュや既知シグネチャは既知検体に有効だが、難読化や変種には弱く、ビヘイビア法は未知変種検出に有利だが回避や誤検出に注意が必要です。
正解の理由
正解: エ
選択肢エは「検査対象をメモリ上の仮想環境下で実行して、その挙動を監視する」とあり、これはまさにビヘイビア(振る舞い)に基づく検出手法、すなわちサンドボックスや動的解析で行う方法です。ビヘイビア法は静的な特徴(ファイルサイズ、ヘッダ、ハッシュ、シグネチャ等)ではなく、実行時の挙動(未知通信先への接続、プロセス注入、自己複製など)を元に判定します。従ってエが正解です。
選択肢エは「検査対象をメモリ上の仮想環境下で実行して、その挙動を監視する」とあり、これはまさにビヘイビア(振る舞い)に基づく検出手法、すなわちサンドボックスや動的解析で行う方法です。ビヘイビア法は静的な特徴(ファイルサイズ、ヘッダ、ハッシュ、シグネチャ等)ではなく、実行時の挙動(未知通信先への接続、プロセス注入、自己複製など)を元に判定します。従ってエが正解です。
よくある誤解
- 「ハッシュ比較もビヘイビア検出だ」と誤解する受験者が多いが、ハッシュは静的シグネチャ検出であり振る舞い解析ではありません。
- 「仮想環境で動かせば必ず検出できる」と思い込むのは誤りで、アンチサンドボックス技術や時間差発動など回避手法が存在します。
- 「原本との比較はビヘイビア法だ」と混同されるが、原本比較は整合性チェックであり静的検査に分類されます。
解法ステップ
- 問題文のキーワードを探す:「仮想環境」「実行」「挙動」「監視」→ 動的/振る舞いに関する語。
- ビヘイビア法の定義を想起:実行時の動作を評価する手法であることを確認。
- 各選択肢を静的/動的に分類:静的(ハッシュ、原本比較、付加情報比較)→ ビヘイビアではない。
- 最も動的解析を示す選択肢を選ぶ(=エ)。
選択肢別の誤答解説
- ア: 「あらかじめ検査対象に付加された、ウイルスに感染していないことを保証する情報と、検査対象から算出した情報とを比較する。」
→ 付加されたメタデータやデジタル署名、ホワイトリスト的な検証に近く、静的なメタ情報比較です。ビヘイビア法ではありません。 - イ: 「検査対象と安全な場所に保管してあるその原本とを比較する。」
→ 既知の安全な原本と差分やハッシュを比較する整合性チェック(静的検査/トリップワイヤ的手法)です。 - ウ: 「検査対象のハッシュ値と既知のウイルスファイルのハッシュ値とを比較する。」
→ 典型的なシグネチャ/ハッシュベース検出で、既知ウイルスの静的照合に該当します。ビヘイビア法ではありません。 - エ: 「検査対象をメモリ上の仮想環境下で実行して、その挙動を監視する。」
→ 実行時の振る舞いを監視する動的解析=ビヘイビア法。よって正解です。
補足コラム
- ビヘイビア法の利点:難読化やポリモフィズム(自己変形)を用いるマルウェアでも、実行時の不正な振る舞い(例:自己複製、リモート接続、権限昇格試行)で検出できる可能性が高い点。
- 欠点と対策:アンチサンドボックス回避(環境チェックやユーザ操作待ち)に対しては、サンドボックスのステルス化や長時間観察、ユーザ操作エミュレーションを組み合わせる必要があります。
- 運用面:エンドポイントのオンデバイス解析(軽量の振る舞い検出)とクラウドサンドボックスの併用が実務では一般的です。
参考として、ハッシュ比較(ウ)をプログラムで示す簡単な例:
import hashlib
def sha256_of_file(path):
h = hashlib.sha256()
with open(path, "rb") as f:
for chunk in iter(lambda: f.read(8192), b""):
h.update(chunk)
return h.hexdigest()
# 既知マルウェアのハッシュと比較
known_hash = "deadbeef..." # 既知のマルウェアハッシュ(例)
print(sha256_of_file("sample.exe") == known_hash)
FAQ
Q1: ビヘイビア法はすべての未知マルウェアを確実に検出できますか?
A1: いいえ。多くの未知変種を検出しやすい一方で、アンチサンドボックス手法や遅延実行などで回避される可能性があります。
A1: いいえ。多くの未知変種を検出しやすい一方で、アンチサンドボックス手法や遅延実行などで回避される可能性があります。
Q2: シグネチャ検出(ハッシュ)は不要ですか?
A2: 必要です。シグネチャは高速かつ誤検出が少ないため日常的検出に有効で、ビヘイビア法と併用するのが実務の基本です。
A2: 必要です。シグネチャは高速かつ誤検出が少ないため日常的検出に有効で、ビヘイビア法と併用するのが実務の基本です。
Q3: サンドボックスとビヘイビア法は同じですか?
A3: サンドボックスはビヘイビア検出を行うための実行環境(一般的手段)の一つであり、ビヘイビア法はその分析手法を指します。
A3: サンドボックスはビヘイビア検出を行うための実行環境(一般的手段)の一つであり、ビヘイビア法はその分析手法を指します。
Q4: 試験で「振る舞い」「実行」「仮想環境」という語があれば常にビヘイビア法ですか?
A4: 高確率でビヘイビア法を示します。文脈で「実行時の動作を監視する」ことが書かれていれば選択してください。
A4: 高確率でビヘイビア法を示します。文脈で「実行時の動作を監視する」ことが書かれていれば選択してください。
関連キーワード: マルウェア検知、ビヘイビア検知、サンドボックス、動的解析、シグネチャ検出、ハッシュ値、ファイル整合性、振る舞い分析、エンドポイントセキュリティ

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

