メモリフォレンジックの基礎: VADでマルウェアを暴く
- 仮想アドレス記述子(VAD)とは
皆さんは、コンピュータの中でプログラムがどのようにメモリ空間を利用しているか、考えたことはありますか?
コンピュータ上でプログラムが実行されるとき、プログラムはメモリ上に読み込まれます。
このとき、プログラムは物理メモリ上の実際のアドレスではなく、仮想的なアドレス空間を使用します。
この仮想的なアドレス空間と、実際の物理メモリとを対応付ける役割を担うのが、仮想アドレス記述子(VAD)です。
VADは、Windowsがメモリを管理するために使用する重要なデータ構造の一つで、例えるならば、各プロセスに割り当てられた仮想メモリ空間の地図のような役割を果たしています。
VADは、仮想メモリアドレス空間のどの範囲がどのプロセスに割り当てられているのか、その目的(プログラムの命令を格納するのか、データを格納するのかなど)、読み書きの許可、実行の許可など、詳細な情報を記録しています。
このVADを調べることで、あるプログラムがどのメモリ領域にアクセスできるのか、どのような操作が可能なのかを知ることができ、不正なプログラムがメモリをどのように操作しているかを解析する手がかりとなります。