unit os6: device management 6.4. lab manual. 2 copyright notice © 2000-2005 david a. solomon and...

25
Unit OS6: Device Unit OS6: Device Management Management 6.4. 6.4. Lab Manual Lab Manual

Upload: percival-hudson

Post on 05-Jan-2016

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Unit OS6: Device Management 6.4. Lab Manual. 2 Copyright Notice © 2000-2005 David A. Solomon and Mark Russinovich These materials are part of the Windows

Unit OS6: Device ManagementUnit OS6: Device Management

6.4.6.4. Lab ManualLab Manual

Page 2: Unit OS6: Device Management 6.4. Lab Manual. 2 Copyright Notice © 2000-2005 David A. Solomon and Mark Russinovich These materials are part of the Windows

2

Copyright NoticeCopyright Notice© 2000-2005 David A. Solomon and Mark Russinovich© 2000-2005 David A. Solomon and Mark Russinovich

These materials are part of the These materials are part of the Windows Operating Windows Operating System Internals Curriculum Development Kit,System Internals Curriculum Development Kit, developed by David A. Solomon and Mark E. developed by David A. Solomon and Mark E. Russinovich with Andreas PolzeRussinovich with Andreas Polze

Microsoft has licensed these materials from David Microsoft has licensed these materials from David Solomon Expert Seminars, Inc. for distribution to Solomon Expert Seminars, Inc. for distribution to academic organizations solely for use in academic academic organizations solely for use in academic environments (and not for commercial use)environments (and not for commercial use)

Page 3: Unit OS6: Device Management 6.4. Lab Manual. 2 Copyright Notice © 2000-2005 David A. Solomon and Mark Russinovich These materials are part of the Windows

3

Roadmap for Section 6.4.Roadmap for Section 6.4.

Lab experiments investigating:Lab experiments investigating:

Viewing Security ProcessesViewing Security Processes

Looking at the SAMLooking at the SAM

Viewing Access TokensViewing Access Tokens

Looking at Security Identifiers (SIDs)Looking at Security Identifiers (SIDs)

Viewing a Security Descriptor structureViewing a Security Descriptor structure

Investigating ordering of Access Control Entries (ACEs)Investigating ordering of Access Control Entries (ACEs)

Investigating PrivilegesInvestigating Privileges

Page 4: Unit OS6: Device Management 6.4. Lab Manual. 2 Copyright Notice © 2000-2005 David A. Solomon and Mark Russinovich These materials are part of the Windows

4

Lab: Viewing the Installed Driver Lab: Viewing the Installed Driver ListList

View the list of System Drivers in the Software View the list of System Drivers in the Software Environment section of the Windows Information Environment section of the Windows Information utility (Msinfo32.exe)utility (Msinfo32.exe)

Note: the distinction between File System Drivers Note: the distinction between File System Drivers and Kernel Drivers is from the Type value in the and Kernel Drivers is from the Type value in the driver’s Registry key. This distinction is driver’s Registry key. This distinction is meaningless.meaningless.

Page 5: Unit OS6: Device Management 6.4. Lab Manual. 2 Copyright Notice © 2000-2005 David A. Solomon and Mark Russinovich These materials are part of the Windows

5

Lab: Viewing Installed DriversLab: Viewing Installed Drivers

Open a command prompt Open a command prompt and type “set and type “set devmgr_show_nonpresentdevmgr_show_nonpresent_devices=1”_devices=1”

Then enter Then enter “devmgmt.msc”“devmgmt.msc”

Select “show hidden Select “show hidden devices” in the view menudevices” in the view menu

Page 6: Unit OS6: Device Management 6.4. Lab Manual. 2 Copyright Notice © 2000-2005 David A. Solomon and Mark Russinovich These materials are part of the Windows

6

Lab: Viewing Loaded DriversLab: Viewing Loaded Drivers

List the loaded drivers with Drivers.exe from the List the loaded drivers with Drivers.exe from the Resource KitResource Kit

List the loaded drivers “lm kv” in the kernel List the loaded drivers “lm kv” in the kernel debuggerdebugger

Page 7: Unit OS6: Device Management 6.4. Lab Manual. 2 Copyright Notice © 2000-2005 David A. Solomon and Mark Russinovich These materials are part of the Windows

7

Lab: Driver VerifierLab: Driver Verifier

Enable verification for all drivers with all optionsEnable verification for all drivers with all options

RebootReboot

Does the system still boot? Does the system still boot?

If not, use Last Known Good to rebootIf not, use Last Known Good to reboot

