Windowsメモリ内部解析サービス
豊田孝の「IT談話館」 Windowsメモリダンプ解析を依頼する WinDbgとシステム分析




「Windowsメモリダンプ解析サービス」のご案内



Windowsセキュリティーメカニズム


 WindowsはSaaSとして提供される時代に入り、その内部は頻繁に更新されています。更新内容の多くは、いろいろな事情から、公にされることはほとんどありません。最新のユーザー空間とカーネル空間に関する信頼できる情報を取得するには、インターネットなどでは語られることのない高度な内部解析技術が必須とされています。

 セキュリティー視点からWindowsアーキテクチャーを見た場合、本「IT談話館」の確認範囲では、次のような保護メカニズム階層が考案・実装されています。下記リンクはすべて本館記事を指しています。
  1. Silo/Server Silo
  2. Job
  3. Session
  4. Protected Process
  5. Mandatory Integrity Control(MIC)
  6. Windows API(+CPU)
  7. CPU
 本稿では、上のリスト内の「Protected Process」記事を補足する意味みもあり、より抽象度の高いWindows 10保護プロセス(Protected ProcessとProtected Process Light)に焦点を当てています。本館はWindows内部解析技術に関する「オンサイトセミナーサービス」を提供していますが、この抽象度の高いWindows 10保護プロセスメカニズムはそれほど複雑ではないため、セミナー会場での本館説明は、「Mandatory Integrity Control(MIC)」や「Windows API(+CPU)」などの解説と異なり、比較的好感を持って受け入れられています。小難しい解説を好む人の数は限られている、ということですね。

 Windows 10環境で採取した「Active Memory Dump」を本「IT談話館」独自の解析コードで解析すると、次のようなWindows 10保護プロセスに関する内部情報を取得することができます。

独自解析コードの出力情報


 この表は、ダンプ採取時点で動作中のプロセスの性質を示しています。性質には保護プロセス特性に加え、次のような情報が含まれています。  保護プロセスメカニズムは分かりやすいものですが、この表内の結果には、より抽象度の高いレベルで基本的な不可解さが残されています。表内の「System」欄を見ると、すべてのプロセスは「0」という値を持ち、システムプロセスが存在しない、と報告されています。カーネル構造体には次のようなビットが用意されています。
0: kd> dt nt!_eprocess system*
   +0x6fc SystemProcess : Pos 12, 1 Bit
 今回の調査では、このビットが立っていません。しかし、次のビットは立っています。
0: kd> dt nt!_eprocess subsystem*
   +0x6fc SubsystemProcess : Pos 6, 1 Bit
 「SystemProcess」は存在しないが、「SubsystemProcess」は存在する。この論理はどう考えても成立しません。ちなみに、Windows 10の前身であるWindows 8.1では「SubsystemProcess」ビット自体が用意されていません。このあたりの不可解さが今後どのように解消されるのかを注視したいと思います。

 なお、表内の「CrossSession」欄は、オブジェクト名前空間内にEventオブジェクト、Keyオブジェクト、あるいはFileオブジェクトなどを作成し、セッション分離を超える機能を実装しているプロセスを示しています。オブジェクト名前空間へのアクセスは通常はシステム内部のハンドルテーブルを経由することになりますが、この面での改善試みは複数のWindowsバージョンを跨ぎながら、長期的かつ継続的に行われています。ハンドルテーブルとKeyオブジェクトについては、本館の次のような記事がそれぞれ参考になるでしょう。


「Windowsメモリダンプ解析サービス」のご案内




Windowsシステム分析
Windows内部解析技術資料

Copyright©豊田孝 2004- 2020
本日は2020-02-17です。