オンサイトセミナー
豊田孝の「IT談話館」 Windowsメモリフォレンジックを依頼する WinDbg




本「IT談話館」はDKOMベースの高度なメモリフォレンジックサービスを提供しています!



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


 本稿では、次の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談話館」は、Windowsカーネルメモリダンプをはじめとする解析作業では、次のようなDKOM(Direct Kernel Object Manipulation)ベースの解析工程を採用しています。
  1. Windowsカーネルアーキテクチャー」知識を基に問題仮説を設定する。
  2. 上記問題仮説をC/C++とMASMの仕様を継承する「WinDbg内部解析専用言語」で独自解析コードとして実装する。
  3. 上記解析コードを実行し、設定した問題仮説の真偽を実証する。
  4. (必要に応じて)上記の工程を繰り返し、直面する問題を解決する。
 本「IT談話館」の解析工程は、C++とアセンブラーをベースとし、カーネル空間を直接解析しますから、解析コードが返してくる情報は最新Windowsカーネルの実体を語ってくれます。Windows 10はSaaS(Software As A Service)として提供され、システム内部は黙々と日々更新されている、という認識が必要です。設定した仮説や条件と解析コードの実行結果の間に微妙な「違和感」を感知できることが多々あります。そのような場合、新たな事実を発見したことであり、いくつかの解析コードを視点を変えながら独自に実装・実行すれば、インターネットなどでは入手できない、「高度、かつ、最新」の未公開情報をその場で得ることができます。

 以上、本稿では基本的な偽装メカニズムの解析例を紹介いたしましたが、実務解析作業では次のような視点からの解析も必要になります。


本「IT談話館」はDKOMベースの高度なメモリフォレンジックサービスを提供しています!



 実務的な解析コードの開発技術の導入をご予定の場合には、所属チーム内でご協議の上、本「IT談話館」の「オンサイトセミナー」の受講をご検討いただけますと幸いでございます。


サービスメニュー
Windowsクラッシュダンプ解析サービス 技術資料 WinDbg

Copyright©豊田孝 2004- 2017
本日は2017-10-21です。