After 7 minutes low resource simulation will After 7 minutes low resource simulation will beginbegin

Reboot again and within 7 minutes turn off Reboot again and within 7 minutes turn off verification and reboot again!verification and reboot again!

Page 8: Unit OS6: Device Management 6.4. Lab Manual. 2 Copyright Notice © 2000-2005 David A. Solomon and Mark Russinovich These materials are part of the Windows

8

Lab: Viewing \Device DirectoryLab: Viewing \Device Directory

Use Winobj to view driver objects in the \Device directoryUse Winobj to view driver objects in the \Device directory

Page 9: Unit OS6: Device Management 6.4. Lab Manual. 2 Copyright Notice © 2000-2005 David A. Solomon and Mark Russinovich These materials are part of the Windows

9

Lab: Device Name MappingsLab: Device Name Mappings

Use Winobj to view symbolic links that define the Windows device Use Winobj to view symbolic links that define the Windows device namespacenamespace

Page 10: Unit OS6: Device Management 6.4. Lab Manual. 2 Copyright Notice © 2000-2005 David A. Solomon and Mark Russinovich These materials are part of the Windows

10

Lab: Viewing Defined Driver ObjectsLab: Viewing Defined Driver Objects

Use Winobj to view driver objects in the \Drivers and \FileSystem Use Winobj to view driver objects in the \Drivers and \FileSystem directoriesdirectories

Drivers in the FileSystem directory are those that were marked as file Drivers in the FileSystem directory are those that were marked as file system drivers in their Registry key’s Type valuesystem drivers in their Registry key’s Type value

Page 11: Unit OS6: Device Management 6.4. Lab Manual. 2 Copyright Notice © 2000-2005 David A. Solomon and Mark Russinovich These materials are part of the Windows

11

Lab: Viewing the TCP/IP Driver Lab: Viewing the TCP/IP Driver Object and its Device ObjectsObject and its Device Objects

In the kernel debugger type “!drvobj tcpip 7”In the kernel debugger type “!drvobj tcpip 7”

Note the DriverEntry function, which the I/O Note the DriverEntry function, which the I/O Manager calls to start the driverManager calls to start the driver

Note the I/O command dispatch function table Note the I/O command dispatch function table

Find the device objects for TCP, UDP and IPFind the device objects for TCP, UDP and IP

Type “!devobj <address>” with the address of each Type “!devobj <address>” with the address of each of the listed device objectsof the listed device objects

Find the TCPIP driver object in WinobjFind the TCPIP driver object in Winobj

Find the TCP device object in WinobjFind the TCP device object in Winobj

Page 12: Unit OS6: Device Management 6.4. Lab Manual. 2 Copyright Notice © 2000-2005 David A. Solomon and Mark Russinovich These materials are part of the Windows

12

Lab: Viewing Device HandlesLab: Viewing Device Handles

Any process that has an open handle to a device will have a Any process that has an open handle to a device will have a corresponding file object in its handle table corresponding file object in its handle table

Can be display with Process ExplorerCan be display with Process Explorer

Page 13: Unit OS6: Device Management 6.4. Lab Manual. 2 Copyright Notice © 2000-2005 David A. Solomon and Mark Russinovich These materials are part of the Windows

13

Lab: Looking at a file objectLab: Looking at a file object

Open the handle view in Process Explorer and Open the handle view in Process Explorer and look at handles of type “file”look at handles of type “file”

Identify ones that represent real devicesIdentify ones that represent real devices

Type “dt _FILE_OBJECT” in the kernel Type “dt _FILE_OBJECT” in the kernel debuggerdebugger

You can look at an actual file object with !fileobjYou can look at an actual file object with !fileobj

Page 14: Unit OS6: Device Management 6.4. Lab Manual. 2 Copyright Notice © 2000-2005 David A. Solomon and Mark Russinovich These materials are part of the Windows

14

Lab: Looking at Driver’s Dispatch Lab: Looking at Driver’s Dispatch RoutinesRoutines

Most drivers specify dispatch routines to handle Most drivers specify dispatch routines to handle only a subset of possible major function codesonly a subset of possible major function codes

create (open), read, write, device I/O control, power, create (open), read, write, device I/O control, power, Plug and Play, System (for WMI commands), and Plug and Play, System (for WMI commands), and closeclose

File system drivers are an example of a driver type File system drivers are an example of a driver type that often fills in most or all of its dispatch entry that often fills in most or all of its dispatch entry points with functionspoints with functions

