オンサイトセミナー
豊田孝の「IT談話館」 Windowsメモリダンプ解析を依頼する WinDbgとシステム分析




 本「IT談話館」一般公開記事は、書籍 「インサイド Microsoft Windows」 程度の基礎知識をお持ちの方を想定しています。



Windows 7/8/10、偽装メカニズム、内部解析技術


 本「IT談話館」の「一般公開記事」は、「Active Memory Dump とカーネルメモリダンプ」の解析結果を基に起草されています。公開内容はあくまでも本館ビジネスに支障の出ない範囲に制限されていますが、Windowsビジネスを展開する上で必要となる、新規「商材」の発掘や同業他社との「差異」を確保し、人材と予算をはじめとする所有資源を適切に配置・投資する一助にはなるかもしれません。本「IT談話館」主筆の「豊田孝」はDKOM(Direct Kernel Object Manipulation)ベースの解析手法の第一人者であり、Windowsカーネル空間の解析分野では世界の先頭を走っています。

 現在、セキュリティー問題を無視することはできません。Microsoft社側の負担だけではなく、同社製品の利用者側の負担も増しています。困ったことではありますが、当面避けられません。セキュリティーの視点から「Windows10ソフトウェアセンサー」を見た場合、本「IT談話館」の確認範囲では、「カーネル層保護ロジック」に加え、次のような保護メカニズム階層が考案・実装されています。下記リンクはすべて本館記事を指しています。
  1. Silo/Server Silo
  2. Job
  3. Session
  4. Protected Process
  5. Mandatory Integrity Control(MIC)
  6. Windows API(+CPU)
  7. CPU
 本稿では、次の4種類の技術概念に焦点を当て、いくつかの仮説を立てながら、Windows 7以降のWindowsシステムに実装されている偽装メカニズムの基本的な解析を行っています。  米Microsoft社は、クライアント偽装に関する技術情報を「このページ」から一般公開し、偽装を次のように定義しています。
Impersonation is the ability of a thread to execute using different security information than the process 
that owns the thread. 
 この定義文は次のような解釈を可能とします。  この高次の偽装定義に加え、次のような4種類の実装上の偽装レベルが定義されています。カッコ内の数値は偽装レベルを示し、数値が大きくなるに従い、偽装内容が高度になります。  本「IT談話館」の別稿「Windows XP/7/8/10のセッションとプロセス」に含まれる実行結果からは、プロセス、スレッド、セッション、および、トークンの間に次のような関係が存在するという仮説を立てることができます。
  1. プロセスオブジェクトとスレッドオブジェクトは「重要、かつ、代表的」なカーネルオブジェクトである
  2. プロセスオブジェクトとスレッドオブジェクトはセッションオブジェクトと密接な関係を持っている
  3. セッションオブジェクトは「SMSS.EXE」(セッションマネージャー)プロセスが作成する
  4. トークンオブジェクトは「Winlogon.exe」プロセスが作成する
  5. 偽装とは、主に、ユーザープロセスとシステム/サービスプロセス間のセキュリティーを考慮した通信である
 これまでの情報と仮説からは、次のような新たな仮説と条件を実証する解析コードを独自に開発すればよいことになります。なお、解析コードの開発知識の習得には、「時間と予算の投資」が必要です。
 (Windows 10サーバー系エディションではなく)Windows 10 Pro環境で採取した「Active Memory Dump」をWinDbgにロードし、本「IT談話館」の独自解析コードを実行いたしますと、たとえば、次のような結果が返されてきます。
1: kd> vertarget
Windows 10 Kernel Version 15063 MP (2 procs) Free x64
Product: WinNt, suite: TerminalServer SingleUserTS
Built by: 15063.0.amd64fre.rs2_release.170317-1834
Machine Name:
Kernel base = 0xfffff803`52406000 PsLoadedModuleList = 0xfffff803`527525a0
Debug session time: Tue Jun 27 15:39:26.892 2017 (UTC + 9:00)
System Uptime: 12 days 7:17:40.907


[---]

0xFFFFDB8B69F67640	SessionId->0	ImpLevel->0	svchost.exe
	***Thread->0xFFFFDB8B67179700
	0xFFFF8007EEC53890	Token
		SessionId->9	ImpLevel->2	TokenType->2	SourceName->User32 
	0xFFFF8007D9C1A770	LogonSession
		AccountName->Toyota	AuthorityName->Toyota-PC

[---]
 この結果は次のようなことを示しています。  先ほど設定した仮説と条件を実装した解析コードは予想通りの結果を返しています。

 本「IT談話館」の解析技術は、C++とアセンブラーをベースとし、カーネル空間を直接解析しますから、解析コードが返してくる情報は最新Windowsカーネルの実体を語ってくれます。Windows 10はSaaS(Software As A Service)として提供され、システム内部は黙々と頻繁に更新されています。設定した仮説や条件と解析コードの実行結果の間に微妙な「違和感」を感知できることが多々あります。そのような場合、新たな事実を発見したことであり、いくつかの解析コードを視点を変えながら独自に実装・実行すれば、インターネットなどでは入手できない、「高度、かつ、最新」の未公開情報をその場で得ることができます。
	0xFFFF9C876F06F840	SessionId->0	ImpLevel->0	wsmprovhost.ex
	***Thread->0xFFFF9C876F3BD800
	0xFFFFE500578047D0	Token
		SessionId->0	ImpLevel->2	TokenType->2	SourceName->Kerberos
	0xFFFFE500579322A0	LogonSession
		AccountName->Tester	AuthorityName->SYS-INHOUSE
 以上、本稿では基本的な偽装メカニズムの解析例を紹介しましたが、実務解析作業では次のような視点からの解析も必要になります。


ビジネスメニュー




 本「IT談話館」一般公開記事は、書籍 「インサイド Microsoft Windows」 程度の基礎知識をお持ちの方々を想定しています。
Windowsメモリダンプ解析技術開発室 ビジネスメニュー

Copyright©豊田孝 2004- 2021
本日は2021-07-24です。