【入門編】 メモリ内のカーネルドライバの署名検証と不正ドライバの特定 – インシデントレスポンス & フォレンジック(DFIR)防御ガイド

泥棒は「正装」をしてやってくる?メモリフォレンジックで不正ドライバを暴き出そう

皆さん、こんにちは。現場の最前線でインシデントの火消しをしていると、よく「完璧なセキュリティ対策をしていたはずなのに、なぜか侵入された」という悲鳴を聞きます。

実は、高度な攻撃者は「家の鍵」を壊すのではなく、「自分は修理業者です」と偽って、正規の鍵を使って堂々と玄関から入ってくるような真似をします。この「修理業者」にあたるのが、今回解説する「カーネルドライバ」の悪用です。

今日は、メモリの中に潜む「怪しい偽装工作員」をどうやって見つけ出すか、その泥臭い現場のテクニックを噛み砕いてお話しします。

—

1. なぜ「カーネルドライバ」が狙われるのか?

皆さんが使っているWindowsやLinuxなどのOSには、特権レベルというものがあります。この中で最強の権限を持つのが「カーネル」です。

  • ユーザーモード(皆さん): 玄関のリビングまで。家の中のことはできるけど、家の構造そのものはいじれない。
  • カーネルモード(OSの心臓部): 家の設計図そのもの。壁を壊したり、電気配線を組み替えたりできる。

攻撃者は、このカーネル領域に「悪意あるドライバ」を忍び込ませようとします。これができれば、ウイルス対策ソフトの目すらも盗んで、PCのすべてを支配できるからです。

泥棒の偽装テクニック:デジタル署名

でも、最近のOSは厳しいんです。「身元のわからないドライバは動かさないよ!」という「デジタル署名」というルールがあります。これは、「この修理業者は、〇〇工務店が身分を保証しています」という公的な証明書のようなもの。

攻撃者はどうするか?
1. 盗んだ証明書を使う: 本当に信頼できる会社の証明書を盗んで、悪意あるドライバに貼り付ける。
2. 古い脆弱性のある署名済みドライバを悪用する: 昔のバージョンのドライバには「実はセキュリティホールがある」という穴が見つかっています。攻撃者はあえてその「昔の正規ドライバ」を持ち込み、そこから侵入を広げるのです(BYOVD攻撃といいます)。

—

2. メモリの中を覗き込む:Volatilityという「強力なルーペ」

ディスク(HDD/SSD)に保存されているファイルは、署名をチェックすればすぐにわかりますよね。でも、攻撃者は「メモリの中」だけで動くドライバを使ったり、署名情報をメモリ上で書き換えたりします。

ここで使うのが、メモリフォレンジックのデファクトスタンダード、Volatility 3 です。これを使うと、現在PCの脳内に何がロードされているのか、その素性を暴くことができます。

調査のステップ:署名のないドライバを探せ!

まずは、メモリダンプから現在ロードされているドライバの一覧をリストアップします。

# Volatility 3を使って、ロードされているドライバの一覧を抽出するコマンド例
python3 vol.py -f memory_dump.raw windows.driverscan

この結果を見て、以下のポイントをチェックします。

  • 署名(Signature)のステータス: 署名が「None」になっていないか?
  • パスの場所: 通常、ドライバは C:\Windows\System32\drivers にあるはずです。それ以外の怪しいフォルダ(C:\Users\Public など)から読み込まれていないか?
  • 名前の違和感: Intel_Graphics_Driver.sys のような名前でも、実は中身が違う場合もあります。

—

3. 実践:署名検証のチェックコード(考え方)

Volatility で抽出したドライバ情報から、「本当に署名が正しいか」を判定するロジックのイメージはこんな感じです。

# 簡易的な署名チェックの概念コード
def check_driver_integrity(driver_info):
    # 署名がない、または不明な場合は即座にフラグを立てる
    if driver_info.signature_status == "INVALID":
        print(f"[!] 警告: {driver_info.name} は署名が改ざんされています!")
        return False
    
    # 信頼されていない発行元からの署名ではないか?
    if driver_info.signer not in trusted_vendors:
        print(f"[!] 警告: {driver_info.name} は怪しい発行元です: {driver_info.signer}")
        return False
        
    return True

—

4. 最後に:インシデントハンドラーからの教訓

現場で一番怖いのは「ツールが『正常です』と言っているから大丈夫」と思い込むことです。

署名検証はあくまで「身分証を確認している」に過ぎません。前述の通り、「身分証は本物だが、中身が凶器」というケースは今の攻撃のトレンドです。

1. 怪しい挙動を疑う: ドライバの署名が正しくても、そのドライバが突然ネットワーク通信を開始したり、他のプロセスに干渉したりしていたら、それはもう「不正なドライバ」です。
2. 定期的な棚卸し: 自分のPCやサーバーで「何が動いているのが正常か」を知っておくこと。これが最強の防犯になります。

セキュリティは、一度設定して終わりではありません。家の鍵をかけるのと同じように、毎日「誰か変な人が入ってきていないか」と気に留める習慣が、皆さんを、そして皆さんの組織を守るのです。

まずは今日の仕事終わりに、タスクマネージャーやコマンドラインで「見慣れない名前のドライバ」が動いていないか、眺めてみることから始めてみませんか? 一歩ずつ、一緒に強くなっていきましょう!

コメント

タイトルとURLをコピーしました