The I/O manager sets any dispatch entry points The I/O manager sets any dispatch entry points that a driver doesn’t fill to point to its own that a driver doesn’t fill to point to its own IopInvalidDeviceRequestIopInvalidDeviceRequest

Page 15: Unit OS6: Device Management 6.4. Lab Manual. 2 Copyright Notice © 2000-2005 David A. Solomon and Mark Russinovich These materials are part of the Windows

15

Lab: Examine Interrupt IntervalsLab: Examine Interrupt Intervals

Peripheral Device Controller

CPU Interrupt Controller

CPU Interrupt Service Table

0

2

3

n

ISR Address

Spin Lock

Dispatch Code

Interrupt Object

Read from device

Acknowledge-Interrupt

Request DPC

Driver ISR

Raise IRQL

Lower IRQL

KiInterruptDispatch

Grab Spinlock

Drop Spinlock

Page 16: Unit OS6: Device Management 6.4. Lab Manual. 2 Copyright Notice © 2000-2005 David A. Solomon and Mark Russinovich These materials are part of the Windows

16

Lab: Find an IRPLab: Find an IRP

Type “!irpfind” in the kernel debuggerType “!irpfind” in the kernel debugger

Locate an IRP aimed at the TCP/IP driverLocate an IRP aimed at the TCP/IP driver

Type “!irp <address>” on the IRPType “!irp <address>” on the IRP

Look at the command type the active stack location (the one with the Look at the command type the active stack location (the one with the “>” symbol) “>” symbol)

Correlate that against the TCP/IP driver’s dispatch table: “!drvobj \Correlate that against the TCP/IP driver’s dispatch table: “!drvobj \driver\tcpip 7”driver\tcpip 7”

Type “!devobj <address>” to view the device object Type “!devobj <address>” to view the device object

Type “!fileobj <address>” to view the file objectType “!fileobj <address>” to view the file object

>[ c, 2] 1 1 86fb2488 861a4a40 00000000-00000000 pending

\Driver\Tcpip

Page 17: Unit OS6: Device Management 6.4. Lab Manual. 2 Copyright Notice © 2000-2005 David A. Solomon and Mark Russinovich These materials are part of the Windows

17

Lab: Find an IRPLab: Find an IRP

Look at the issuing thread and process:Look at the issuing thread and process:

Open Process Explorer and go to the threads Open Process Explorer and go to the threads tab of the owning process tab of the owning process

Look at the stack of the thread to determine what its Look at the stack of the thread to determine what its purpose ispurpose is

Irp is active with 3 stacks 1 is current Mdl = 809d45c8 Associated Irp = 80988e68 Thread 80987da0: Irp stack trace.

Page 18: Unit OS6: Device Management 6.4. Lab Manual. 2 Copyright Notice © 2000-2005 David A. Solomon and Mark Russinovich These materials are part of the Windows

18

Lab: Looking at a Device StackLab: Looking at a Device Stack

Use the !devstack command to look at a driver stackUse the !devstack command to look at a driver stack

0: kd> !devstack keyboardclass0

!DevObj !DrvObj !DevExt ObjectName

86e40530 \Driver\Ctrl2cap 86e405e8

> 86e42160 \Driver\Kbdclass 86e42218 KeyboardClass0

86e3f020 \Driver\i8042prt 86e3f0d8

86fc9650 \Driver\ACPI 86fccea0 0000006b

!DevNode 86fc85e8 :

DeviceInst is "ACPI\PNP0303\4&11876118&0"

ServiceName is "i8042prt"

Page 19: Unit OS6: Device Management 6.4. Lab Manual. 2 Copyright Notice © 2000-2005 David A. Solomon and Mark Russinovich These materials are part of the Windows

19

Lab: See the volsnap.sys driverLab: See the volsnap.sys driver

Using Winobj see what device corresponds to \Using Winobj see what device corresponds to \Global??\C: Global??\C:

In the kernel debugger look at that device object In the kernel debugger look at that device object e.g. “!devstack \device\harddiskvolume1”e.g. “!devstack \device\harddiskvolume1”

Note the volsnap.sys device object attached above Note the volsnap.sys device object attached above the volume devicethe volume device

Page 20: Unit OS6: Device Management 6.4. Lab Manual. 2 Copyright Notice © 2000-2005 David A. Solomon and Mark Russinovich These materials are part of the Windows

20

Lab: Viewing the Device TreeLab: Viewing the Device Tree

Use View->Devices by Connection in the Use View->Devices by Connection in the Hardware Manager to see a system’s device Hardware Manager to see a system’s device treetree

