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





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



WinDbg、Etw Logger、WMI、セキュリティー


 本稿では、Etw LoggerとWMIの初歩的な関係をご紹介します。Etw LoggerのEtwは、Event Trace for Windowsの略語であり、ログ機能実体は次のようにシステムスレッドとして実装されています。
System->0xFFFFDB8B666A2040	ActiveThreads->157
001	Thread->0xFFFFDB8B66949040	nt!EtwpLogger (fffff803`5284ec60)
002	Thread->0xFFFFDB8B66948040	nt!EtwpLogger (fffff803`5284ec60)
003	Thread->0xFFFFDB8B66947040	nt!EtwpLogger (fffff803`5284ec60)
004	Thread->0xFFFFDB8B66946040	nt!EtwpLogger (fffff803`5284ec60)
005	Thread->0xFFFFDB8B6692B200	nt!EtwpLogger (fffff803`5284ec60)
006	Thread->0xFFFFDB8B6692A700	nt!EtwpLogger (fffff803`5284ec60)
007	Thread->0xFFFFDB8B66992200	nt!EtwpLogger (fffff803`5284ec60)
008	Thread->0xFFFFDB8B669B2700	nt!EtwpLogger (fffff803`5284ec60)
009	Thread->0xFFFFDB8B669A0700	nt!EtwpLogger (fffff803`5284ec60)
010	Thread->0xFFFFDB8B6699F700	nt!EtwpLogger (fffff803`5284ec60)
011	Thread->0xFFFFDB8B6699E700	nt!EtwpLogger (fffff803`5284ec60)
012	Thread->0xFFFFDB8B6699C700	nt!EtwpLogger (fffff803`5284ec60)
013	Thread->0xFFFFDB8B66997700	nt!EtwpLogger (fffff803`5284ec60)
014	Thread->0xFFFFDB8B669FC040	nt!EtwpLogger (fffff803`5284ec60)
015	Thread->0xFFFFDB8B669FB700	nt!EtwpLogger (fffff803`5284ec60)
016	Thread->0xFFFFDB8B669FA700	nt!EtwpLogger (fffff803`5284ec60)
017	Thread->0xFFFFDB8B688F52C0	nt!EtwpLogger (fffff803`5284ec60)
018	Thread->0xFFFFDB8B6939A700	nt!EtwpLogger (fffff803`5284ec60)
019	Thread->0xFFFFDB8B682F64C0	nt!EtwpLogger (fffff803`5284ec60)
020	Thread->0xFFFFDB8B688F83C0	nt!EtwpLogger (fffff803`5284ec60)
021	Thread->0xFFFFDB8B6957F080	nt!EtwpLogger (fffff803`5284ec60)
022	Thread->0xFFFFDB8B69589080	nt!EtwpLogger (fffff803`5284ec60)
023	Thread->0xFFFFDB8B69595080	nt!EtwpLogger (fffff803`5284ec60)
024	Thread->0xFFFFDB8B69554080	nt!EtwpLogger (fffff803`5284ec60)
025	Thread->0xFFFFDB8B695A8400	nt!EtwpLogger (fffff803`5284ec60)
026	Thread->0xFFFFDB8B6A096080	nt!EtwpLogger (fffff803`5284ec60)
027	Thread->0xFFFFDB8B6A279080	nt!EtwpLogger (fffff803`5284ec60)
028	Thread->0xFFFFDB8B6A326080	nt!EtwpLogger (fffff803`5284ec60)
029	Thread->0xFFFFDB8B6A3AC080	nt!EtwpLogger (fffff803`5284ec60)
030	Thread->0xFFFFDB8B6A3FF080	nt!EtwpLogger (fffff803`5284ec60)
031	Thread->0xFFFFDB8B6A6B7700	nt!EtwpLogger (fffff803`5284ec60)
032	Thread->0xFFFFDB8B6A02B080	nt!EtwpLogger (fffff803`5284ec60)
033	Thread->0xFFFFDB8B6B055680	nt!EtwpLogger (fffff803`5284ec60)
034	Thread->0xFFFFDB8B692D9080	nt!EtwpLogger (fffff803`5284ec60)
 この情報は、34個のEtw Loggerスレッドが起動されていることを示しています。WMIは、ご承知のように、Windows Management Instrumentationの略語であり、基本的には、システム管理者向けのツール基盤です。Etw LoggerとWMIは、次の実行結果が示すように、Windows XP時代にはそれほど密接な関係にあったわけではありません。
kd> vertarget
Windows XP Kernel Version 2600 (Service Pack 2) UP Free x86 compatible
Product: WinNt, suite: TerminalServer SingleUserTS
Built by: 2600.xpsp_sp2_gdr.070227-2254
Machine Name:
Kernel base = 0x804d9000 PsLoadedModuleList = 0x8055c620
Debug session time: Wed Jun  4 19:50:12.855 2008 (UTC + 9:00)
System Uptime: 0 days 0:09:06.425

