泥棒は「正装」をしてやってくる?メモリフォレンジックで不正ドライバを暴き出そう
皆さん、こんにちは。現場の最前線でインシデントの火消しをしていると、よく「完璧なセキュリティ対策をしていたはずなのに、なぜか侵入された」という悲鳴を聞きます。
実は、高度な攻撃者は「家の鍵」を壊すのではなく、「自分は修理業者です」と偽って、正規の鍵を使って堂々と玄関から入ってくるような真似をします。この「修理業者」にあたるのが、今回解説する「カーネルドライバ」の悪用です。
今日は、メモリの中に潜む「怪しい偽装工作員」をどうやって見つけ出すか、その泥臭い現場のテクニックを噛み砕いてお話しします。
—
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やサーバーで「何が動いているのが正常か」を知っておくこと。これが最強の防犯になります。
セキュリティは、一度設定して終わりではありません。家の鍵をかけるのと同じように、毎日「誰か変な人が入ってきていないか」と気に留める習慣が、皆さんを、そして皆さんの組織を守るのです。
まずは今日の仕事終わりに、タスクマネージャーやコマンドラインで「見慣れない名前のドライバ」が動いていないか、眺めてみることから始めてみませんか? 一歩ずつ、一緒に強くなっていきましょう!
コメント