In the kernel debugger use “!devnode 0 7” to In the kernel debugger use “!devnode 0 7” to see the internal representation of the device treesee the internal representation of the device tree

Page 21: Unit OS6: Device Management 6.4. Lab Manual. 2 Copyright Notice © 2000-2005 David A. Solomon and Mark Russinovich These materials are part of the Windows

21

Lab: Viewing Devnode InformationLab: Viewing Devnode Information

Windows XP and Server 2003 Device Manager can display details tabWindows XP and Server 2003 Device Manager can display details tab

Shows devnode’s device instance ID, hardware ID, service names, Shows devnode’s device instance ID, hardware ID, service names, filters, and power capabilitiesfilters, and power capabilities

Run: Run: set devmgr_show_details=1 set devmgr_show_details=1 devmgmt.mscdevmgmt.msc

Page 22: Unit OS6: Device Management 6.4. Lab Manual. 2 Copyright Notice © 2000-2005 David A. Solomon and Mark Russinovich These materials are part of the Windows

22

Lab: View the system power policyLab: View the system power policy

Use !popolicy to see the active power policyUse !popolicy to see the active power policylkd> !popolicy

SYSTEM_POWER_POLICY (R.1) @ 0x80544020

PowerButton: None Flags: 00000003 Event: 00000010 Query UI

SleepButton: Sleep Flags: 00000003 Event: 00000000 Query UI

LidClose: Sleep Flags: 00000001 Event: 00000000 Query

Idle: Sleep Flags: 00000001 Event: 00000000 Query

OverThrottled: Sleep Flags: c0000004 Event: 00000000 Override NoWakes Critical

IdleTimeout: 0 IdleSensitivity: 50%

MinSleep: S1 MaxSleep: S1

LidOpenWake: S0 FastSleep: S1

WinLogonFlags: 1 S4Timeout: 0

VideoTimeout: 1200 VideoDim: 56

SpinTimeout: 0 OptForPower: 0

FanTolerance: 100% ForcedThrottle: 100%

MinThrottle: 20% DyanmicThrottle: None (0)

Page 23: Unit OS6: Device Management 6.4. Lab Manual. 2 Copyright Notice © 2000-2005 David A. Solomon and Mark Russinovich These materials are part of the Windows

23

Lab: Looking at a Device’s Power Lab: Looking at a Device’s Power MappingMapping

Open a command prompt Open a command prompt and type “set and type “set devmgr_show_details=1”devmgr_show_details=1”

Then enter Then enter “devmgmt.msc”“devmgmt.msc”

Go to the “Details” page Go to the “Details” page on a device’s properties on a device’s properties page and look at “Power page and look at “Power State Mapping” State Mapping”

Page 24: Unit OS6: Device Management 6.4. Lab Manual. 2 Copyright Notice © 2000-2005 David A. Solomon and Mark Russinovich These materials are part of the Windows

24

Lab: Using Filemon to Trace File I/OLab: Using Filemon to Trace File I/O

1.1. Run FilemonRun Filemon

2.2. Set filter to only include Notepad.exeSet filter to only include Notepad.exe

3.3. Run NotepadRun Notepad

4.4. Type some textType some text

5.5. Save file as “test.txt”Save file as “test.txt”

6.6. Go back to FilemonGo back to Filemon

7.7. Stop loggingStop logging

8.8. Set highlight to “test.txt”Set highlight to “test.txt”

9.9. Find line representing creation of new fileFind line representing creation of new file Hint: look for create operationHint: look for create operation

Page 25: Unit OS6: Device Management 6.4. Lab Manual. 2 Copyright Notice © 2000-2005 David A. Solomon and Mark Russinovich These materials are part of the Windows

25

Lab: Seeing An Error’s Root Cause Lab: Seeing An Error’s Root Cause with Filemonwith Filemon

Many applications don’t report access denied Many applications don’t report access denied errors wellerrors well

1.1. In Explorer, create a folder c:\noaccessIn Explorer, create a folder c:\noaccess

2.2. Remove all rights to the folderRemove all rights to the folder

3.3. Run Notepad & type some textRun Notepad & type some text

4.4. Run Filemon – set filter to Notepad.exeRun Filemon – set filter to Notepad.exe

5.5. In Notepad, File->Save As to c:\noaccess\In Notepad, File->Save As to c:\noaccess\test.txttest.txt

6.6. Look at Filemon trace and find Access DeniedLook at Filemon trace and find Access Denied