kd> !wmitrace.strdump
This command requires a minimum of Vista on the target.
 この実行結果は、Etw LoggerとWMIの関係がWindows Vistaから本格的にカーネル内部で統合されたことを示唆しています。WinDbgはWindowsシステムそのものをデバッグするツールとして設計されている性格上、カーネルレベルの最新機能はいち早くWinDbgに統合されるのが基本ですが、少なくとも、Windows XP時代にはWinDbgとの統合はまだ進んでいない印象です。

 先ほど紹介した34個のEtwLoggerシステムスレッドは、次のようなログ機能を担っています。
001	Thread->0xFFFFDB8B66992200	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->Eventlog-Security
002	Thread->0xFFFFDB8B692D9080	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->ScreenOnPowerStudyTraceSession
003	Thread->0xFFFFDB8B66949040	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->DefenderApiLogger
004	Thread->0xFFFFDB8B66948040	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->DefenderAuditLogger
005	Thread->0xFFFFDB8B66947040	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->DiagLog
006	Thread->0xFFFFDB8B66946040	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->EventLog-Application
007	Thread->0xFFFFDB8B6692B200	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->EventLog-ForwardedEvents
008	Thread->0xFFFFDB8B6692A700	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->EventLog-Microsoft-Windows-Sysmon-Operational
009	Thread->0xFFFFDB8B669B2700	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->EventLog-System
010	Thread->0xFFFFDB8B669A0700	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->FaceRecoTel
011	Thread->0xFFFFDB8B6699F700	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->FaceUnlock
012	Thread->0xFFFFDB8B6699E700	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->LwtNetLog
013	Thread->0xFFFFDB8B6699C700	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->Microsoft Security Client
014	Thread->0xFFFFDB8B66997700	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->Microsoft Security Client OOBE
015	Thread->0xFFFFDB8B6A02B080	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->MpWppTracing-06152017-082417-00000003-ffffffff
016	Thread->0xFFFFDB8B669FC040	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->UBPM
017	Thread->0xFFFFDB8B669FB700	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->WdiContextLog
018	Thread->0xFFFFDB8B669FA700	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->WiFiSession
019	Thread->0xFFFFDB8B688F52C0	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->umstartup
020	Thread->0xFFFFDB8B6939A700	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->UserNotPresentTraceSession
021	Thread->0xFFFFDB8B682F64C0	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->Terminal-Services-LSM
022	Thread->0xFFFFDB8B688F83C0	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->Terminal-Services-RCM
023	Thread->0xFFFFDB8B6957F080	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->Terminal-Services-RPC-Client
024	Thread->0xFFFFDB8B69589080	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->Terminal-Services-Unified-APIs
025	Thread->0xFFFFDB8B69595080	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->Terminal-Services-SessionEnv
026	Thread->0xFFFFDB8B69554080	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->Terminal-Services-SessionMsg
027	Thread->0xFFFFDB8B695A8400	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->Terminal-Services-IP-Virtualization
028	Thread->0xFFFFDB8B6A096080	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->UserMgr
029	Thread->0xFFFFDB8B6A279080	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->SHS-06152017-082229-3-1
030	Thread->0xFFFFDB8B6A326080	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->MSMQ
031	Thread->0xFFFFDB8B6A3AC080	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->WFP-IPsec Diagnostics
032	Thread->0xFFFFDB8B6A3FF080	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->SYSMON TRACE
033	Thread->0xFFFFDB8B6B055680	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->8696EAC4-1288-4288-A4EE-49EE431B0AD9
034	Thread->0xFFFFDB8B6A6B7700	nt!EtwpLogger (fffff803`5284ec60)	LoggerName->Diagtrack-Listener
 LoggerNameの中には、たとえば、「Eventlog-Security」や「EventLog-System」などの日常的に馴染みのあるロガーが含まれています。また、米MicrosoftのAzureチームを率いるMark Russinovich氏作成の「Sysmon」もインストールされ、実行中であることも分かります。Loggerは収集した情報をファイルやメモリ内に保存しているはずですから、そのあたりの情報も収集してみます。
001	LoggerId->0x03	LogFile->
002	LoggerId->0x06	LogFile->C:\WINDOWS\system32\SleepStudy\ScreenOn\ScreenOnPowerStudyTraceSession-2017-06-27-15-07-21.etl
003	LoggerId->0x07	LogFile->
004	LoggerId->0x08	LogFile->
005	LoggerId->0x09	LogFile->
006	LoggerId->0x0a	LogFile->
007	LoggerId->0x0b	LogFile->
008	LoggerId->0x0c	LogFile->
009	LoggerId->0x0d	LogFile->
010	LoggerId->0x0e	LogFile->%SystemRoot%
011	LoggerId->0x0f	LogFile->%SystemRoot%
012	LoggerId->0x10	LogFile->C:\WINDOWS\System32\LogFiles\WMI\LwtNetLog.etl
013	LoggerId->0x11	LogFile->C:\ProgramData\Microsoft\Microsoft Security Client\Support\Application.etl
014	LoggerId->0x12	LogFile->C:\ProgramData\Microsoft\Microsoft Security Client\Support\EppOobe.etl
015	LoggerId->0x14	LogFile->C:\ProgramData\Microsoft\Windows Defender\Support\MpWppTracing-06152017-082417-00000003-ffffffff.bin
016	LoggerId->0x15	LogFile->
017	LoggerId->0x16	LogFile->C:\WINDOWS\System32\WDI\LogFiles\WdiContextLog.etl.002
018	LoggerId->0x17	LogFile->C:\WINDOWS\System32\LogFiles\WMI\Wifi.etl
019	LoggerId->0x18	LogFile->C:\WINDOWS\system32\umstartup.etl
020	LoggerId->0x19	LogFile->C:\WINDOWS\system32\SleepStudy\UserNotPresentSession.etl
021	LoggerId->0x1b	LogFile->C:\WINDOWS\system32\LogFiles\WMI\Terminal-Services-LSM-20170614-232225.etl
022	LoggerId->0x1c	LogFile->C:\WINDOWS\system32\LogFiles\WMI\Terminal-Services-RCM-20170614-232225.etl
023	LoggerId->0x1d	LogFile->C:\WINDOWS\system32\LogFiles\WMI\Terminal-Services-RPC-Client-20170614-232225.etl
024	LoggerId->0x1e	LogFile->C:\WINDOWS\system32\LogFiles\WMI\Terminal-Services-Unified-APIs-20170614-232225.etl
025	LoggerId->0x1f	LogFile->C:\WINDOWS\system32\LogFiles\WMI\Terminal-Services-SessionEnv-20170614-232225.etl
026	LoggerId->0x20	LogFile->C:\WINDOWS\system32\LogFiles\WMI\Terminal-Services-SessionMsg-20170614-232225.etl
027	LoggerId->0x21	LogFile->C:\WINDOWS\system32\LogFiles\WMI\Terminal-Services-IP-Virtualization-20170614-232225.etl
028	LoggerId->0x22	LogFile->C:\WINDOWS\system32\UserMgrLog.etl
029	LoggerId->0x23	LogFile->C:\ProgramData\Microsoft\Windows Security Health\Logs\SHS-06152017-082229-3-1-15063.0.amd64fre.rs2_release.170317-1834.bin
030	LoggerId->0x24	LogFile->C:\WINDOWS\ServiceProfiles\NetworkService\msmqlog.bin
031	LoggerId->0x25	LogFile->C:\ProgramData\Microsoft\Windows\wfp\wfpdiag.etl
032	LoggerId->0x27	LogFile->
033	LoggerId->0x28	LogFile->C:\WINDOWS\logs\dosvc\dosvc.20170616_221904_906.etl
034	LoggerId->0x29	LogFile->
 この情報には、各ロガーに割り当てられているLoggerIdが含まれています。LogFileが空白の場合には、ログ情報はメモリ内に保存されています。メモリには、たとえば、次のような情報が記録されています。
[0]093C.0FC8::  131430191588107810 [Microsoft-Windows-Sysmon/Process Create (rule: ProcessCreate) /Info ]Process Create:
UtcTime: 2017-06-27 06:39:18.807
ProcessGuid: {95979b25-fd96-5951-0000-0010bb0ecf09}
ProcessId: 1412
Image: E:\Mark_Russinovich\notmyfault64.exe
CommandLine: "E:\Mark_Russinovich\notmyfault64.exe" 
CurrentDirectory: E:\Mark_Russinovich\
User: Toyota-PC\Toyota
LogonGuid: {95979b25-6e84-5951-0000-0020d78b5409}
LogonId: 0x9548BD7
TerminalSessionId: 9
IntegrityLevel: High
Hashes: MD5=CEB2135168094FF656B49A500AA4ED7B,IMPHASH=C411249F371C999BE170FC603D4D5059
ParentProcessGuid: {95979b25-6e8b-5951-0000-0010372d5509}
ParentProcessId: 5152
ParentImage: C:\Windows\explorer.exe
ParentCommandLine: C:\WINDOWS\Explorer.EXE 
 本稿で解析対象としている「Active Memory Dump」は「notmyfault64.exe」で採取しています。この情報は、「notmyfault64.exe」プロセスが起動される詳しい背景を示しています。たとえば、「notmyfault64.exe」プロセスは「explorer.exe」プロセスから起動されています。ウィルス感染などのセキュリティー上の不安があるような場合には、次のようなコマンド操作を行い、起動日時を確認することができます。
1: kd> .formats 0n131430191588107810
Evaluate expression:
  Hex:     01d2ef10`1a5ee622
  Decimal: 131430191588107810
  Octal:   0007227361003227563042
  Binary:  00000001 11010010 11101111 00010000 00011010 01011110 11100110 00100010
  Chars:   .....^."
  Time:    Tue Jun 27 15:39:18.810 2017 (UTC + 9:00)
  Float:   low 4.60944e-023 high 7.74849e-038
  Double:  7.06811e-300



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



 ログ情報の実用的な解析技術や実務的な解析コードの開発技術の習得をご予定の場合には、所属チーム内でご協議の上、本「IT談話館」の「オンサイトセミナー」の受講をご検討いただけますと幸いでございます。Windowsカーネル内部は激変中ですが、いろいろな事情から、変更内容の詳細は公開されないのが現状です。


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

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